Я пишу диссектор на Lua для пользовательского двоичного протокола. Я определил три типа полей:
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 в дереве рассеченного пакета, я вижу, что выбранные данные выделяются в шестнадцатеричном представлении необработанного пакета (самая нижняя панель):
, но это не относится к Field2:
Что я делаю не так?