1

Scapyを使用して、さまざまなフィールドのタイプ/長さに応じてペイロードを分析する方法を考えています。

たとえば、私はこれを持っています=>

|###[ Raw ]###
        |   |  load='\x00!\x92(\x00!\x92(\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x01\x00\x00\xc0\xa8\x03\x01\xc0\xa8\x03\x02\x01\xc0\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00\x18\x18\x10\x00\x00\x00\x00\x00'

各部分を段階的に分割したいと思います。最初の部分は2バイト、2番目の部分は4バイトなどです。

実際、Scapyを使用して新しいプロトコルを追加しましたが、最後の部分の管理は非常に複雑であるため、この方法(上記)でペイロードの最後の部分を選択/分析しようとしています。

4

1 に答える 1

2

Scapy で複雑なプロトコルを分析する最善の方法は、利用可能なすべてのフィールドを理解することです (ドキュメントが貧弱であるため、これは難しい場合があります)。

Scapy でサポートされているフィールドのリスト: http://trac.secdev.org/scapy/wiki/Fields

特に、ConditionalField を見てください。

ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)

また、Scapy の解剖中に、guess_payload_class() を使用してさまざまなレイヤーを選択する方法を学びます。小さなセクション (2 バイト/4 バイトなど) に分割したい場合は、セクションごとにレイヤーを作成し、guess_payload_class() を使用することを検討してください。http://trac.secdev.org/scapy/wiki/BuildAndDissect

特定の分野をどのように分析するかについて、より具体的な質問があれば、私はそれに答えることができますが、今のところ、それがあなたの一般的な質問に対して私ができる最善のアドバイスです. それが役に立てば幸い。

于 2012-05-17T15:26:24.457 に答える