golang建立簡單tcp掃瞄器

2022-10-09 05:33:10 字數 1163 閱讀 9429

最簡單的tcp掃瞄器非常簡單,我們只需要知道乙個函式 net.dial()

go語言中 dial() 函式用於建立網路連線,函式原型如下:

func dial(network, address string) (conn, error)

引數說明如下:

network 引數表示傳入的網路協議(比如 tcp、udp 等);

address 引數表示傳入的 ip 位址或網域名稱,而埠號是可選的,如果需要指定的話,以:的形式跟在位址或網域名稱的後面即可。如果連線成功,該函式返回連線物件,否則返回 error。

此函式會返回兩個引數,型別分別為conn和err,如果連線成功err會為空,也就是nil。所以我們只需要判斷err == nil。就能知道是否可以連線,從而達到探測的作用。下面是實現:

func main() 

}

很明顯,如果能夠連線,將會返回連線成功。這只是探測nmap測試**的80埠,作為掃瞄肯定是不夠的,但是以此為基礎,我們可以很輕易的想到在**的外層新增上迴圈,tcp埠範圍為165535,這裡我們只探測11000作為例子:

func main() 

conn.close()

fmt.println("埠", i, "開啟")

}}

這就已經是最簡單的掃瞄器了,當然,這個的掃瞄速度會慢的離譜,我們需要加上併發,go實現併發非常方便。但是我們要知道並不是併發數越高越好。

在這個掃瞄過程中,如果併發數量過高,會導致掃瞄速度過快而導致掃瞄結果不準確。所以我們需要控制併發,下面是用通道控制併發:

func worker(ports, results chan int) 

conn.close()

results <- p }}

func main()

go func()

}()for i := 0; i < 1000; i++

} close(ports)

close(results)

sort.ints(resultportslist)

for _, port := range resultportslist

}

這樣,乙個簡單的掃瞄器就完成了。

TCP空閒掃瞄原理

tcp空閒掃瞄是一種隱秘的掃瞄技術,要知道它的原理,首先要介紹一下一般埠掃瞄的原理。判斷乙個tcp埠是否開放,其中一種方法是向該埠傳送乙個 syn 建立會話 資料報,如果該埠是開放的,則它會返回乙個 syn ack 會話確認 資料報 如果該埠是關閉的,則它返回 rst 重置 資料報 如果埠是被過濾狀...

一 TCP掃瞄技術

一 tcp掃瞄技術 常用的埠掃瞄技術有很多種,如 tcp connect 掃瞄 tcp syn 掃瞄 tcp fin 掃瞄 等,網路上也有很多文章專門介紹,比如 上就介紹了很多我的程式 所使用的最基本的掃瞄技術 tcp 掃瞄。作業系統提供的 connect 系統呼叫,用來與每乙個感興趣的目標計算機的...

簡單TCP伺服器建立

簡單tcp伺服器建立 實現tcp伺服器的建立,實現迴圈與客戶端聊天,並且獲取客戶端資訊.tcp程式設計步驟 1 建立套接字socket 買手機.2 套接字繫結 bind 繫結手機卡.3 監聽套接字 listen 等待其他人打 4 接受客戶端請求 accept 接 進行資料的互動過程.通話內容.5 關...