Prima di tutto, sono del tutto nuovo a Lua del tutto, e questo è il mio primo tentativo di scrivere un dissettore per il filo spinato.Wireshark Dissector in Lua
Il mio protocollo è semplice: un campo di lunghezza di 2 byte, seguito da una stringa di quella lunghezza.
Quando eseguo il codice tramite la console Lua, tutto funziona come previsto.
Quando il codice viene aggiunto alla directory dei plugin Wireshark, ottengo l'errore
Lua Error: [string "C:\Users...\AppData\Roaming\Wireshark..."]:15: calling 'add' on bad self (number expected, got string)
Linea 15 corrisponde è la linea t:add(f_text...
.
Qualcuno può spiegare la discrepanza tra i metodi di esecuzione?
do
local p_multi = Proto("aggregator","Aggregator");
local f_len = ProtoField.int16("aggregator.length","Length",base.DEC)
local f_text = ProtoField.string("aggregator.text","Text")
p_multi.fields = { f_len, f_text }
local data_dis = Dissector.get("data")
function p_multi.dissector(buf,pkt,root)
pkt.cols.protocol = "Aggregator"
local len = buf(0,2):int()
local t = root:add(p_multi,buf(0,len+2))
t:add(f_len,buf(0,2),"Length: " .. buf(0,2):int())
t:add(f_text,buf(2,len),"Text: " .. buf(2,len):string())
end
local tcp_encap_table = DissectorTable.get("tcp.port")
tcp_encap_table:add(4321,p_multi)
end
Noterò che ho utilizzato http: //www.wireshark .org/docs/wsug_html_chunked/wslua_dissector_example.html e http://wiki.wireshark.org/Lua/Dissectors per l'ispirazione. Esistono buone fonti di documentazione API? – Edgemaster
[Capitolo 11] (http://www.wireshark.org/docs/wsug_html_chunked/wsluarm.html) della Guida dell'utente è la documentazione API per l'interfaccia Lua. Le sezioni 11.10, 11.11 e 11.12 sono l'interfaccia funzionale. Oltre a ciò, non c'è davvero alcuna documentazione da avere. Mi sembra che il tuo dissettore debba funzionare come scritto. Il codice mostra che si ottiene un riferimento al separatore di dati ('local data_dis = Dissector.get (" data ")'), ma che non lo si usa. È questo il tuo codice di dissertazione completo? In caso contrario, potreste alterare accidentalmente 't' da qualche parte non mostrato qui. – multipleinterfaces
È il mio codice di dissertazione completo, data_dis è un hang-over degli esempi collegati. – Edgemaster