2017-10-24 20 views
1

python(v2.7)でscapy(v2.3.3)にPTPv2レイヤーを追加したいと思います。私はファイル/scapy/layers/inet.pyにPTPエントリを持つptpv2クラスを追加しました(PTPはレイヤ4にあるため)。私はまた、ptpv2層を上層にバインドしました。私のケースではイーサネットです。 scapyコマンド "LS()" を作成しptpv2層が一覧表示され、[OK]を、成功を入力してscapyにPTPv2レイヤーを追加する

bind_layers(Ethernet,ptpv2) 

。しかし、Pythonコマンドを通じて層にアクセスすることにより、

for packet in PcapReader('/media/sf_SharedFolder/test.pcap'): 
    if packet[ptpv2].sequenceId == anything: 
    # do sth 

次のエラーが発生します。

File "/usr/lib/python2.7/dist-packages/scapy/packet.py", line 817, in __getitem__ 
    raise IndexError("Layer [%s] not found" % lname) 
IndexError: Layer [ptpv2] not found 

Wiresharkのファイルは、レイヤーのフレームを持っている - >イーサネット - > PTP、ので、私の結合コマンドは右である必要があります。

エラーの原因を特定できません。

Pls、help me!

Thxを

クリス

答えて

1

あなたの解剖器具は、おそらく失敗しているが、Scapyはそれを隠し、Raw()として層をデコードします。

次のことが可能です。

  • チェックpacket.payloadRawインスタンスであることをチェックすることにより、その。
  • conf.debug_dissector = Trueを設定して、解剖学者のクラッシュを見つけようとします。
+0

"conf.debug_dissector = True"を追加しました。次のエラーが発生します。getfieldのファイル "/usr/lib/python2.7/dist-packages/scapy/fields.py" 75行目、 return s [self.sz:]、self.m2i(pkt、struct。 struct.error:unpackには、長さ2の文字列引数が必要です。 – crappidy

+0

"conf.debug_dissector = True"によって、より多くのエラー情報しか表示されません。まだエラーがあります。私は別のトピックに私の質問を編集しなかった、私は詳細について私の質問を編集しました。 – crappidy

+0

さて、私は新しい質問をします。 – crappidy

関連する問題