Я пытаюсь преобразовать данные внутри пакета в int, но он не работает. Я могу правильно добавить поля в поддерево, но хотел бы иметь доступ к данным как целому числу для выполнения какой-либо другой работы.Как преобразовать данные из пакета в целое число в Wireshark с помощью Lua Dissector?
Я хочу, чтобы использовать переменную len ниже как int, но когда я пытаюсь использовать метод «tonumber», возвращается «Nil». Я могу преобразовать его в строку, используя «tostring», но не получим метод number.
Я видел некоторые примеры, которые используют следующий код для преобразования в целое число:
local len = buf(0,4):uint32()
Но это производит следующее сообщение об ошибке, когда я запустить его на моей машине:
Lua error: attempt to call method "uint32" (a nil value)
Вот является код у меня есть, что делает все правильно, кроме тех, где прокомментировано:
{rest of code}
-- myproto dissector function function
function (my_proto.dissector (buf, pkt, root)
-- create subtree for myproto
subtree = root:add(my_proto, buf(0))
-- add protocol fields to subtree
subtree:add(f_messageLength, buf(0,4))
-- This line does not work as it returns a nil value
local len = tonumber(buf(0,4))
-- This line produces a "bad argument #1 to 'set' (string expected, got nil) error"
-- add message len to info column
pkt.cols.info:set((tostring(len))))
end
end
{rest of code}
Итак, мой вопрос i s как преобразовать тип userdata в целое число, с которым я могу работать?
Это отлично работает. Большое спасибо, это очень помогло мне. – Peter