【问题标题】:Get network interface in Wireshark Lua dissector在 Wireshark Lua 解析器中获取网络接口
【发布时间】:2017-03-21 22:04:29
【问题描述】:

我正在用 Lua 编写一个 Wireshark 解剖器。有没有办法获取当前帧在解析器内部接收/传输的网络接口?

【问题讨论】:

    标签: wireshark wireshark-dissector


    【解决方案1】:

    根据 Wireshark Display Filter Reference 页面,有一个名为 frame.interface_id 的帧字段,从 Wireshark 1.8.0 开始可用,它应该为您提供接口的 ID。如果从枚举中减去 1,则 ID 似乎与dumpcap -D(或tshark -D)的结果中给出的枚举相匹配。换句话说,在各自的-D 输出中,dumpcap 和 tshark 都从 1 开始计数接口,而 Wireshark 似乎从 0 开始计数。这种不一致对我来说似乎是一个错误,我建议针对这种不一致提交一个 Wireshark bug report行为。

    EDIT(因为似乎不可能使用 cmets 以连贯的方式对其进行格式化):

    要访问该字段,您可以使用字段提取器,请参阅:https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Field.html

    例如:

    local fe_interface_id = Field.new("frame.interface_id")
    
    function foo.dissector(buffer, pinfo, tree)
        local f_interface_id = fe_interface_id()
        pinfo.cols.info:append(", Interface ID=" .. tostring(f_interface_id))
    end 
    

    【讨论】:

    • 仅供参考:我已提交错误报告:bugs.wireshark.org/bugzilla/show_bug.cgi?id=13496
    • 正如bug cmets所指出的,frame.interface_id字段表示要写入pcapng文件的接口的值,与{tshark,dumpcap} -D输出完全不对应。指定的第一个接口将分配索引 0,下一个索引 1,依此类推。 frame.interface_id 的这种行为是否会发生变化还有待观察,但我对此表示怀疑;因此你只需要知道它的价值代表什么。
    • 感谢您的回答和错误报告。你能告诉我如何访问解剖器中的帧场吗? (即在Proto.dissector(buffer, pinfo, tree) 函数内)。更具体地说,我想使用该值来修改 pinfo.cols.info 中显示的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多