Данные пакетов в Wireshark не выделяются при клике с помощью моего пользовательского диссектора - PullRequest
1 голос
/ 12 февраля 2012

Я пишу диссектор на 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 в дереве рассеченного пакета, я вижу, что выбранные данные выделяются в шестнадцатеричном представлении необработанного пакета (самая нижняя панель): field selection is highlighted

, но это не относится к Field2: enter image description here

Что я делаю не так?

1 Ответ

1 голос
/ 25 февраля 2012

Диссекторы Wireshark действительно выбирают правильные поля, если второй параметр дерева: добавить (.., ..) (или, по крайней мере, непосредственно ссылки) значение типа UserData ..

В вашем примере buf () - это UserData, а val2 - нет.

Попробуйте:

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

С другой стороны, вы не будете писатьдиссектор для ISO8583, не могли бы вы?

...