我是 python 的新手并且卡在了一个点上。我想只使用 python 3 内置库创建端口扫描器(意味着避免 scapy 等)我有以下代码:
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() 不适用于此。
- 我想控制尝试(尝试)的次数,即我只想发送一两个同步数据包。我不希望这个程序发送超过 2 个用于探测的同步数据包。这东西怎么可能实现?