我完全是 Lua 的新手,这是我第一次尝试编写wireshark 解剖器。
我想通过 Lua 脚本分析没有密码的 SSH。我编写了一个脚本来检测第一步的数据包长度和填充长度。
这是我的脚本:
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...
应该行。
谁能帮忙解释这个错误?
提前致谢。