wireshark lua插件开发-- 解析自定义协议

解决问题(直观的观察数据)

主要是可以是使用wireshark抓包工具中清晰的看见数据包的结构,简单的说就是把自定义协议解析到wireshark的工具中
*** 本文只涉及 wireshark 中lua脚本解析自定义协议的学习***
wireshark lua插件开发-- 解析自定义协议_第1张图片
最后的成果如上图

主要过程和步骤

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插件的开发,大概看了一下比较复杂

代码链接
参考链接

你可能感兴趣的:(笔记,lua,wireshark,网络)