2012-02-12 20 views
1

我正在爲Lua編寫一個解析器,用於定製二進制協議。我已經定義了三個字段類型:wireshark中的數據包數據未使用我的自定義解剖器點擊突出顯示

f.field1= ProtoField.bytes("myproto.field1","Field 1",base.HEX) 
f.field2= ProtoField.uint16("myproto.field2","Field 2",base.HEX) 
f.field3= ProtoField.bytes("myproto.field3","Field 3",base.HEX) 

這些字段添加到樹這樣的:

subtree:add(f.field1,buf(offset,4)) 
offset = offset +4 
val2=buf(offset,2):uint() 
-- some logic around populating f2_description omitted 
offset=offset+2 
subtree:add(f.field2,val2):append_text(" (" ..f2_description ..")") 
subtree:add(f.field3,buf(offset,2)) 

現在,當我打開Wireshark的和解剖數據包的樹點擊字段1或字段3,我看到所選擇的數據被高亮顯示在原始包六角視圖(底部最面板): field selection is highlighted

,但它不是對字段2的情況下: enter image description here

我在做什麼錯?

+0

ask.wireshark.org提供了一個有用的參考答案:http://ask.wireshark.org/questions/8982/packet-data-in-wireshark-not-highlighted-on-click-using-my-定製解剖器 – Konrads 2012-02-26 08:28:03

回答

1

Wireshark的解剖做選擇正確的領域,如果樹的第二個參數:增加(..,..)是(或者至少,直接引用)一類的UserData值..

在您例如,buf()是UserData,但是val2不是。

試試這個:

subtree:add(f.field2,buf(offset,2):uint()):append_text(" (" ..f2_description ..")") 

在另一方面,你不會寫了ISO8583解剖器,你會嗎?

+0

不,它不是ISO8583 :) – Konrads 2012-02-26 08:28:37

相關問題