0

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

コードの最初のセット:

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' オブジェクトに属性 'data' がありません

したがって、以前の Stackoverflow から、おそらく「dpkt イーサネット デコードをスキップして、IP デコードに直接ジャンプする」ことになっていることがわかったので、コードを変更して次の場所に移動しました。

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

今私に与えているエラーは「UnpackError:無効なヘッダー長」です

これを進める方法がよくわかりません。どんな助けでも大歓迎です

4

2 に答える 2

5

私は自分の電話で取った痕跡についても同じ問題を抱えていました.

これは、イーサネットが 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()
于 2016-06-24T21:30:37.667 に答える
2

これは通常、Windows で発生します。Windows では、バイナリ モードで pcap ファイルを開く必要があります。

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

于 2016-06-20T19:10:07.047 に答える