程序运行时同时进行嗅探

1 投票
1 回答
1104 浏览
提问于 2025-04-18 12:18

我有一段用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 函数就会被调用一次。这可能让你在收到数据包时做其他事情,但仍然无法进行一些通用的后台任务。

撰写回答