我正在使用带有scapy
的python
来嗅探实时流量。
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/