我正在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的內容?
感謝您的幫助。