最近有個小專案的需要,使用golang寫了個埠掃瞄工具,不得不說golang的效率確實比python快的太多了。在使用一段時間golang之後,感覺有三個方面是優於python的:
乙個方面是效能優越
第二方面是相容性好
第三方面是可以跨平台編譯成本地二進位制檔案,發布專案很方便。
接下來我把這個工具的源**,以及使用方式給大家給大家分享一下。
工具名稱:portscan
採用go語言開發,支援從config.txt檔案中讀取目的ip和埠,對指定的目的伺服器進行埠掃瞄
config.txt支援配置埠列表,預設為22、36000、56000、3306
在伺服器上連線目的伺服器端口,僅做一次tcp三次握手
portscan引數如下:
引數說明:
首先生成乙個config.txt檔案,內容如下:
ip共有255個,埠有10個,也就是說總共要進行2550次tcp連線。
接著使用go build portscan.go命令,生成乙個本地二進位制檔案portscan.exe,然後執行命令:
最後的結果儲存到result.txt檔案中,大致用時是30s。
//首先從命令列中讀取執行緒數和配置檔案路徑//從配置檔案中解析出ip和port
//配置檔案格式為
// [ip]
// 127.0.0.1
// [port]
// 22
// 36000
// 56000
// 3306
//根據開啟的執行緒數對指定ip和埠進行tcp連線
//如果埠開啟,把ip:port按照格式返回
func scanner(configfile string, functionid string, sendinfofile string,limit int)
ip_index := bytes.index(data,byte("[ip]"))
port_index := bytes.index(data,byte("[port]"))
if ip_index < 0
if port_index <0elseelse
for _,v := range(ports) }
reg_ip := regexp.mustcompile(`((25[0-5]|2[0-4]\d|((1\d)|([1-9]?\d)))\.)(25[0-5]|2[0-4]\d|((1\d)|([1-9]?\d)))`)
ips := reg_ip.findall(data,-1)
input := make(chan byte, len(ips))
result := make(chan string, len(ips))
defer close(input)
defer close(result)
for _, v := range(ips)
//控制多少併發
七夜的故事 閱讀(
...)
編輯收藏
golang高效能埠掃瞄
最近有個小專案的需要,使用golang寫了個埠掃瞄工具,不得不說golang的效率確實比python快的太多了。在使用一段時間golang之後,感覺有三個方面是優於python的 乙個方面是效能優越 第二方面是相容性好 第三方面是可以跨平台編譯成本地二進位制檔案,發布專案很方便。接下來我把這個工具的...
埠掃瞄原理
埠掃瞄原理分類 1 全tcp連線 這種掃瞄方法使用三次握手,與目標計算機建立標準的tcp連線。但是這種掃瞄方式很容易被目標主機記錄,不推薦使用。2 半開啟式掃瞄 syn掃瞄 在這種掃瞄技術中,掃瞄主機自動向目標計算機的指定埠傳送syn資料段,表示傳送建立連線請求。a,如果目標計算機的回應tcp報文中...
埠掃瞄詳解
tcpconnect掃瞄 tcp全連線掃瞄。使用系統提供的connect 函式來連線目標埠,如果目標埠正在監聽這個埠,那麼connect 函式將會被成功返回,否則,說明改埠不可訪問。通過完整的tcp三次握手 也即一次tcp連線 來判斷目標埠的狀態 tcpsyn掃瞄 半開啟掃瞄。首先客戶端向要掃瞄的埠...