向 scapy 添加新协议(类似于 ARP)
Adding a new protocol to scapy (Similiar to ARP)
我想实施一种新的安全 ARP 协议,该协议不受 ARP 中毒的影响。新的 "SecureArp" 将包含一个签名字段,可以根据商定的 hmac 函数对其进行检查。
scapy定义如下:
class SecureArp(Packet):
name = "SecureARP"
fields_desc = [IPField("srcip", None),
MACField("srcmac", None),
IPField("dstip", None),
MACField("dstmac", "00:00:00:00:00:00"),
IntEnumField("opcode", 1, { 1: "request", 2: "response" }),
StrFixedLenField("challenge", "", length=24),
StrFixedLenField("signature", "", length=20)]
我遇到的问题是,当收到这样的 SecureArp 消息时,scapy 根本不解析它并将数据保留为 "Raw"。
我阅读了有关扩展到新协议的 SecDev 文档,但它非常不清楚。
我应该采取什么步骤才能自动解析收到的 SecureArp 数据包?
谢谢
你必须 bind your layer 到另一个以便 scapy 自动剖析它。
另见 scapys ARP 实现。
bind_layers( Ether, ARP, type=2054)
我想实施一种新的安全 ARP 协议,该协议不受 ARP 中毒的影响。新的 "SecureArp" 将包含一个签名字段,可以根据商定的 hmac 函数对其进行检查。 scapy定义如下:
class SecureArp(Packet):
name = "SecureARP"
fields_desc = [IPField("srcip", None),
MACField("srcmac", None),
IPField("dstip", None),
MACField("dstmac", "00:00:00:00:00:00"),
IntEnumField("opcode", 1, { 1: "request", 2: "response" }),
StrFixedLenField("challenge", "", length=24),
StrFixedLenField("signature", "", length=20)]
我遇到的问题是,当收到这样的 SecureArp 消息时,scapy 根本不解析它并将数据保留为 "Raw"。 我阅读了有关扩展到新协议的 SecDev 文档,但它非常不清楚。 我应该采取什么步骤才能自动解析收到的 SecureArp 数据包? 谢谢
你必须 bind your layer 到另一个以便 scapy 自动剖析它。
另见 scapys ARP 实现。
bind_layers( Ether, ARP, type=2054)