iChat AV 在苹果公司 2003 年全球开发者大会上随 G5 处理器和 OS X 10.3 Panther 一同发布,为消费级 Mac 带来了音视频会议功能,常与 iSight 摄像头配合使用。该服务依赖一系列步骤:iChat 首先从 http://configuration.apple.com/configurations/macosx/ichat/1/snatmap.txt 获取一个文本文件,以获得 SNATMAP 服务器的地址;随后通过 UDP 向该服务器查询其公网 IP 和端口;再通过 XMPP 将该信息交换给远端客户端;最后建立点对点的 RTP 媒体流。由于原始 SNATMAP 服务器不再响应,且 OS X 中过时的 TLS 库无法处理服务器的 HTTPS 重定向,连接在第一个 HTTP 请求处失败。

文中指出 iChat AV 常与 iSight 摄像头一起使用,此图展示了使视频捕捉成为可能的原始硬件。

文中详细描述了 SNATMAP 协议步骤,此图展示了作者逆向工程得到的请求‑响应交换。
作者在 LLM 的帮助下通过逆向工程 SNATMAP 协议恢复了该功能,发现服务器在 UDP 端口 5678 上通信,交换一个简单的 16 字节请求和响应,包含一个随机数、客户端的本地 IP 和端口(未被使用)以及服务器观测到的外部 IP 和端口。基于此规格,他们编写了一个最小的 Python UDP 服务器来实现 SNATMAP 交互。为了让 iChat 能访问该服务器,他们在 Leopard 机器的 /etc/hosts 文件中添加了一行,将 configuration.apple.com 映射到运行 SNATMAP 服务器主机的公网 IP,并在轻量级网络服务器上按预期路径提供包含 snatmap://YOUR_SERVER_IP:5678 的 snatmap.txt 文件。

文中说明测试涉及两台 OpenWrt NAT 路由器和一台 Debian 虚拟机(位于同一主机),以提供 XMPP、网页及 SNATMAP 服务,如此实验室照片所示。
测试在一个模拟互联网的实验室中进行:两台运行 OpenWrt NAT 的虚拟机在 Proxmox 主机上,各自为一台古董 Mac 提供私有局域网;同一主机上的另一台 Debian 虚拟机提供 Jabber(ejabberd)XMPP 服务器、用于 snatmap.txt 的网页服务器以及 SNATMAP 服务。利用此环境,作者成功在两台 Mac 之间通过真实互联网进行音视频通话,如聊天会话的截屏所示。该方案在 OS X Leopard 上可与当代 USB 摄像头(例如 Logitech C920)一起使用,作者仍然保持自己的 SNATMAP 服务器运行,以供少数仍希望通过 iChat AV 进行聊天的用户使用,并提供最简的 /etc/hosts 条目 185.52.176.175 configuration.apple.com 作为恢复服务的最简单方式。

此图像对应文中提到的截图,作者利用复原的 SNATMAP 服务在真实互联网上让两台 Mac 进行音视频通话。