基於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段掃描以及多執行緒需自行研究,歡迎打擾作者一起學習討論。