Как разобрать поле в уже разобранном пакете в Wireshark, используя Lua? - PullRequest
1 голос
/ 15 ноября 2011

У меня есть протокол, который построен на UDP и который частично анализируется сторонним dll в Wireshark. Теперь я хочу создать собственный диссектор для применения к оставшемуся полю «данные».

Возможно ли это сделать, и я должен использовать диссектора, постдиссектора или слушателя или их комбинацию для достижения этой цели? Или мне нужно переписать сторонний диссектор к тому, который вызывает моего диссектора на оставшиеся данные?

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Как упоминал Джон Цвинк, вы, вероятно, хотите что-то вроде цепочечного диссектора, которым вы можете управлять довольно просто в Lua или C. Для этого вам, безусловно, нужно реализовать свою логику как диссектора.В Lua что-то вроде этого:

do
    --TODO set up your extra "data" field
    local tcp_table = DissectorTable.get("tcp.port")
    local third_party_dissector tcp_table:get_dissector(PROTO_PORT)

    function your_protocol.dissector(tvb, pinfo, tree)
         --call the third party dissector
         third_party_dissector:call(tvb, pinfo, tree)
         --TODO do what you need with the data
    end

    --take over the port your protocol runs over
    tcp_table_add(PROTO_PORT, your_protocol)
end

Держите API под рукой, но имейте в виду, что диссекторы Lua в Wireshark действительно предназначены только для создания прототипов;они менее эффективны, чем эквивалентные диссекторы на основе С, и API имеет тенденцию отставать от нескольких версий от API диссекции на С.

1 голос
/ 17 ноября 2011

Когда я захотел сделать что-то подобное, я обнаружил, что это удивительно сложно и неприятно (по сравнению с развитием диссектора Lua в целом). Здесь есть некоторые упоминания о «цепных диссекторах»: http://wiki.wireshark.org/Lua/Dissectors. Из того, что я прочитал (я никогда не получал свою работу, но я не слишком старался), кажется, легче создавать цепочечных диссекторов в Си, чем в Lua. Тем не менее, попробуйте следовать примеру на этой странице, который, к счастью, имеет достаточно комментариев, чтобы прояснить ситуацию.

...