我一直在编写自己的协议,Scapy并且在计算长度字段时遇到了问题(请参阅此处)。我在位域定义的长度层中遇到的另一个问题是,如果我调用返回未定义层中的长度字段,它将返回一个值。如果我调用hasattr(pckt[layer], 'field'),它将返回“true”,表示属性/字段存在。这对我来说没有任何意义,因为图层定义如下所示:
class Layer(Packet):
name = "Layer"
fields_desc = [ BitField("Padding", 15, 4),
BitField("Digit", 0, 4) ]
如您所见,定义的唯一属性/字段是Padding和Digit。 Length没有定义,那么为什么Scapy返回一个整数和true我正在执行的两个调用?