Като цяло съм нов в Lua и това е първият ми опит да напиша дисектор на wireshark.
Искам да анализирам SSH без шифър чрез Lua скрипт. Пиша скрипт за откриване на дължината на пакета и дължината на подложката за първата стъпка.
Ето моят скрипт:
do
local p_test = Proto("test","Test.");
local f_packet_length = ProtoField.uint32("packet_length")
local f_padding_length = ProtoField.uint8("padding_length")
p_test.fields = {
f_packet_length,
f_padding_length
}
function p_test.dissector(buf,pkt,root)
local offset = 0
local buf_len = buf:len()
local t = root:add(p_test, buf:range(offset))
t:add(f_packet_length,buf:range(offset,4))
offset = offset+4
t:add(f_padding_length,buf:range(offset,1))
offset = offset+1
end
local tcp_table = DissectorTable.get("tcp.port")
tcp_table:add(22,p_test)
end
След като пусна кода през Evalutate Lua и приложих тестовия филтър, установявам, че има грешка в подробностите за пакета:
Lua Error: [string "do..."]:19: Tree item ProtoField/Protocol handle is invalid (ProtoField/Proto not registered?)
Ред 19 съответства на ред t:add(f_packet_length...
.
Може ли някой да помогне с обяснението на тази грешка?
Благодаря предварително.