Я новичок в 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 и применения тестового фильтра я обнаружил ошибку в Packet Details:
Lua Error: [string "do..."]:19: Tree item ProtoField/Protocol handle is invalid (ProtoField/Proto not registered?)
Строка 19 соответствует строке t:add(f_packet_length...
.
Кто-нибудь может помочь объяснить эту ошибку?
Заранее спасибо.