如何向 Lua DissectorTable 中添加内容?
2018-7-11 13:50:30
收藏:0
阅读:135
评论:2
我正在为 Wireshark 编写一个复杂协议的 Lua 解析器。该协议包含一个消息头,其中包括 msgType 字段。我想为每种消息类型编写子解析器,并将每个子解析器存储在单独的源文件中。
我的顶层脚本是 general.lua,它解析消息头并创建解析器表:
DissectorTable.new("myProtocol.Message")
dofile(DATA_DIR.."cplane.lua")
cplane.lua 是消息类型 "cplane" 的子解析器,并包含以下代码:
my_dissector_table = DissectorTable.get("myProtocol.Message")
my_dissector_table:add(0x02, myProtocol_cplane_proto)
这两个脚本都在 Wireshark 插件目录的同一个子目录中。
当我加载插件时,出现错误:
Lua: Error during loading:
[string "C:\Program Files (x86)\Wireshark\plugins\2.4...."]:9: bad argument
#1 to 'get' (DissectorTable_get: no such dissector_table)
Lua: Error during loading:
[string "C:\Program Files (x86)\Wireshark\plugins\2.4...."]:170: bad
argument #1 to 'dofile' (dofile: file does not exist)
我该如何解决?是脚本加载顺序的问题吗?dofile() 调用是必需的吗?
点赞
用户10716389
, or checking if the file really exists or not.
2019-06-24 13:40:23
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

在插件目录中加载所有脚本,因此无需使用
dofile。但是,加载顺序不固定(至少未记录为固定)。当前,Lua插件在其他解析器之后加载,因此尝试在“全局范围”中查找解剖表将仅适用于内置解剖器,例如tcp.port:local myproto = Proto("myproto", "My Protocol") function myproto.dissector(tvb, pinfo, tree) ... end -- 注册内置解剖表 DissectorTable.get("tcp.port"):add(1234, myproto)要在自定义解剖器表中注册,必须推迟此注册。在C解剖器中,您将在
proto_reg_handoff_PROTOABBREV(其中PROTOABBREV应相应地替换)中放置注册,但是在Lua中没有这样的函数。您可以获得的最接近的是“init”例程(
proto.init的属性,proto.init)。这些在打开捕获文件之前(在分解任何数据包之前)调用。例如:function myproto.init() DissectorTable.get("your-custom-table"):add(1234, myproto) end