不是pcap捕获文件(坏魔术)-Scapy python

问题描述 投票:2回答:2

尝试打开.pcap文件时遇到问题。在scapy.utils中,有RawPcapReader

    try:
        self.f = gzip.open(filename,"rb")
        magic = self.f.read(4)
    except IOError:
        self.f = open(filename,"rb")
        magic = self.f.read(4)
    if magic == "\xa1\xb2\xc3\xd4": #big endian
        self.endian = ">"
    elif  magic == "\xd4\xc3\xb2\xa1": #little endian
        self.endian = "<"
    else:
        raise Scapy_Exception("Not a pcap capture file (bad magic)")
    hdr = self.f.read(20)
    if len(hdr)<20:
        raise Scapy_Exception("Invalid pcap file (too short)")

My magic的值为“ \ n \ r \ r \ n”,但RawPcapReader期望的是magic ==“ \ xa1 \ xb2 \ xc3 \ xd4”或magic ==“ \ xd4 \ xc3 \ xb2 \ xa1 “。

您能告诉我可能是什么问题吗?使用.pcap文件?我正在使用python版本2.7

python scapy
2个回答
13
投票
“ \ n \ r \ r \ n”(\ x0A \ x0D \ x0D \ x0A)的魔术值表示您的文件实际上是.pcapng格式的文件,而不是libpcap的文件

解决方案很简单

在Wireshark中'另存为':Wireshark / tcpdump-pcap

或使用tshark:

$tshark -r old.pcapng -w new.pcap -F libpcap


0
投票
作为以pcap格式保存文件的替代方法,scapy现在具有PcapNgReader,因此您可以执行以下操作:

mypcap = PcapNgReader(filename)

© www.soinside.com 2019 - 2024. All rights reserved.