我正在使用scapy编写端口扫描程序,但发现其速度非常慢。实际进行扫描的代码只有一行:
ans, unans = sr(IP(dst=targetIP)/TCP(dport=(1, 49151), flags='S'))
而且,尽管我正在扫描的计算机与我的局域网相同,但需要大约15分钟才能运行。 哎呀,我甚至插在目标计算机的同一个交换机上!
我尝试了多线程,但它实际上使速度更慢。 使用多个进程速度更快,但是只有到一定程度。 因为Scapy的嗅探器无法跟上并且正在丢失数据包,要么是网络本身丢失数据包(不太可能,因为nmap工作正常)。 无论哪种情况,使用5个进程,我将TCP扫描时间缩短到大约5-6分钟,虽然是单进程运行的1/3,但仍比nmap的约10秒慢得多。
谁知道任何其他加速大范围Scapy端口扫描的技巧吗?