新手到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