为scapy添加新协议(类似于ARP)

时间:2016-02-18 12:08:45

标签: python networking scapy 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数据包? 谢谢

1 个答案:

答案 0 :(得分:3)

你需要bind your layer到另一个,以便scapy自动解剖它。

另见scapys ARP实施。

bind_layers( Ether,         ARP,           type=2054)