wireshark-lua解析自定义协议
前言
wireshark 支持使用 lua 脚本来解析自定义的协议。
最近因工作需要接触了一下。我的需求是 不细抠lua的语法,而要快速的使用上,将我的协议数据解析出来,显示各项信息方便分析数据。
现稍作整理,分享给和我有相似需要的伙伴。
一、Lua概览
和其他语言可能不太一样的:
- 以行分割,不需要分号
- 注释符号为 --(两个减号)
- 不等于是 ~=
- 没有++和+=,需要显示写 i = i + 1
- 变量有两种,全局和local,带local声明的就是局部的
- 函数调用使用 a:fun(),即冒号
代码块使用 缩进和end 来划分:
-
if-else
if i == 0 then a = 1 end elseif i == 1 then variable = 300 else variable = 400 end
-
for
for i = 0, 10, 1 do print(i) end
-
while
while i < 10 do i = i + 1 end
-
函数
function sum(arg1, arg2) return arg1 + arg2 end
二、脚本使用
1. 引入
旧版本的wireshark需要手动引入,而新的会自动加载。我的版本是 3.4.4,会自动加载。先找到wireshark的安装目录: 帮助–>关于Wireshark –>文件夹 可以查看所有的路径
重新加载各种lua脚本快捷键是: ctrl+shift+L
-
自动加载:
将自定义的lua脚本放到 xxx \ Wireshark \ plugins 下就可以了,这个目录下的子目录也都会扫描,按一下快捷键看有没有加载就知道了。没有就要手动引入
-
手动加载
自定义的脚本可以就放在 plugins,随意。在安装目录下找到 init.lua文件,这是脚本的入口。在文件的最后引入你的文件--DATA_DIR是 init.lua所在路径,..是字符串连接符 --也可以用绝对路径,只要找得到就行 dofile(DATA_DIR.."mylua/mypro.lua")
2.内容
-
主要框架
-- 定义自己的协议,name和description,未添加字段