4

scapy でパケットをストリングするときに得られる以下のエンコーディングは何ですか? これは確かに 16 進数ではありません。

str(IP()) 'E\x00\x00\x14\x00\x01\x00\x00@\x00|\xe7\x7f\x00\x00\x01\x7f\x00\x00\x01'</p>

4

1 に答える 1

4

\x は 16 進表記です。この場合、str(IP()) を使用すると、パケット データを文字列に変換しようとしていますが、これは完全には有効ではありません。ASCII テーブルですべての生の 16 進データを見つけて文字に置き換えることができるわけではないため、変換されない場合は、\x14 の形式で表示されます。

次の例が役立つと思います。

  • scapy メソッドを使用してパケットの概要を表示する
  • Python メソッドを使用して表示するために、パケット データを 16 進形式にエンコードする

    Welcome to Scapy (2.1.1-dev)
    >>> pkt=IP()
    >>> pkt.summary()
    '127.0.0.1 > 127.0.0.1 ip'
    >>> data=str(pkt)
    >>> data.encode('hex')
    '450000140001000040007ce77f0000017f000001'
    >>>
    

次の点を考慮してください。

  • SCAPY では、発信元と宛先を決定せずに IP レイヤーを作成すると、「127.0.0.1 > 127.0.0.1 ip」の例に示すように、ループバック アドレスが両方のデフォルトとして設定されます。
  • .summary() は Scapy メソッドです
  • str()、.encode は python メソッドです
于 2011-10-30T17:12:23.820 に答える