1

私はカスタムのバイナリプロトコル用にLuaでディセクタを書いています。3つのフィールドタイプを定義しました。

f.field1= ProtoField.bytes("myproto.field1","Field 1",base.HEX)
f.field2= ProtoField.uint16("myproto.field2","Field 2",base.HEX)
f.field3= ProtoField.bytes("myproto.field3","Field 3",base.HEX)

これらのフィールドは、次のようにツリーに追加されます。

subtree:add(f.field1,buf(offset,4))
offset = offset +4
val2=buf(offset,2):uint()
-- some logic around populating f2_description omitted
offset=offset+2
subtree:add(f.field2,val2):append_text(" (" ..f2_description ..")")
subtree:add(f.field3,buf(offset,2))

ここで、Wiresharkを開いて、分析されたパケットのツリーでField1またはField3をクリックすると、選択したデータが生のパケットの16進ビュー(一番下のパネル)で強調表示されていることがわかります。 フィールド選択が強調表示されます

、ただし、Field2の場合はそうではありません。 ここに画像の説明を入力してください

私は何が間違っているのですか?

4

1 に答える 1

1

tree:add(..、..)の2番目のパラメーターがUserDataタイプの値である(または少なくとも直接参照している)場合、Wiresharkディセクタは適切なフィールドを選択します。

あなたの例では、buf()はUserDataですが、val2はそうではありません。

これを試してみてください:

subtree:add(f.field2,buf(offset,2):uint()):append_text(" (" ..f2_description ..")")

一方、ISO8583のディセクタを作成することはないでしょう。

于 2012-02-25T04:44:52.147 に答える