質問

この例に基づいて、コードを使用して関心のあるパケットを見つけることができました。

Pythonを使用して特定のプロトコルでPCAPファイルをフィルタリングするにはどうすればよいですか?

TCPパケットの次の子供は、実際のデータです。

   if isinstance(child1, TCP):
        if child1.get_th_dport() == 80:
           x = child1.child()
           print x

これにより、Wire Sharkなどのパケットデータが印刷され、HEXおよびASCIIバージョンが表示されます。しかし、私はこれまでのところ、ヘックスの内容を単に取得する方法を見つけることができませんでした。印刷可能な出力を操作できることは知っていますが、ヘックス形式でデータを取得する方法があるに違いないと思いました...

私はサンプルを調べましたが、これを行う人はいないようです。誰かが正しい方法を知っていますか?

役に立ちましたか?

解決

使用できます packet.get_data_as_string() 生のバイトを取得してから、好きなように表示します。生成された「六角列」出力を複製しました print child. 。 ASCIIコラムを作成するには、簡単に調整できます。

def display_hex(pkt, cols=8):
    size = cols * 4
    data = ''.join('%02x' % ord(b) for b in pkt.get_data_as_string())
    for i in range(0, len(data), size):
        for j in range(0, size, 4):
            print data[i+j:i+j+4],
        print

if isinstance(child, TCP):
    display_hex(child)

出力:

1703 0103 b0b1 9387 be4e fe00 9230 6192
e3bb 217e c1cb 8511 556f f986 4f31 542d
15c6 f42e f3bb 93d5 cf33 f126 c174 dbc4
... snip ...
8b1d 8707 96d6 7a18 2aab fd0b 48ee c4eb
b7d8 a67f 8bc0 597d 1044 a076 1a9e 24ba
959b fda3 1adb 2384 669c e6c8 c3b5 bef4
1189 eda8 3e  
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top