gpt4 book ai didi

python-2.7 - 使用 python/scapy 遍历 pcap 文件包

转载 作者:行者123 更新时间:2023-12-04 14:23:40 26 4
gpt4 key购买 nike

我想使用 python/scapy 遍历一个 pcap 文件包。该文件有多个协议(protocol)。当前迭代是特定于协议(protocol)的,因此如果下一个数据包来自另一个协议(protocol),则迭代会“跳转”。我不知道为什么现在会这样。我想要一个包一个包,不管是什么协议(protocol)。

小例子:

data = 'new.pcap'
zz = rdpcap(data)
sessions = zz.sessions()

for session in sessions:
for packet in sessions[session]:
eth_src = packet[Ether].src
eth_type = packet[Ether].type

if eth_src == "00:22:97:04:06:b9" and eth_type == 0x8100:
# do anything
elif eth_src == "00:22:97:04:06:b9" and eth_type == 0x22f0:
# do anything
else:
# do anything

有谁知道原因?

最佳答案

尝试简单:

for pkt in PcapReader('new.pcap'):
eth_src = pkt[Ether].src
eth_type = pkt[Ether].type
if [...]

使用 rdpcap()在内存中创建一个列表,而 PcapReader()创建一个生成器,数据包在需要时被读取,而不是存储在内存中(这使得处理巨大的 PCAP 文件成为可能)。

如果您出于某种原因需要列表,请执行以下操作:
packets = rdpcap('new.pcap')
for pkt in packets:
eth_src = pkt[Ether].src
eth_type = pkt[Ether].type
if [...]

关于python-2.7 - 使用 python/scapy 遍历 pcap 文件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440738/

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