3

Scapy を使用して、パケット ペイロードの最初の 2 バイトを解析したいと思います。これを達成するための最良の方法は何ですか?オフセット計算は必要ですか?

最初にペイロードを解析する必要がありますが、以下は PCAP ファイル全体を解析しますが、すべてのペイロードの最初の 2 バイトを取得するより効率的な方法はありますか? リンク:

>>> fp = open("payloads.dat","wb")
>>> def handler(packet):
...     fp.write(str(packet.payload.payload.payload))
...
>>> sniff(offline="capture1.dump",prn=handler,filter="tcp or udp")
4

1 に答える 1

3

分かりました。ここから見るとかなり効率的です。

fp.write(str(packet.payload.payload.payload)[:2])最初の 2 バイトだけを取得しようとする場合があります。

fp.write(str(packet[TCP].payload)[:2])これらすべてのペイロードをスキップすることもできます。

または、SSL パケット オブジェクトを定義し、それを適切なポートにバインドしてから、SSL レイヤーを出力することもできます。

class SSL(Packet):
  name = "SSL" fields_desc = [ ShortField("firstBytes", None) ]

bind_layers( TCP, SSL, sport=443 )
bind_layers( TCP, SSL, dport=443 )

def handler(packet):
... fp.write(str(packet[SSL]))

...しかし、これはやり過ぎのようです。

于 2012-07-13T17:05:59.847 に答える