向 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)