在scapy

时间:2017-06-29 09:36:54

标签: python-2.7 binding layer scapy ieee

我有一个python脚本,它将AVB(IEEE)数据包组装并发送到网络中。 数据包将被wireshark捕获。 使用其他python脚本,我遍历捕获文件。 但我无法在几个层次中访问一些参数,因为scapy并不了解它们。 所以我必须将这些图层添加到scapy中。

这里是wireshark中的数据包: enter image description here

我将以下代码添加到文件" python2.7 / dist-packages / scapy / layers / l2.py"

class ieee(Packet):
  name = "IEEE 1722 Packet"
  fields_desc=[ XByteField("subtype", 0x00),
                XByteField("svfield", 0x81),
                XByteField("verfield", 0x81)]

bind_layers(Dot1Q, ieee1722, type=0x22f0)

当我执行应该抓取新层(IEEE 1722协议)中的参数的python脚本时,会发生以下错误: " IndexError:未找到图层[ieee1722]"

出了什么问题?

2 个答案:

答案 0 :(得分:1)

这是旧的,也许他们没有文档页面,但现在有了:
“添加新协议”
https://scapy.readthedocs.io/en/latest/build_dissect.html

答案 1 :(得分:0)

好的,通过编辑类型值找到解决方案:

  bind_layers(Dot1Q, ieee1722, type=0x88f7) ---> works

Dot1Q是创建的ieee1722图层上方的图层(请参阅wireshark)。 您可以通过在wireshark中单击数据包层来查看类型值。