使用Scapy解析数据包字节

时间:2012-07-12 05:02:44

标签: python scapy

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

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

>>> 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")

1 个答案:

答案 0 :(得分: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]))

......但这看起来有点矫枉过正。