golang高效能埠掃瞄

2022-07-03 16:33:19 字數 1974 閱讀 3694

最近有個小專案的需要,使用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掃瞄 半開啟掃瞄。首先客戶端向要掃瞄的埠...