XMPP
💬 即时通讯协议(Jabber),基于 XML 流,r0capture 通杀。
XMPP 特征
XMPP 是长连接 XML 流协议,客户端与服务端持续交换 XML 节(stanza):
xml
<!-- 流头 -->
<stream:stream xmlns:stream="http://etherx.jabber.org/streams">
<!-- 认证 -->
<auth mechanism="PLAIN">AGFsaWNlAHBhc3MxMjM=</auth>
<!-- 消息 -->
<message to="bob@example.com" type="chat">
<body>Hello!</body>
</message>
<!-- 在线状态 -->
<presence><show>chat</show></presence>
</stream:stream>XMPPS(XMPP over TLS)下走 SSL,r0capture 经 SSL_read/SSL_write 抓到明文 XML。
抓到的内容
| 方向 | function | 内容 |
|---|---|---|
| 发送节 | SSL_write | <message>...</message> 等 |
| 接收节 | SSL_read | 服务端推送的消息/IQ/presence |
XML 文本,hexdump 直接可读。
长连接特征
XMPP 是长连接,一个 SSL 会话持续很久,多次收发共用同一 ssl_session_id。pcap 里会被关联成一条很长的 TCP 流,包含整个会话的所有 stanza。
STARTTLS 升级
部分 XMPP 服务器先走明文协商,再 STARTTLS 升级到 TLS。升级前的明文由 HTTP_send/HTTP_recv 抓,升级后由 SSL_read/SSL_write 抓——r0capture 两条路径都覆盖。