ScaPy でいくつかのプロトコルを作成していますが、len フィールドがどのように機能するかを理解するのが困難です。http://trac.secdev.org/scapy/wiki/LengthFieldsを読んだ後、私はそれほど啓発されていません。
明らかに、「lenfield」(フィールドの長さを保持する) と「varfield」(実際の可変長フィールドを含む) と呼ばれるものがあります。ただし、varfield にできるフィールドは、PacketLenField、StrFixedLenField、および StrLenField だけのようです。残りのフィールドはどこですか?可変長の BitField または XBitField を使用できないのはなぜですか?
たとえば、私は持っています:
BitFieldLenField('lenfield', None, 8, length_of='varfield')
これは、長さ 8 を正しく返します (この場合に必要なフィールドは、8 オクテット/4 16 進数のペアです)。これまでのところすべて順調です。ただし、そのフィールドを取得しようとすると、「A\x81\x11\x11P 3」のようなものを返す StrLenField が唯一のオプションのようです
それで、私の質問は次のとおりです。そのフィールドをパケット内の実際の16進数として戻すにはどうすればよいですか? 組み込みフィールドに何か不足していますか、それとも XBitLenField のようなものを作成する必要がありますか?
ご協力いただきありがとうございます。