使用Wireshark3.2.x分析MQTT协议
一、概述
由于wireshark抓MQTT协议的包只能显示到TCP层次,要分析MQTT协议,就要添加wireshark插件——Wireshark Generic Dissector 官网 http://wsgd.free.fr/。
安装支持MQTT的插件前是这样的:
*不安装插件的方法
从 Wireshark 3.2.2 开始,编辑->首选项->Protocols->MQTT 中设置端口:
MQTT的默认端口是1883,但是我这里MQTT服务器开启的监听端口是1884,所以我修改了以后,抓取的某个 CONNECT 的报文如下:
二、下载和配置
2.1 下载 generic
首先第一步下载 generic.dll
(Windows)或 generic.so
(Linux),并放到 Wireshark的插件目录(Global Plugins folder或者Personal Plugins folder,可以通过菜单栏Help -> About Wireshark -> Folders查看)。
generic.dll
下载地址:http://wsgd.free.fr/download.html,我选择版本 3.2.x
对应的下载。
2.2 generic.dll
解压到?
如果你的全局插件文件夹有 epan 这个子目录,就把 generic.dll
放入其中。
之后,你重启 Wireshark,通过 Help -> About Wireshark -> Folders 可以看到 generic.dll 出现在了插件列表中:
2.3 下载mqtt规则文件
MQTT规则文件可以在这里下载:http://false.ekta.is/2011/06/mqtt-dissector-decoder-for-wireshark/#
2.4 添加环境变量
最后添加系统环境变量:WIRESHARK_GENERIC_DISSECTOR_DIR
,指定为上面两个规则文件的目录。
或者把上面两个文件放到下面其中一个目录下:
- wireshark profiles directory (e.g. C:\Users<user>\AppData\Roaming\Wireshark\profiles)
- wireshark data directory (e.g. C:\Users<user>\Documents)
- wireshark plugin directory (e.g. C:\Program Files\Wireshark\plugins\3.2)
- wireshark main directory (e.g. C:\Program Files\Wireshark\3.2)
三、修改mqtt3.1.wsgd
于使用的端口不同,所以还需要修改过滤文件的端口(原本是1883)。使用编辑器打开mqtt3.1.wsgd文件。把PARENT_SUBFIELD_VALUES
修改成你的MQTT服务器监听端口,保存。
# Specify when the dissector is used. 从第10行开始
PARENT_SUBFIELD tcp.port
PARENT_SUBFIELD_VALUES 1884
显示效果和不使用插件时有所差异:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
· 如何统计不同电话号码的个数?—位图法
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析
· 三维装箱问题(3D Bin Packing Problem, 3D-BPP)
· Windows上,10分钟构建一个本地知识库
· 使用 AOT 编译保护 .NET 核心逻辑,同时支持第三方扩展
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
2019-12-15 一步步分析Java深拷贝的两种方式-clone和序列化