我想实现一种新的安全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根本不会对其进行解析,而将数据保留为“原始”.
我阅读了有关扩展到新协议的SecDev文档,但尚不清楚.
我应该采取什么步骤,以便接收到的SecureArp数据包被自动解析?
谢谢
解决方法:
您必须将bind your layer设置为另一个,以便Scapy自动解剖它.
另请参见Scapys ARP的实现.
bind_layers( Ether, ARP, type=2054)