抓取 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)能直接抓裸明文。