案例
whatsapp-web-reveng:记录旧版 WhatsApp Web 协议
记录并重新实现 WhatsApp Web 在浏览器会话镜像已配对手机时期使用的 WebSocket 协议:二维码配对、Curve25519/HKDF 密钥建立、经 AES/HMAC 保护的二进制报文、基于字符串令牌表的节点编码,以及端到端媒体加密。Python 后端、Node.js 中继和浏览器前端把已登录会话的报文解码成可查看的 JSON,README 还列出了 Baileys、go-whatsapp 等独立再实现。这是 WhatsApp 2021 年多设备架构之前的旧一代协议,不能当作对当前 WhatsApp Web 的描述。
使用条件与局限
- 审阅对象为 2024-04-22 的 master 最新提交,该提交只修改了 README;后端和 Node 中继最后修改于 2021 年 8 月,protobuf 结构定义最后修改于 2020 年 3 月,没有发布版本或标签。README 描述的配对流程由手机提供电量等会话信息,也就是 WhatsApp 2021 年 7 月工程博客所说被多设备架构取代的手机镜像式配套设备模式。2022 年的一个 issue 报告扫描二维码后服务器返回 upgrade_md_prod 命令;本次未测试该流程目前能否连接。
- 使用时需要用户自己的 WhatsApp 账号和手机来扫描配对码,后端会连接 WhatsApp 服务器。protobuf 定义由一个辅助脚本解析公开的 WhatsApp Web JavaScript 包生成。README 的任务清单仍把二进制解码错误增多、二进制报文写入以及更易用的界面列为待完成工作。
- 直接安装需要 Node.js 8+ 和 Python 2.7,以及 websocket-client、simple-websocket-server、curve25519-donna、pycrypto(requirements.txt 中为 pycryptodome)、pyqrcode 和 protobuf;Windows 还需要 Visual C++ for Python 9.0 和仓库提供的头文件。项目提供 shell.nix(Python 2.7、Node.js 13)和 Dockerfile,npm start 会同时启动后端、Node API 和前端。README 说明 Docker 版本还不够稳定,不适合生产部署。
- 项目没有测试套件:package.json 的 test 脚本只是启动各组件。文档给出的正确性检查是对服务器密钥数据和每条二进制报文做 HMAC 校验,另有浏览器内 JavaScript 演示在扫描二维码后输出解密后的报文。本次来源核查没有建立会话,也没有解码任何流量。
- 采用 MIT 许可(LICENSE、package.json)。README 声明项目与 WhatsApp 无关、未获其认可,使用风险自负,并附有加密软件出口声明;WhatsApp 的服务和条款另行适用。所审阅来源未确立任何 AI 或 REA 的使用。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 协议 · 网站
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- backend/whatsapp.py GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- backend/whatsapp_binary_reader.py GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- doc/spec/def.proto GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- doc/spec/protobuf-extractor/index.js GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- package.json GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- requirements.txt GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- shell.nix GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- Dockerfile GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- LICENSE GitHub · sigalor/whatsapp-web-reveng · 修订 04caed2
- https://github.com/sigalor/whatsapp-web-reveng/issues/372
- https://engineering.fb.com/2021/07/14/security/whatsapp-multi-device/