使用Scapy解析数据包字节

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

数据包及其有效负载使用的是什么协议? - tbroberg
1个回答

3

我明白了。从这里看来,这看起来非常高效。

你可以尝试使用fp.write(str(packet.payload.payload.payload)[:2])仅获取前2个字节。

你也可以使用fp.write(str(packet[TCP].payload)[:2])跳过所有负载。

或者,你可以定义一个SSL Packet对象,将其绑定到适当的端口,然后打印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]))

...但这似乎有点过头了。


在指定偏移量时,我收到了以下错误信息: raise IndexError("未找到层[%s]" % lname) IndexError: 未找到层[None] - Astron
糟糕,我漏掉了一个括号。已经编辑好了以修复此问题。抱歉,但它仍未经过测试。 - tbroberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接