新手到python並卡住了一個點。我想創建一個端口掃描器只使用Python 3個的內置庫(意味着避免Scapy的等),我有以下代碼:Python端口掃描器
import socket
for i in range(1,26):
s = socket.socket()
s.settimeout(0.5)
ip = "74.207.244.221" #scanme.nmap.org
response = s.connect_ex((ip, i))
if response:
print ("%d\tclose" %i)
else:
print ("%d\topen" %i)
s.close()
現在我想2層的功能添加到這一點:那就是
- 區分關閉和過濾端口之間。在這兩種情況下,我都會收到相同的errno,因此如何檢查我是否收到了第一個數據包?據我所知s.recv()不適用於此。
- 我想控制嘗試次數(嘗試),即我只想發送一個或兩個syn數據包。我不希望這個程序發送超過2個syn數據包用於探測。這件事如何實現?
我希望每一個現有的端口掃描器會比與1 – 2013-02-20 05:24:58