Lua Wireshark 脚本编写

我刚开始学习 Wireshark 中的 Lua,但已经陷入了困惑。根据 http://wiki.wireshark.org/LuaAPI/Tvb#tvb:len.28.29,Tvb 有一个名为 "len" 的函数,但是当我在下面代码中调用它时,针对 buf 或 pkt,我得到了一个 "尝试调用方法 'len'(一个数字值)" 的错误。获取 buf 或 pkt 的长度的正确方式是什么(它们都是 "tvb" 对象)?

local myprotocol = Proto("proto","My Protocol Title");
function myprotocol.dissector(buf,pkt,root)
    local test = pkt:len() -- <--抛出错误
点赞
用户1442917
用户1442917

我认为关于参数有一些混淆;根据解析器页面所述:"当被Wireshark调用时,它们会传递(1)数据的TVB缓冲区(Tvb对象)、(2)树的根(TreeItem对象)和(3)数据包信息记录(Pinfo对象)"。根据同一页上的示例:function trivial_proto.dissector(buffer,pinfo,tree)

看起来bufferTvb对象,但pktPinfo对象,因此您应该尝试使用buf:len()而不是pkt:len()

2014-10-30 17:12:09