2

次の例を考えます。

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

2 つのプロトフィールドを宣言しました。しかし、繰り返しグループまたは項目の配列があると想像してください。

メッセージ本文は次のようになります。

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

理想的には、そのグループの Wireshark にサブツリーを作成したいと思います

+ Persons
 + Person1
    name
    age
 + Person2
    name
    age

問題は、これを Lua で構造化する方法がわからないことです。これは、2 つのプロトフィールドを宣言します。

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

4

1 に答える 1

5

同じフィールドを再利用してツリーを構築できることがわかりました。

したがって、擬似コードでは:

begin loop
  subtree= mainsubtree:add(a,buffer())
  subtree:add(f.name, buffer(x,y))
  subtree:add(f.age, buffer(x+name.length,y))
end

そのf.name f.ageため、新しい値で上書きされません。私はそれが単なるプレースホルダーだと思いますProtoField

于 2013-12-12T14:03:43.157 に答える