0

lua スクリプトでプロトコルの Dissactor を作成しました。Dissactor は正常に動作しています。しかし、dissactor ファイルの 1 つの更新を知りたいです。

p_abcd = Proto("abcd", "ABCD")

さまざまな種類のメッセージのテーブルを作成しました。以下は表です -

 local message_types = {
 [1] = "MAC ID", 
 [2] = "AP MODEL NAME",
 [3] = "AP SERIAL NUMBER",
 [4] = "CAUSE",
 [5] = "AP STATE",
 [6] = "AP SOFTWARE VERSION",
 [7] = "AP_IP_ADDRESS"
}

以下は、このプロトコル用に作成し、これをフィールドとして登録した 1 つのプロトフィールドです。

local attribute_type = ProtoField.string("abcd.message_type", "Attribute Type")  
p_abcd.fields = {attribute_type}
tree_attribute:add(attribute_type, data(index, 2), message_types[data(index, 2):int()])

Wiresharkで任意のメッセージ フィールドにフィルタを適用すると、すべてのメッセージ タイプのフィルタ値として「abcd.message_type = some_valve」が表示されます。

メッセージタイプごとに個別のプロトフィールドを作成せずに、MAC ID の「abcd.mac_id = some_value」のように、さまざまなメッセージタイプに従ってこのフィルター値を表示したいと考えています 。

message_types テーブルを使用してこれを行うことは可能ですか?

4

1 に答える 1

0

あなたの質問を理解しているかどうかはわかりませんが、通常、2 バイト フィールドの場合、次のようになります。

local attribute type = ProtoField.uint16("abcd.message_type", "Attribute Type", base.DEC, message_types, 0x0000, "Optional Message type description")
p_abcd.fields = {attribute_type}

tree_attribute:add(attribute_type, data(index, 2))

(詳細については、 ProtoFieldを参照してください。)

次に、MAC ID と等しいメッセージ タイプを探している場合は、「abcd.message_type eq 1」の Wireshark 表示フィルタを適用します。これがあなたが探していたものでない場合は、質問を明確にしてください。

于 2016-08-11T20:38:55.600 に答える