如何在Wireshark Lua脚本中根据用户数据创建电视范围对象

时间:2019-04-16 09:33:05

标签: lua wireshark wireshark-dissector

我正在编写一个用于剖析自定义协议的lua脚本。协议1编码的数据少于8位。我仍然想在wireshark中突出显示数据来自的字节。

如果我使用tree:add(Protofield,tvb:range),则突出显示字节,因为我假设要突出显示的信息字节来自tvbrange。

但是,如果我在将数据馈入树之前对其进行处理(作为普通int而不是tvb范围),则不会突出显示字节。树不知道...

是否可以根据普通数据创建范围对象?

或者作为替代:是否有一种方法可以传递tree:add函数突出显示哪些字节?

local detections = 22;
subsubtree:add_le(TimeLag, tvb_sub_buffer(6,4)) -- is highlighting the bytes
subsubtree:add_le(Detections, detections) -- is NOT highlighting the bytes

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您尝试突出显示字节并处理来自这些字节的数据,则可以使用以下方法:

subsubtree:add_le(TimeLag, tvb_sub_buffer(6,4))

local detections = manipulate_detections(tvb_sub_buffer(10,2):le_uint())
subsubtree:add_le(Detections, tvb_sub_buffer(10,2)):set_text("Detections: " .. detections)

或者,您可以根据需要进一步设置字符串的格式,例如:

subsubtree:add_le(Detections, tvb_sub_buffer(10,2)):set_text(string.format("Detections: %d", detections))

有关向解剖树添加信息的更多信息,请参见Section 11.7 of the Wireshark Developer's Guide,有关string.format()和朋友的更多信息,请参见The Lua Book中的Section 20 - The String Library