【MQTT学习笔记六】通过Wireshark去抓取和分析MQTT消息

时间:2024-03-13 18:41:58

  Wireshark默认是只显示到TCP层,要分析MQTT的消息,需要先安装插件。参考:https://blog.csdn.net/yannanxiu/article/details/71310723

  懒得去看的同学可以直接按照以下步骤操作:

1)下载generic.dll:http://wsgd.free.fr/download.html,放到Wireshark的C:\Program Files\Wireshark\plugins\2.4.4目录下

2)下载MQTT规则文件:http://false.ekta.is/2011/06/mqtt-dissector-decoder-for-wireshark/#,放到Wireshark主目录C:\Program Files\Wireshark 下

3)运行Wireshark就可以了。可以在过滤器中直接输入mqttv31或者ip来过滤MQTT的协议消息

MQTT报文是包在TCP中,作为TCP的payload出现的,具体分析的时候要清楚MQTT各种报文中各个字节的含义。以MQTT CONNECT报文为例:

【MQTT学习笔记六】通过Wireshark去抓取和分析MQTT消息

固定报头:

10 表示:connect报文

3b表示:剩余长度59

可变报头:

00 04 4d 51 54 54表示:MQTT

04 表示:协议级别,3.1默认为4

02表示:连接标志

【0000 0010:8个bit分别表示不需要用户名,不需要密码,不保留遗嘱消息,遗嘱的QoS没有遗嘱所以两位为0,遗嘱标志为0,清理会话,保留位】

00 14 表示:保持连接时间为20s,非0情况下,1.5倍时间内没有收到客户端控制保温,则必须断开连接。0表示连接不会断开

有效载荷:

Client id