基於python的埠掃描

前言

  埠掃描是指某些別有用心的人發送一組埠掃描消息,試圖以此侵入某台電腦,並了解其提供的電腦網路服務類型(這些網路服務均與埠號相關)。埠掃描是電腦解密高手喜歡的一種方式。攻擊者可以通過它了解到從哪裡可探尋到攻擊弱點。實質上,埠掃描包括向每個埠發送消息,一次只發送一個消息。接收到的回應類型表示是否在使用該埠並且可由此探尋弱點。

思路

  1、通過socket連接,來判斷埠是否開啟。

  2、通過getservbyport,來判斷所開埠對應的服務。

  3、使用thread實現多執行緒運行

優點:比nmap掃描的速度更快。

缺點:c段掃描時,由於佔用路由流量過大,存在斷網的風險。(具體為啥,作者還在查,如有想法,歡迎打擾)

部分程式碼

from socket import *

ip = '127.0.0.1'
for port in range(1, 65536):
    try:
        s = socket(AF_INET, SOCK_STREAM)        # 會斷網
        s.connect((ip, port))
        s.shutdown(1)
     services = getservbyport(port) print(f"\r[+] {ip}:{port} is open => Service is {services}\n") except Exception as e: pass

結語

本文只討論單執行緒單ip的掃描,c段掃描以及多執行緒需自行研究,歡迎打擾作者一起學習討論。