gpt4 book ai didi

python - 如何使用 BPF 重新过滤 scapy 数据包?

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:51 24 4
gpt4 key购买 nike

我正在编写一个程序,需要重新过滤由 sniff() 捕获的数据包。我想对每个数据包应用 BPF 文件管理器,如果匹配,则返回 true,否则返回 false。

谁能给我一些提示吗?谢谢!

最佳答案

作为记录,这是我在 issue you have opened 上的回答:

您不需要BytesIO 对象,因为sniff()offline 参数可以接受PacketList 或单个 Packet

你可以这样做:

pkts=sniff(count=10)
pkts_icmp = sniff(offline=pkts, filter='icmp')

数据通过其标准输入传递给 tcpdump 进程,因此它不会触及您的硬盘驱动器,除非您使用的是 MacOS X(但这是 tcpdump/MacOS X 的限制, Scapy 不能在这里做得更好)。

如果你想对每个数据包进行测试,你可以这样做:

pkts = sniff(count=10)
for pkt in pkts:
if sniff(offline=pkt, filter='icmp'):
print 'match!'

请注意,这将为每个数据包派生一个 tcpdump 进程,这可能并不理想。

附带说明一下,如果您的测试就这么简单,您也可以改用 Scapy 测试(尽管它并不完全等同,但在某些情况下会有所帮助,并且不会为每个已处理的数据包 fork 一个进程):

pkts = sniff(count=10)
for pkt in pkts:
if ICMP in pkt:
print 'match!'

关于python - 如何使用 BPF 重新过滤 scapy 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46260749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com