解决问题(直观的观察数据)
主要是可以是使用wireshark抓包工具中清晰的看见数据包的结构,简单的说就是把自定义协议解析到wireshark的工具中
*** 本文只涉及 wireshark 中lua脚本解析自定义协议的学习***
最后的成果如上图
主要过程和步骤
1. 准备
lua 插件会默认加载这两个路径下的下的*.lua,
- 用户插件目录: APPDATA\Wireshark\plugins (plugins目录可能不存在,手动创建即可)
-
全局插件目录: WIRESHARK\Wireshark\plugins (安装目录)
启动方式:
(确保init.lua 是否使能)/在全局插件目录下有一个特殊文件”init.lua”用于控制Lua相关功能:如果在”init.lua”中将 “disable_lua”设置为”true”,Wireshark将不会继续加载lua脚本插件,并关闭lua引擎。
- 1.分析->重新载入lua插件
- 2.重新启动lua插件
1.lua脚本
-- 协议名称
local NAME = "selfProtocol"
local PORT = 12345
local foo = Proto(NAME, "auto Protocol")
-- 下面定义 foo 解析器的主函数,这个函数由 wireshark调用
-- 第一个参数是 Tvb 类型,表示的是需要此解析器解析的数据
-- 第二个参数是 Pinfo 类型,是协议解析树上的信息,包括 UI 上的显示
-- 第三个参数是 TreeItem 类型,表示上一级解析树
function foo.dissector (tvb, pinfo, tree)
end
-- register this dissector
DissectorTable.get("tcp.port"):add(PORT, foo)
-- 中间主要解决问题不定长数据解析 大小端转换 具体可以参考代码
2.数据包
可以使用wireshark 现场抓,也可以使用已经保存的包
后续有机会继续学习c插件的开发,大概看了一下比较复杂
版权声明:本文为guuci原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。