我在嗅探数据包时scapy的超时选项有问题。据我所知,如果你用这种方法:test = sniff(filter="ip and icmp ", timeout = 2)
print(test)
你的嗅探应该在2秒后停止。然而,这是100%不起作用。根据我收集到的信息,最大的问题之一也是,如果设置timeout=5并运行嗅探器,然后运行ping谷歌在并行命令提示符下,它将捕获4个数据包,直到嗅探完成后才会显示,然后无限期地坐在那里,直到您再发送或接收1个icmp数据包,只有一个,然后,它将杀死嗅探和打印(测试),其中5个icmp4来自第一个ping集,1个来自第二个ping。在
我正在使用windows,这可能是我不知道的问题。我有python2.7。我的整个脚本,为了测试这一点,必须将它与一个更大的脚本隔离开来:
^{pr2}$
就这样-如果timeout=1,它也不会停止,直到收到一个包。在
这是斯卡比的密码发送接收.py嗅探超时if timeout is not None:
stoptime = time.time()+timeout
remain = None
while 1:
try:
if timeout is not None:
remain = stoptime-time.time()
if remain <= 0:
break
从scapy中取出函数后发送接收.py意识到函数也有同样的问题,我把问题缩小了。当您将过滤器传递到sniff函数时,它会出现,它会改变超时的工作方式。如果您运行:
从所有人进口*test = sniff(timeout = 5)
print(test)
你会没事的,它会在5秒时自动超时,否则它会挂起,并且无法正确完成超时循环。在