【问题标题】:Wireshark Lua Dissector - How to set source and destinationWireshark Lua Dissector - 如何设置源和目标
【发布时间】:2012-02-09 16:54:40
【问题描述】:

我正在 Lua 中开发 Wireshark Dissector。

我尝试尽可能多地提供有关我的自定义协议的信息,以利用可用的分析工具。因此,我正在尝试为我的协议设置正确的源地址和目标地址。

我的协议可以位于不同的其他协议之上,例如 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 的数据类型/类“地址”?还是有完全不同的方式来设置数据包信息?

提前致谢!

【问题讨论】:

    标签: lua wireshark wireshark-dissector


    【解决方案1】:

    pinfo.src 采用 Address 对象(这是一个 IP 地址;不是 16 位整数)。示例用法:

    pinfo.src = 地址.ip('1.2.3.4')

    请注意,这只会设置 Wireshark 中显示的“源”列的文本。底层数据包信息不能修改,IP数据包详情会继续显示实际IP地址。

    【讨论】:

    • 不是我所希望的,但非常有帮助的解释!谢谢!
    【解决方案2】:

    只是一个建议 - 我不是 LUA 专家:

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

    也许??

    【讨论】:

    • 它必须是pinfo.cols.src = buffer(0,2):uint(),它实际上设置了列信息,即使它仍然无法被wireshark工具识别(即流程图)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多