我正在ScaPy中编写一些协议,但我很难理解len字段如何工作。在阅读http://trac.secdev.org/scapy/wiki/LengthFields后,我不会轻视。显然,我们有他们所说的'lenfield'(保存字段的长度)和'varfield'(包含实际的可变长度字段)。但是,似乎可以是varfield的唯一字段是PacketLenField,StrFixedLenField和StrLenField。剩下的领域在哪里?为什么你不能有一个可变长度的BitField或XBitField?在ScaPy中使用LenFields
例如我已经得到:
BitFieldLenField('lenfield', None, 8, length_of='varfield')
这正确返回8的长度(我想在这种情况下,该字段为长8个八位字节/ 4个十六进制对)。迄今为止都很好。然而,当我尝试并获得那场,好像我唯一的选择是返回像“A \ X81 \ X11 \ x11P 3”的东西
所以一个StrLenField,我的问题是:如何获得那场回作为数据包中的实际十六进制?我是否在内置字段中丢失了某些内容,或者是否必须创建类似XBitLenField的内容?
感谢您的帮助。