Skip to content

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 两条路径都覆盖。

相关文档 ​

基于 VitePress 构建 · 教学用途