3

我想使用 Scapy 解析数据包有效负载的前两个字节。实现这一目标的最佳方法是什么?是否需要偏移计算?

首先需要解析有效负载,尽管以下将解析整个 PCAP 文件,是否有更有效的方法来获取每个有效负载的前两个字节?链接

>>> 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 回答