wireshark自定义lua dissector显示metaData列

想要在wireshark的列视图中显示"append_text"metaData,实现wireshark自定义lua dissector。 这样便于其他人更好地了解情况。

即在这种情况下,我希望msgType列显示"00 (heartbeat)",而不仅仅是"0"。

或者还可以通过其他方法在列视图中公开"Heartbeat"metaData (有效地从我的自定义分析器中公开append_text)。

非常感谢!

custom lua dissector

点赞
用户2755698
用户2755698

首先,不需要使用 append_text。假设 msgType 是一个 1 字节的无符号字段,可以这样声明:

local msg_type_vals = {
    [0] = "Heartbeat",
    [1] = "Foo",
    [2] = "Bar",
    ...
}

msgType = ProtoField.uint8("aquis.msgType", "Message Type", base.DEC, msg_type_vals)

...

tree:add(msgType, tvbuf(offset, 1))

现在,如果将该字段应用为列,您会看到文本 Heartbeat 而不是 0

如果要同时显示数值和文本值,可以按照以下步骤操作:

  1. 添加 2 个相同字段的列。如果字段已被添加,则右键单击字段后似乎无法通过“应用为列”;但是,您仍然可以从“编辑->首选项->列->+”中添加它

  2. 从 Wireshark 的“帮助->关于 Wireshark->文件夹->个人配置”中找到您的个人首选项目录。

  3. 退出 Wireshark

  4. 使用您选择的编辑器,打开个人配置文件夹中的 preferences 文件;或者,如果您使用的是非默认配置文件,则打开相应配置文件中的 preferences 文件。

  5. 通过搜索 gui.column.format,找到指定列格式的行。

  6. 您会注意到,您自定义字段的两个列都将采用以下形式:

    "Message Type", "%Cus:aquis.msgType:0:R",

将其中一个更改为:

    "Message Type", "%Cus:aquis.msgType:0:U",

R 的含义是指这是一个已解决的字段,这是默认值;U 的含义是指这是一个未解决的字段。前者将给您 Heartbeat,而后者将给您 0。不幸的是,目前没有办法从 Wireshark 的列首选项对话框中更改此设置,因此需要手动编辑文件才能实现此设置。

  1. 保存文件并重启 Wireshark。现在应该可以看到解决值和未解决值。
2020-12-17 20:42:47