Как создать объект диапазона TVB из пользовательских данных в сценарии lua wireshark - PullRequest
0 голосов
/ 16 апреля 2019

Я пишу сценарий lua для разбора пользовательских протоколов. Protocoll кодирует некоторые данные менее чем в 8 битах. Я хотел бы по-прежнему выделять байты, откуда поступают данные в Wireshark.

Если я использую tree: add (Protofield, tvb: range), байты подсвечиваются, так как я предполагаю, что информация, которую нужно выделить, поступает из tvbrange.

Но если я манипулирую данными перед тем, как передать их в дерево, как обычный int, а не как диапазон tvb, байты не подсвечиваются. Дерево не может знать ...

Есть ли возможность создать объект диапазона из простых данных?

Или как альтернатива: есть ли способ передать дерево: добавить функцию, которая выделяет байты?

local detections = 22;
subsubtree:add_le(TimeLag, tvb_sub_buffer(6,4)) -- is highlighting the bytes
subsubtree:add_le(Detections, detections) -- is NOT highlighting the bytes

Спасибо за помощь!

1 Ответ

0 голосов
/ 26 апреля 2019

Если вы пытаетесь выделить байты, а также манипулировать данными, полученными из этих байтов, вы можете сделать это, используя что-то вроде следующего:

subsubtree:add_le(TimeLag, tvb_sub_buffer(6,4))

local detections = manipulate_detections(tvb_sub_buffer(10,2):le_uint())
subsubtree:add_le(Detections, tvb_sub_buffer(10,2)):set_text("Detections: " .. detections)

В качестве альтернативы вы можете при необходимости отформатировать строку, например ::

subsubtree:add_le(Detections, tvb_sub_buffer(10,2)):set_text(string.format("Detections: %d", detections))

См. Раздел 11.7 Руководства разработчика Wireshark для получения дополнительной информации о добавлении информации в дерево рассечения и Раздел 20 - Библиотека строк Программирование в Lua Book для получения дополнительной информации. информация о string.format() и друзьях.

...