Wireshark 协议插件Lua开发 -数据包内嵌协议的解释

概述

因为公司项目涉及的协议打包,协议包内又嵌了一层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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用unity开发Pico程序,场景中锯齿问题

1、问题 使用unity【非HDR】开发Pico程序&#xff0c;场景中锯齿问题&#xff0c;设置了unity的抗锯齿和渲染方式,及悬挂抗锯齿的脚本&#xff0c;都不能很好的解决项目中图片、文字的锯齿问题&#xff0c;通过摸索找到了妥善的方法 1、修改项目中图片的 GenerateMIpMaps 为勾…

【系统运维】Centos部署Haproxy+Keepalived+RabbitMQ高可用集群

1.RabbitMQ高可用集群方案 &#xff08;1&#xff09;RabbitMQ搭建集群的作用&#xff1a;提高可用性、可靠性和处理能力&#xff0c;确保系统提供高效的消息传递服务 高可用性&#xff1a;通过集群&#xff0c;即使其中一个节点发生故障&#xff0c;其他节点仍然可以继续提供…

常用的git版本控制有哪些工具或网站呢?

Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地进行从很小到非常大的项目的版本管理。Git由Linux之父Linus Torvalds为了帮助管理Linux内核而开发&#xff0c;最后开源了。它具有以下特点&#xff1a; 1.速度、简单的设计&#xff1a;Git对非线性开发模式的强…

粉丝提问:岗位与描述不一致,小公司感觉学不到东西,工作内容就是调试,想辞职

0、粉丝问题&#xff1a; 大哥&#xff0c;我毕业已经工作两个月了&#xff0c;在一家小公司&#xff0c;岗位和描述的不一致&#xff0c;感觉就像调试一样&#xff0c;写代码的机会很少也没人带&#xff0c; 我想转嵌入式&#xff0c;您有什么建议的方向吗&#xff0c;或者是…

【异常】捕获线程池执行任务时产生的异常

前言&#xff1a; 在编写程序时&#xff0c;我们为了充分利用多核CPU、加快接口响应速度&#xff0c;通常会使用线程池来处理请求&#xff0c;但线程池执行任务过程中难免会出现异常&#xff0c;导致请求失败。那如果我们想在任务发生异常后捕获异常&#xff0c;并做一些”善后…

12.03 二叉树简单题2

257. 二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5",&q…

Matlab数学建模详解之发电机的最佳调度实现

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&am…

洛谷 P5708:三角形面积 ← Python 及 C++ 代码比较

【题目来源】https://www.luogu.com.cn/problem/P5708【题目描述】 一个三角形的三边长分别是 a, b, c&#xff0c;请利用海伦公式计算三角形的面积。 计算结果四舍五入&#xff0c;精确到 1 位小数。【输入格式】 第一行输入三个实数 a, b, c&#xff0c;以空格隔开。【输出格…

智能优化算法应用:基于原子搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于原子搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于原子搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.原子搜索算法4.实验参数设定5.算法结果6.参考…

主键虽两个字,但含义丰富;创建新表,Access会自动创建主键,但也可以手动设置

主键是一种特殊类型的索引字段&#xff0c;用于唯一标识表中的每个记录或行。每个主键值必须是表中唯一一个此类主键值。创建新表时&#xff0c;Access会自动创建具有字段名ID和自动编号数据类型的主键。 你需要了解的有关主键的一些信息 一个表只能有一个主键。 主键字段中…

DevEco Studio设置背景图片

我们打开编辑器 左上角菜单 选择 File 下的 Settings 我们选择首选项 Appearance 8 Behavior 下的 Appearance 右侧界面 点击下面的 Background lmage… 新弹出的这个窗口 我们可以鼠标 拖拽它的边 把他拉大一点 当前 我们代码中是没有背景图片的 我们点击入下图指向的三个…

网页表格复制器(油猴插件脚本)

网页表格复制器&#xff08;油猴插件脚本&#xff09; 测试表格 Column 1Column 2Column 3Column 4文本居中文本居右文本居左默认test1-1test1-2test1-3test1-4test2-1test2-2test2-3test2-4 脚本代码 // UserScript // name 网页表格复制器 // namespace http:…

【LangChain实战】开源模型学习(2)-ChatGLM3

介绍 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型&#xff0c;在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上&#xff0c;ChatGLM3-6B 引入了如下特性&#xff1a; 更强大的基础模型&a…

关于业界大语言模型(LLM)开源的一些看法

近期看到阿里开源了720亿参数模型通义千问&#xff0c;已实现“全尺寸、全模态”开源&#xff0c;对这个动作的一些想法&#xff0c;包括好处和缺点 国内大语言模型的开源有许多好处&#xff0c;如下&#xff1a; 1. 提升技术水平&#xff1a;国内大语言模型开源可以使更多的…

Sun Apr 16 00:00:00 CST 2023格式转换

Date date new Date(); log.info("当前时间为:{}",date); //yyyy-MM-dd HH:mm:ss SimpleDateFormat sdf new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); String dateTime s…

leetCode 51.皇后 + 回溯算法 + 图解 + 笔记

按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。每一种解法包…

SpringBoot MyBatis连接数据库 查询数据(注解方式)

创建项目时选择依赖 配置数据库连接 在resources中的 application.properties 配置文件进行连接的配置 #驱动名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver#连接地址 spring.datasource.urljdbc:mysql://10.20.22.11:26954/canteen#数据库用户名 spring.d…

ios 逆向分分析,某业帮逆向算法(二)

接上讲 上次hook 发现自己的数据有点问题。才发现是自己的编辑器识别出问题了。 上篇sub_1029B6898函数hook数据如下: [iOS Device::作业帮 ]-> arg2: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 00000000 37 32 65 64 38 31 32 38…

Docker下搭建MySQL主从复制

目录 主从复制简介 主从复制搭建 主从复制简介 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff0c;主数 据库一般是准实时的业务数据库。 主从复制的作用 做数据的热备。作为后备数据库&#xff0c;主数据库服务器故…