gpt4 book ai didi

python - 使用 scapy 读取 PCAP 文件

转载 作者:太空狗 更新时间:2023-10-30 02:55:17 24 4
gpt4 key购买 nike

我有大约 10GB 的 pcap 数据和 IPv6 流量来分析存储在 IPv6 header 和其他扩展 header 中的信息。为此,我决定使用 Scapy 框架。我尝试了 rdpcap 功能,但对于这么大的文件,不推荐使用。它试图将所有文件加载到内存中并卡在我的案例中。我在网上发现在这种情况下推荐sniff,我的代码如下:

def main():
sniff(offline='traffic.pcap', prn=my_method,store=0)


def my_method(packet):
packet.show()

在名为my_method 的函数中,我分别收到每个数据包并且可以解析它们,但是......当我使用内置框架方法调用 show 函数时,我得到了这样的东西: result

在 wireshark 中打开时,我得到了正确的数据包: result2

你能告诉我如何在 scapy 中解析这些数据包以获得正确的结果吗?

编辑:根据评论中的讨论,我找到了一种使用 Python 解析 PCAP 文件的方法。在我看来,最简单的方法是使用 pyshark 框架:

import pyshark
pcap = pyshark.FileCapture(pcap_path) ### for reading PCAP file

可以很容易地用for循环迭代读取文件

for pkt in pcap:
#do what you want

对于解析 IPv6 header ,以下方法可能很有用:

pkt['ipv6'].tclass            #Traffic class field
pkt['ipv6'].tclass_dscp #Traffic class DSCP field
pkt['ipv6'].tclass_ecn #Traffic class ECN field
pkt['ipv6'].flow #Flow label field
pkt['ipv6'].plen #Payload length field
pkt['ipv6'].nxt #Next header field
pkt['ipv6'].hlim #Hop limit field

最佳答案

更新

最新版本现在支持 ipv6 解析。所以要用 scapy 解析 ipv6“.pcap”文件现在可以这样做了:

from scapy.all import *

scapy_cap = rdpcap('file.pcap')
for packet in scapy_cap:
print packet[IPv6].src

现在正如我最初问这个问题时回复的那样,对于年长的scapy 版本(不支持 ipv6 解析):

  • pyshark可以改用(pyshark 是一个 tshark 包装器),如下所示:

import pyshark

shark_cap = pyshark.FileCapture('file.pcap')
for packet in shark_cap:
print packet.ipv6.src
  • 当然还有tshark (wireshark 的终端版本):

$ tshark -r file.pcap -q -Tfields -e ipv6.src

关于python - 使用 scapy 读取 PCAP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963343/

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