我正在使用带有scapypython来嗅探实时流量。

capture=sniff(iface="<My Interface>", filter="tcp")

但这会嗅探每个数据包,并将其添加到列表capture中,稍后可以对其进行处理。
我想处理一个包,并在嗅探到它时显示该包的几个字段。也就是说,当嗅探一个包时,它会触发一个我可以分析该包的函数。这将持续几包。
我已经准备好了函数,可以使用捕获的包列表。但我不能在每个实时包中使用它。
如何做到这一点?是否可以使用scapy或是否需要安装任何其他软件包?

最佳答案

sniff函数的参数应该如下所示:

from scapy.all import *

def pkt_callback(pkt):
    pkt.show() # debug statement

sniff(iface="<My Interface>", prn=pkt_callback, filter="tcp", store=0)

store=0表示不存储接收到的任何数据包,prn表示将pkt发送到pkt_callback
Source.
Yoel所述,如果只需要一个操作,lambda可与prn一起使用,而不是像本例中那样的新函数:
sniff(iface="<My Interface>", prn = lambda x: x.show(), filter="tcp", store=0)

关于python - Scapy数据包嗅探器在每个嗅探的数据包上触发一个 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28292224/

10-09 20:21