lua - Wireshark Lua Dissector - 如何设置源和目标

标签 lua wireshark wireshark-dissector

我正在 Lua 中开发 Wireshark 解析器。

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

我的协议(protocol)可以位于不同的其他协议(protocol)之上,例如 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是否需要一个数据类型/类“地址”?或者有没有完全不同的方式来设置数据包信息?

提前致谢!

最佳答案

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

pinfo.src = Address.ip('1.2.3.4')

请注意,这仅设置 Wireshark 中显示的“源”列的文本。底层数据包信息无法修改,IP数据包详细信息将继续显示实际IP地址。

关于lua - Wireshark Lua Dissector - 如何设置源和目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9215170/

相关文章:

javascript - 平滑旋转到一个 Angular

c - 需要帮助用 mingw 编译 jnlua

go - 如何确认来自 Go 客户端的 gRPC 流量是 TLS 加密的

python - 如何使用Python从hexdump中提取数据包信息?

c - 填充子树时出现 Wireshark C 解剖器错误

algorithm - 在二维网格中生成单向路径

linux - 如何在 Linux 上获取/etc/ld.so.conf 中的路径列表

tcp - Protocol Buffer Wireshark 插件

wifi - 在 tshark、tcpdump 或类似文件中导出原始数据包字节?

c++ - 如何为自定义协议(protocol)创建 Wireshark 解析器,而无需重新编译 Wireshark