Я работаю над Wireshark Dissector в Lua.
Я стараюсь предоставить Wireshark как можно больше информации о моем пользовательском протоколе, чтобы использовать доступные инструменты анализа.Поэтому я пытаюсь установить правильный адрес источника и назначения для моего протокола.
Мой протокол может быть поверх других других протоколов, таких как UDP или IEEE 802.15.4.Так что, возможно, даже источник / назначение пакета уже настроен (UDP).
Однако я хочу, чтобы wireshark показывал мои адреса, поэтому я попробовал следующее:
myproto = Proto("myproto"), "My Protocol")
myproto_source = ProtoField.uint16("myproto.src", "Source Address", base.HEX)
myproto.fields = { myproto_source }
function myproto.dissector(buffer, pinfo, tree)
local subtree = tree:add(myproto, buffer(), "My Proto")
subtree:add(myproto_source, buffer(0,2)
-- does not work with error:
-- bad argument #1 to '?' (Address expected, got userdata)
pinfo.src = myproto_source
-- does work, but only adds text, wireshark tools rely on pinfo.src
pinfo.cols.src = tostring(buffer(0,2):uint())
end
udp_table = DissectorTable.get("udp.port")
udp_table:add( 12345, myproto )
wtap_encap_table = DissectorTable.get("wtap_encap")
wtap_encap_table:add(wtap["IEEE802_15_4"], myproto)
может быть тип данных / класс "адрес", который необходимо установить pinfo.src
?Или есть совершенно другой способ установить информацию о пакете?
Заранее спасибо!