2016-06-17 23 views
0

私はpcapファイルを解析する必要があり、dpktを使って割り当てを行っています。私はネットワーキングに慣れていないので、コードをデバッグする/始めるのは本当に苦労しています。dpktを使用してpcapファイルを解析する

コードの

最初のセット:

import dpkt 

filename='test.pcap' 
f = open(filename) 
pcap = dpkt.pcap.Reader(f) 

for ts, buf in pcap: 
    eth = dpkt.ethernet.Ethernet(buf) 
    ip = eth.data 
    tcp = ip.data 

f.close() 

エラーはAttributeErrorです。「strの」オブジェクトが持つ無属性「データ」

だから、以前のStackOverflowから、私は多分、私がなってることが判明します " dpktイーサネットデコードをスキップして、IPデコードにストレートジャンプ:UnpackError」私は、コードを変更してまで行く

import dpkt 

filename='test.pcap' 

f = open(filename) 
pcap = dpkt.pcap.Reader(f) 

for ts,buf in pcap: 
    ip = dpkt.ip.IP(buf) 
    tcp = ip.data 

f.close() 

それが今の私を与えているエラーです 『:無効なヘッダ長』

が本当にこれで前方に移動する方法を理解していない、任意のヘルプは大幅に

+0

あなたはpcapファイルを共有できますか? –

答えて

1

をいただければ幸いこれは通常、Windows上で起こります。ウィンドウでは、pcapファイルをバイナリモードで開く必要があります。

f = open('test.pcap','rb')

+0

ニース!これは正解です。 – Yvainovski

1

私は自分の携帯電話でとったトレースに同じ問題がありました。

これは、イーサネットがLinux Cooked Captureに置き換えられたためです。トレースが同様にカプセル化されている場合は、dpkt.ethernet.Ethernet(buf)ではなくdpkt.sll.SLL(buff)を使用する必要があります。ここに例があります:

import dpkt 

filename='a_linux_cooked_capture.pcap' 
f = open(filename, 'rb') 
pcap = dpkt.pcap.Reader(f) 

for ts, buf in pcap: 
    eth = dpkt.sll.SLL(buf) 
    ip = eth.data 
    tcp = ip.data 
f.close() 
関連する問題