将 PTPv2 层添加到 scapy

Adding PTPv2 layer to scapy

我想在 python (v2.7) 中向 scapy (v2.3.3) 添加一个 PTPv2 层。我将带有 PTP 条目的 ptpv2 class 添加到文件 /scapy/layers/inet.py(因为 PTP 位于第 4 层)。我还将 ptpv2 层绑定到上层,在我的例子中是以太网。

bind_layers(Ethernet,ptpv2)

输入scapy命令"ls()"列出创建的ptpv2层,ok,成功。但是通过 python 命令访问图层

for packet in PcapReader('/media/sf_SharedFolder/test.pcap'):
  if packet[ptpv2].sequenceId == anything:
    # do sth

出现以下错误:

File "/usr/lib/python2.7/dist-packages/scapy/packet.py", line 817, in __getitem__
  raise IndexError("Layer [%s] not found" % lname)
IndexError: Layer [ptpv2] not found

Wireshark 文件有 Frame -> Ethernet -> PTP 层,所以我的绑定命令必须正确。

不知道哪里出错了

请帮帮我!

感谢

克里斯

您的解析器可能失败了,但 Scapy 隐藏了它并将图层解码为 Raw()

您可以:

  • 通过检查 packet.payload 是一个 Raw 实例来检查。
  • 尝试通过设置 conf.debug_dissector = True.
  • 来找出解析器中崩溃的原因