近期工作中刚好有实现自定义的UDP相关协议,用Wireshark时只能给出原始的字节流,观察起来确实十分不便,为此研究了一下Wireshark的Lua插件实现,在此记录一下。
一、配置执行Lua脚本
首先通过菜单中的"About Wireshark"查看一下Wireshark对应Lua引擎的支持情况,如下图所示:
默认安装路径下会有一个init.lua(Mac环境下的路径在/Applications/Wireshark.app/Contents/Resources/share/wireshark),它是Wireshark启动过程中执行的第一个lua脚本,一般来说我们可以在此文件中添加dofile函数调用其它lua脚本,从而实现lua扩展插件,dofile是lua基础库提供函数,用于调用执行其它lua脚本,例如init.lua默认最后一句是:
dofile(DATA_DIR.."console.lua")
该console.lua的功能是在主菜单中Tool下创建一个Lua子菜单,提供一些Lua Console等功能。
二、解析前的准备
在解析开始前,要先理清一下要解析的协议编码方式。以UDP承载的TLV消息为例,消息格式如下所示:
而TLV字段顾名思义包含Tag、Length和Value三个部分:
我们定一个Tag为1的TLV代表一个value参数&#x