Wireshark Lua Dissector - Как установить источник и пункт назначения - PullRequest
1 голос
/ 09 февраля 2012

Я работаю над 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?Или есть совершенно другой способ установить информацию о пакете?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

pinfo.src принимает объект Address (который является IP-адресом, а не 16-разрядным целым числом). Пример использования:

pinfo.src = <b>Address.ip('1.2.3.4')</b>

Обратите внимание, что это только устанавливает текст столбца «Источник», показанного в Wireshark. Базовая информация о пакете не может быть изменена, и детали IP-пакета будут продолжать отображать фактический IP-адрес.

0 голосов
/ 09 февраля 2012

Просто предложение - я не волшебник LUA:

pinfo:col.src = buffer(0,2):uint()

возможно ??

...