如何为Lua Wireshark解剖器创建Protofield子数组

给出下面的示例:

local f= mycoolprotocol.fields
f.Length = ProtoField.uint32("MCP.Length","Length",base.DEC)
f.MsgType = ProtoField.uint16("MCP.MsgType","MsgType",base.DEC)

我声明了2个Protofields。但是想象一下,我有一个重复的组或一个项目数组:

消息体看起来像这样:

struct person
{
  int16 age;
  string name;
}
person[] p = new person[2];

理想情况下,我希望为该组在 Wireshark 中创建一个子树。

+ Persons
 + Person1
    name
    age
 + Person2
    name
    age

问题是我不知道如何在 Lua 中构建它。这声明了2个protofields:

f.name = Protofield.string("MCP.name","name","Text")
f.age = ProtoField.uint16("MCP.age","age",base.DEC)

但是我想创建一个动态数组的组,以便我可以执行以下操作:

subtree:add_le( f[0].name, buffer(x,y))

所以,是否有 Protofield.ProtoFieldArray ? 是可能的吗?欢迎提出任何其他想法。

谢谢。

另外,作为参考: http://ask.wireshark.org/questions/28038/how-to-create-a-protofield-sub-array-in-lua

点赞
用户855421
用户855421

原来我可以重复使用相同的字段来构建树形结构。

因此,伪代码如下:

开始循环
  子树=主子树:add(a,buffer())
  子树:add(f.name, buffer(x,y))
  子树:add(f.age, buffer(x+name.length,y))
结束

所以 f.namef.age 不会被新值覆盖。我想这只是 ProtoField 的占位符。

2013-12-12 14:03:43