우선, 나는 Lua를 처음 접했고, 이것은 wireshark 해부학자를 쓰는 나의 첫번째 시도이다.루아에서 Wireshark Dissector
내 프로토콜은 간단합니다. 길이가 2 바이트 인 필드와 그 길이의 문자열이 이어집니다.
루아 콘솔을 통해 코드를 실행하면 모든 것이 예상대로 작동합니다. 코드가 와이어 샤크 플러그인 디렉토리에 추가 될 때
, 나는 오류를
Lua Error: [string "C:\Users...\AppData\Roaming\Wireshark..."]:15: calling 'add' on bad self (number expected, got string)
15 행에 대응을 t:add(f_text...
라인입니다 얻을.
누구나 실행 방법 간의 불일치를 설명 할 수 있습니까?
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
http : //www.wireshark .org/docs/wsug_html_chunked/wslua_dissector_example.html 및 http://wiki.wi.wireshark.org/Lua/Dissectors를 참조하십시오. 좋은 API 문서 소스가 있습니까? – Edgemaster
사용자 가이드의 [Chapter 11] (http://www.wireshark.org/docs/wsug_html_chunked/wsluarm.html)은 Lua 인터페이스의 API 문서입니다. 섹션 11.10, 11.11 및 11.12는 기능 인터페이스입니다. 그 너머에 실제로 어떤 문서도 존재하지 않습니다. 해부학자가 서면으로 일해야하는 것처럼 보입니다. 코드는 데이터 해독기 ('local data_dis = Dissector.get ("data")')에 대한 참조를 얻었지만 사용하지 않는다는 것을 보여줍니다. 이 코드는 완전한 해부학 코드인가요? 그렇지 않다면 우연히 여기에 표시되지 않은 어딘가에't'를 변경했을 수 있습니다. – multipleinterfaces
그것은 내 완벽한 해부학 코드입니다, data_dis는 연결된 샘플에서 행 오버입니다. – Edgemaster