Wireshark нестандартный диссектор LUA: формат отображения - PullRequest
0 голосов
/ 12 декабря 2018

Допустим, я хотел бы иметь поле с именем ABC, которое будет иметь 2 байта без знака: от 0 до 65535. Однако действительное значение, которое представлено, составляет от -5,0 до 60,0 с линейным преобразованием между битами в фактическое значение.

У меня есть некоторый XML, который определяет сообщения и их элементы: имя, местоположение, значение битов (min & max), фактическое значение (min & max), как оно хранится в базе данных (XML выводится избаза данных), тип преобразования.

Я пишу какой-то инструмент преобразования из формата XML в LUA.Как мне написать диссектор, чтобы увидеть значения от -5 до 60?

Спасибо

1 Ответ

0 голосов
/ 16 декабря 2018

Вы должны убедиться, что вместо uint16 это число с плавающей запятой.

local abc_field = ProtoField.uint16("yourproto.abc", "ABC Value")

to:

local abc_field = ProtoField.float("yourproto.abc", "ABC Value")

А при добавлении поля ABC:

subtree:add(ABC, buf(0, 2))

сделать расчет:

subtree:add(ABC, buf(0, 2):bitfield(0, 16) * (65/65536) - 5)
...