上海元山建设有限公司网站,培训机构加盟,如何做简单网站,旅游网站设计内容概述
因为公司项目涉及的协议打包#xff0c;协议包内又嵌了一层IP包的奇葩套娃结构#xff0c;为了方便抓包调试#xff0c;利用Wireshark的协议插件开发功能#xff0c;写了一个插件#xff0c;博文记录以备忘。
环境信息
Wireshark 4.0.3
协议结构体套娃图 插件安装…概述
因为公司项目涉及的协议打包协议包内又嵌了一层IP包的奇葩套娃结构为了方便抓包调试利用Wireshark的协议插件开发功能写了一个插件博文记录以备忘。
环境信息
Wireshark 4.0.3
协议结构体套娃图 插件安装
将对应的协议解释文件复制到Wireshark安装目录\plugins版本号 然后通过菜单按钮【分析】-【重新载入Lua插件】即可完成插件加载
完整代码
-- brief XXX Protocol dissector plugin
-- author XXX
-- date 2023.12.03-- create a new dissector
local NAME XXX
local PORT 2998
local foo Proto(NAME, XXX Protocol)local fields foo.fields
fields.ss ProtoField.bytes(NAME .. .ss, SS, base.SPACE)
fields.payload ProtoField.bytes(NAME .. .payload, XXX Payload, base.None)
fields.ic ProtoField.bytes(NAME .. .ic, ic, base.SPACE)-- dissect packet
function foo.dissector (buf, pinfo, tree)if buf:len() 0 or buf:len() 30 then return endlocal subtree tree:add(foo)subtree:add(fields.ss, buf(0,20))subtree:add(fields.ic, buf(buf:len() - 10, 10))subtree:add(fields.payload, buf(20,buf:len() - 30))-- 提取内嵌的数据local raw_data buf(20,buf:len() - 30)-- 内嵌了一层IP协议所以调用内部的Dissector解释Dissector.get(ip):call(raw_data:tvb(), pinfo, tree)
end-- 将协议添加到右键Decode As不写该行只能根据端口啥的绑定具体的协议
DissectorTable.get(udp.port):add_for_decode_as(foo)
DissectorTable.get(tcp.port):add_for_decode_as(foo)
-- register this dissector
DissectorTable.get(udp.port):add(PORT, foo)效果图 参考链接
实战编写 wireshark 插件解析私有协议 Functions For New Protocols And Dissectors Wireshark解析器Dissector插件-Lua 自己动手编写Wireshark Lua插件解析自定义协议 Mika’s tech blog