在 scapy 中绑定自定义图层
Binding custom layers in scapy
我有一个 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)
当我执行 python 脚本应该获取新层(IEEE 1722 协议)中的参数时,出现以下错误:
"IndexError: Layer [ieee1722] not found"
怎么了?
好的,通过编辑类型值找到了解决方案:
bind_layers(Dot1Q, ieee1722, type=0x88f7) ---> works
Dot1Q 是创建的 ieee1722 层之上的层(参见 wireshark)。
在wireshark中点击数据包层可以看到类型值。
这是旧的,也许他们没有文档页面,但他们现在有了:
“添加新协议”
https://scapy.readthedocs.io/en/latest/build_dissect.html
我有一个 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)
当我执行 python 脚本应该获取新层(IEEE 1722 协议)中的参数时,出现以下错误: "IndexError: Layer [ieee1722] not found"
怎么了?
好的,通过编辑类型值找到了解决方案:
bind_layers(Dot1Q, ieee1722, type=0x88f7) ---> works
Dot1Q 是创建的 ieee1722 层之上的层(参见 wireshark)。 在wireshark中点击数据包层可以看到类型值。
这是旧的,也许他们没有文档页面,但他们现在有了:
“添加新协议”
https://scapy.readthedocs.io/en/latest/build_dissect.html