【发布时间】:2017-03-21 22:04:29
【问题描述】:
我正在用 Lua 编写一个 Wireshark 解剖器。有没有办法获取当前帧在解析器内部接收/传输的网络接口?
【问题讨论】:
标签: wireshark wireshark-dissector
我正在用 Lua 编写一个 Wireshark 解剖器。有没有办法获取当前帧在解析器内部接收/传输的网络接口?
【问题讨论】:
标签: wireshark wireshark-dissector
根据 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
【讨论】:
frame.interface_id字段表示要写入pcapng文件的接口的值,与{tshark,dumpcap} -D输出完全不对应。指定的第一个接口将分配索引 0,下一个索引 1,依此类推。 frame.interface_id 的这种行为是否会发生变化还有待观察,但我对此表示怀疑;因此你只需要知道它的价值代表什么。
Proto.dissector(buffer, pinfo, tree) 函数内)。更具体地说,我想使用该值来修改 pinfo.cols.info 中显示的内容。