2014-10-30 8 views
2

Я только начинаю работать в Lua для wirehark, и я уже озадачен. Согласно http://wiki.wireshark.org/LuaAPI/Tvb#tvb:len.28.29, Tvb имеет функцию «len», но когда я вызываю ее на buf или pkt в приведенном ниже коде, я получаю ошибку «attemt to call method» len '(number value). Каков правильный способ получить длину buf или pkt (которые являются объектами «tvb»)?Lua Wireshark Scripting

local myprotocol = Proto("proto","My Protocol Title"); 
function myprotocol.dissector(buf,pkt,root) 
    local test = pkt:len() -- <--Throws error 

ответ

1

Я думаю, что есть некоторые путаницы в отношении параметров; в соответствии с Dissectors page: «При вызове Wireshark они передаются (1) буфером TVB данных (объект Tvb), (2) корнем дерева (объект TreeItem) и (3) записью информации о пакете (Pinfo объект) «. В примере на той же странице: function trivial_proto.dissector(buffer,pinfo,tree).

Оказывается, что buffer является Tvb объект, но pkt является Pinfo объектом, так что вы, вероятно, следует попробовать buf:len() вместо pkt:len().

Смежные вопросы