2015-09-08 46 views
2

我試圖打開.pcap文件時出現問題。在scapy.utils有RawPcapReader不是pcap捕獲文件(壞魔法) - scapy python

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)") 

魔術有值 「\ n \ r \ r \ n」,但RawPcapReader期待魔術== 「\ XA1 \ XB2 \ XC3 \ XD 4」 或魔法= =「\ xd4 \ xc3 \ xb2 \ xa1」。

你能告訴我可能是什麼問題嗎?用.pcap文件?我正在使用Python版本2.7

回答

8

「\ 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

我會給你一個給予好評,因爲你的答案是正確的(並應被接受爲由OP轉向) – user1252280