1

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

这是wireshark中的数据包: 在此处输入图像描述

我将以下代码添加到文件“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: Layer [ieee1722] not found”

怎么了?

4

2 回答 2

2

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

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

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

于 2017-06-29T10:49:31.430 回答
1

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

于 2021-05-07T03:44:08.307 回答