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

标签 python-2.7 scapy pcap

我想使用 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/

相关文章:

python - Scapy模块: netif = rt[4 + mtu_present + prio_present + refs_present + locked] IndexError: list index out of range

wifi - 在监控模式下使用 libpcap 嗅探 wifi

c - libpcap,将我的数据包的选择性区域保存到 pcap 文件

python - 我收到警告 <RuntimeWarning : invalid value encountered in sqrt>

python - 打印格式化的值集列表

python - 尝试使用 **kwargs 调用函数内部函数时出现类型错误?

python - 如何让导入的函数调用新函数?

python - 在 PCAP 文件上使用 BPF

python - 在 Python 脚本末尾生成 pcap 文件

audio - 如何通过gstreamer将pcap转换为带有视频和音频的avi文件?