程序运行时同时进行嗅探
我有一段用Python和Scapy写的代码,目的是捕获网络数据包并测量它们的传输时间。整体运行得很好,但有一个问题,就是sniff()
这个选项会让代码停止执行。
比如说,我的代码长这样:
print "hello"
print "world"
sniff(iface="lo")
print "this will not show"
因为sniff
在运行,所以第4行的代码就不会被执行了。
我该怎么改才能解决这个问题呢?谢谢大家!
1 个回答
0
我不确定这是否符合你的需求,但 sniff
这个函数有一个叫 prn
的参数,主要是用来把接收到的数据包打印到屏幕上。不过,它也可以用来实时处理这些数据包。
http://www.secdev.org/projects/scapy/doc/usage.html#simplistic-arp-monitor
举个例子:
def process(pkt):
# do stuff
sniff(iface="lo", prn=process)
每当接收到一个数据包时,process
函数就会被调用一次。这可能让你在收到数据包时做其他事情,但仍然无法进行一些通用的后台任务。