如何改进创建基于Lua的Wireshark dissector的工作流程
我最近在Lua for Wireshark中创建了一个解剖器来处理我的UDP协议,但这个工作流程很恶心。它包括在我的编辑器中编辑自定义的Lua文件,然后双击示例捕获文件启动Wireshark来查看更改。如果出现错误,Wireshark会通过对话框或树形分析子面板中的红线来通知我。然后我会重新编辑我的自定义Lua文件,关闭Wireshark实例,再次双击我的示例捕获文件。这就像编译C文件,每次只能看到一个编译器错误。
有没有更好(更快)的方法来查看我的更改,而不必一直重新启动Wireshark?
当时,我使用的是启用了Lua的Windows Wireshark 1.2.9。
原文链接 https://stackoverflow.com/questions/3613870
最好的自动化方式是使用命令行。是的,使用 tshark 而不是加载 gui 东西。
如果您的 lua 脚本名为"proto.lua",并定义了一个名为"MyProto"的协议,使用端口8888,您可以使用以下命令测试您的分析器:
tshark -X lua_script:proto.lua -O MyProto -V -f "port 8888"
- -V 选项使 tshark 打印所有协议的所有信息。
- -O 选项将 -V 选项过滤,使其仅显示列表中(CSV)协议的所有信息。
- -f 选项过滤不符合规则的所有数据包。在这种情况下,筛选任何不来自正确端口的数据包。
最新的Wireshark版本带有一个原始控制台,可用于运行lua脚本。找到方法是在“工具”下的“Lua”选项中的“评估”。从那里,你应该能够通过运行 dofile()
重新加载你的解析器。你还需要删除以前版本的解析器。
以下是基于TCP的解析器示例。
local tcp_dissector_table = DissectorTable.get("tcp.port")
tcp_dissector_table:remove(pattern, yourdissector)
yourdissector = nil
dofile("c:/path/to/dissector.lua")
我建议将此代码放入文件中的函数中。
现在这个答案存在一个问题:如果你的脚本创建了一个Proto对象,似乎你不能使用相同的ID再次创建它。 Proto类的构造函数调用了C函数proto_register_protocol()
(请参见epan/wslua/wslua_proto.c
)。我找不到任何注销协议的lua函数。事实上,我甚至找不到一个注销协议的C函数。
我已经遇到了同样的问题很长时间了,所以我决定创建一个工具来帮助我简化那个可怕的工作流程。这个工具就是Wirebait。它旨在让您在不使用 Wireshark 的情况下运行 Lua 解析器。
它非常快速和容易安装和使用。您只需加载 Wirebait 模块并在分析器脚本的顶部添加一个五行程序片段即可。如果您使用像 ZeroBrane Studio 这样的 IDE,Wirebait 允许您在编写和调试代码的同时实时运行,不需要 Wireshark。如果您甚至没有 pcap 文件,可以使用表示您想要解析的数据的十六进制字符串。
- 如何在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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你可以编写一个简单的包装函数,让 Wireshark 加载它,然后通过
dofile()
从磁盘加载真正的文件。这可能会“欺骗”Wireshark,始终重新加载你的 Lua 代码,直到你更熟悉它并删除此 hack。