Trước hết, tôi mới đến Lua hoàn toàn, và đây là nỗ lực đầu tiên của tôi trong việc viết một Wireshark dissector.Wireshark Dissector trong Lua
Giao thức của tôi rất đơn giản - trường có độ dài 2 byte, theo sau là một chuỗi có độ dài đó.
Khi tôi chạy mã thông qua bảng điều khiển Lua, mọi thứ hoạt động như mong đợi.
Khi mã được thêm vào thư mục plugins Wireshark, tôi nhận được lỗi
Lua Error: [string "C:\Users...\AppData\Roaming\Wireshark..."]:15: calling 'add' on bad self (number expected, got string)
Dòng 15 tương ứng là dòng t:add(f_text...
.
Có ai có thể giải thích sự khác biệt giữa các phương pháp thực thi không?
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
Tôi sẽ lưu ý rằng tôi đã sử dụng http: //www.wireshark .org/docs/wsug_html_chunked/wslua_dissector_example.html và http://wiki.wireshark.org/Lua/Dissectors để lấy cảm hứng. Có bất kỳ nguồn tài liệu API nào tốt không? – Edgemaster
[Chương 11] (http://www.wireshark.org/docs/wsug_html_chunked/wsluarm.html) của Hướng dẫn Người dùng là tài liệu API cho giao diện Lua. Các phần 11.10, 11.11 và 11.12 là giao diện chức năng. Ngoài ra, không có bất kỳ tài liệu nào để có. Có vẻ như tôi là người mổ xẻ của bạn nên làm việc như được viết. Mã của bạn cho thấy rằng bạn nhận được một tham chiếu đến trình phân tích dữ liệu ('local data_dis = Dissector.get (" data ")'), nhưng bạn không sử dụng nó. Đây có phải là mã mổ xẻ hoàn chỉnh của bạn không? Nếu không, bạn có thể vô tình thay đổi 't' ở đâu đó không được hiển thị ở đây. – multipleinterfaces
Đó là mã phân tích hoàn chỉnh của tôi, dữ liệu_dis là một hang-over từ các mẫu được liên kết. – Edgemaster