使用自定义 LUA Dissector 分解的数据包的 JSON 导出

我使用 Lua 编写了一个自定义 Wireshark 分解器,它成功地分解了预期结果的数据包,当它被安装时。

然而,当我尝试将“Export Packet Dissections”“作为 JSON”导出时,我自定义分解器处理的所有字段都会导出如下所示:

"_ws.lua.text": ""

这里是更广泛的片段:

    "_ws.lua.fake": "",
    "my_protocol": {
      "_ws.lua.text": {
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": ""
      },
      "_ws.lua.text": {
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": "",
        "_ws.lua.text": ""
      },
      "_ws.lua.text": ""

我需要做什么才能正确地导出由我的自定义分解器处理的字段?

点赞
用户7685112
用户7685112

我曾经遇到了同样的问题,我调整了解析器因此摆脱了 "_ws.lua.text",但不是伪造的。我的解析器以前是这样的:

my_proto=Proto("my_proto", "我的自定义协议", "我的自定义协议")
*一些内容*
local my_proto_packet = tree:add(my_proto, buffer(),"我的自定义协议");
value = buffer(curPos,4):uint();
local valueNode = my_proto_packet:add_le(buffer(curPos, 4), "值 = " .. value)

"值 = 3.8" 字符串在 Wireshark 中被显示出来。

我添加了一个 ProtoField 变量,并将其添加到 proto.fields 数组中。然后更改了 valueNode 的定义,现在它看起来像这样:

my_proto=Proto("my_proto", "我的自定义协议", "我的自定义协议")
local field_myproto_intfield = ProtoField.uint32("myproto.intfield", "整数", base.DEC)
my_proto.fields = { field_myproto_intfield }
local my_proto_packet = tree:add(my_proto, buffer(),"我的自定义协议");
*一些内容*

valueNode:add(field_myproto_intfield, buffer(curPos, 4))
2019-12-05 13:45:34