Skip to content

抓取 MQTT 流量 ​

📡 MQTT(物联网消息协议)抓取,常见于 IoT/智能硬件 App。

MQTT 特点 ​

  • 跑在 TCP 上(通常 8883=MQTTS over TLS,1883=明文)
  • 轻量发布/订阅模型
  • 长连接

r0capture 抓取 ​

MQTTS (8883) 走 TLS,r0capture SSL hook 覆盖:

bash
r0capture -p -mqtt.pcap com.example.app

抓到的样子 ​

[SSL_write] 192.168.1.5:54321 --> broker.example.com:8883
<CONNECT 报文: client id, username, password>

[SSL_read] broker --> client
<CONNACK 报文: 0x00=接受>

[SSL_write] <PUBLISH: topic, payload>
[SSL_read]  <PUBLISH: 订阅的 topic 消息>

MQTT 报文头第一个字节是报文类型(CONNECT=1, CONNACK=2, PUBLISH=3...)。

长连接保活 ​

MQTT 是长连接 + 心跳(PINGREQ/PINGRESP),pcap 里会持续看到心跳包,属正常。

1883 明文 ​

如果用 1883 端口(无 TLS),r0capture 的 Java socket hook(SocketOutputStream)能直接抓裸明文。

相关文档 ​

基于 VitePress 构建 · 教学用途