资讯动态

wx-cli 代码实现原理(三):ISAAC-64 视频号视频解密与 8 个 Rust crate 架构设计

发布时间:2026/10/23 4:19:45 来源:尧图企业网站定制
【免费下载链接】wx-cliWeChat macOS database decryption and query tool项目地址https://gitcode.com/gh_mirrors/wxcl/wx-cli点击查看免费下载wx-cli 是一款面向 macOS 的微信数据库解密与查询工具由 8 个 Rust crate 组成。本文带你拆解它如何用 ISAAC-64 算法解密视频号Channels加密视频以及整个项目的分层架构设计是怎么做到的——看完你会明白为什么解密一段微信视频只需要几行代码。 先搞懂视频号视频是怎么被加密的微信视频号下载到本地的视频并不是整个文件都加密。wx-cli 的实现揭示了一个关键事实见 video_decrypt.rs 的注释只有文件的前 128KB 是密文后面的部分直接是明文。这种只加密头部的设计很聪明MP4 的头部元信息如ftyp魔数、moov索引藏在最前面加密它能防止文件被直接识别播放而视频主体数据占绝大部分体积不加密可以省掉大量加解密开销。解密时用的算法不是常见的 AES而是一个叫ISAAC-64的密码学伪随机数生成器PRNG——用它生成一段密钥流keystream再与密文逐字节XOR 异或就能还原明文。 ISAAC-64 原理三步生成密钥流ISAAC 全称是 Indirectly Sequenced Adaption and Auto-Carry是一种基于算术、位运算和数组置换的流式 PRNG。wx-cli 在 isaac64.rs 中用不到 170 行 Rust 完整实现了 64 位版本核心分三步第一步init() 初始化——把种子搅匀用黄金比例常数0x9e3779b97f4a7c15反复做 4 轮加减、异或、移位混合再分两遍把种子数据混入内部状态数组mm[256]。这一步决定了同一个 seed永远生成同一串密钥流。第二步generate() 生成一批随机数cc每轮加 1、bb累加cc随后遍历 256 个槽位根据下标奇偶做不同的位运算 21、 5、 12、 33产出 256 个u64存入randrsl[256]。第三步next_u64() 取数——倒序消费wx-cli 的实现严格匹配微信 WASM 模块的行为随机数从randrsl数组的末尾往前取reverse-index consumption每个u64按大端序写成 8 个字节见 keystream 方法。这两点——大端字节序 倒序取数——是比特级兼容微信的关键。任何一个细节不对解出来的都是乱码。测试向量用数字验证正确性项目为这套实现配了 7 个测试向量tests/isaac64.rs例如 seed 为 0 时前两个输出是0x673f4a26e311355a 0x80b58ce58cf970fd更值得一提的是测试文件里的注释早期的 TypeScript 参考实现存在一个Number()精度 Bug——对大于 2^53 的 64 位值会丢失精度。wx-cli 的 Rust 版本用原生u64运算天然规避了这个问题与微信 WASM 模块的真实行为保持一致。这是用 Rust 重写解密组件的典型收益64 位整数运算不再有精度陷阱。 解密流程从密文到 MP4把前面三步串起来完整解密只有 5 步decrypt_video用 seed 创建Isaac64实例取min(文件长度, 131072)字节的密钥流——即最多前 128KB密文前缀与密钥流逐字节 XOR把未加密的尾部原样拼接在后面在前 32 字节里找ftyp魔数判断输出是否为合法 MP4。第 5 步是个很实用的自校验如果 seed 给错了XOR 出来的数据里不会出现ftyp命令行会直接提示警告而不是让你拿到一个打不开的文件。在 CLI 层的用法非常简单cmd/media.rs# seed 支持十进制或 0x 开头的十六进制 wx-cli media decrypt-video encrypted.bin --seed 2105122989 -o video.mp4测试用例 video-decrypt.rs 覆盖了各种边界情况零密钥流输入原样返回、密钥流短于密文只解密前缀、XOR 之后ftyp出现在偏移 4 处的标准 MP4 等保证实现稳如磐石。 8 个 Rust crate 架构设计wx-cli 的根 Cargo.toml 是一个 workspace统一管理 8 个 crate 的版本当前 0.7.4、edition 与 license。各 crate 职责如下Crate一句话职责内部依赖wx-pathsmacOS 数据路径发现、迁移、sudo 处理无最底层wx-decrypt核心数据库解密PBKDF2 密钥派生、逐页/整库解密无wx-keychain密钥提取LLDB hook / mach_vm 读内存与本地密钥存储wx-decrypt、wx-pathswx-db解密后数据库查询联系人、消息、会话、群聊protobuf 解析、zstd 解压wx-decryptwx-media媒体解密图片 dat、SILK 语音、视频号视频ISAAC-64、WXGF 转码wx-keychainwx-monitor实时消息监听与增量监控notify 文件事件wx-decrypt、wx-dbwx-context账号解析、解密缓存、KDF 缓存、联系人解析等胶水层上述 4 个核心库wx-cliCLI 入口 axum HTTP API 服务 tokio 运行时全部 7 个分层依赖一条清晰的单向链路入口层 wx-cliclap 命令 axum 服务 │ 编排层 wx-context缓存、解析、增量解密调度 │ 能力层 wx-db │ wx-media │ wx-monitor │ wx-keychain │ 基础层 wx-decrypt密码学 │ wx-paths路径依赖方向永远自上而下不会出现循环依赖。例如 wx-media 需要 wx-keychain 来从账号目录推导 V2 图片密钥key.rs 中的derive_v2_aes_keyMD5({uin}{wxid})取前 16 位 ASCII但反过来 wx-keychain 完全不关心媒体文件的存在。三个架构亮点1️⃣ 密码学核心独立成 crate依赖极少wx-decrypt 只依赖aes、pbkdf2、sha2、hmac等几个加密基础库不含任何数据库和 IO 逻辑。这意味着解密算法可以被 wx-db、wx-monitor、wx-context 三方安全复用改动时影响面清晰可控。2️⃣ 针对 256k 轮 PBKDF2 的构建优化SQLCipher 密钥派生固定跑 256000 轮在开发/测试模式下会慢得让人怀疑人生。workspace 根 Cargo.toml 专门给wx-decrypt、pbkdf2、sha2、hmac设置了opt-level 3保证即使是 debug 构建并行跑集成测试时密钥派生也不会拖后腿。这是一个从测试体验反推构建配置的务实决策。3️⃣ 用 feature 开关控制可选能力音频转码依赖silk-rs被标记为可选依赖由audiofeature 控制wx-media/Cargo.toml、wx-cli/Cargo.toml。不需要音频能力的下游可以用default-features false编译出更小的二进制缺少 ffmpeg 时语音提取会自动降级为输出原始 SILK 并给出明确提示。✨ 小结wx-cli 的架构可以概括为一句话密码学、数据库、媒体、监控各占一个 crate靠单向依赖分层由 wx-cli 统一入口。而视频号视频解密则展示了这套架构的威力——ISAAC-64 的全部知识大端字节序、倒序取数、只加密前 128KB都收敛在 wx-media 的不到 200 行代码里上层 CLI 只需一句wx_media::decrypt_video(ciphertext, seed)。对于想学习 Rust 项目分层的同学这个仓库里还有几处值得一读main.rs 中decrypt-video子命令的定义、SKILL.md 中给 Agent 写的视频号解密命令说明以及 lib.rs 里那份几乎可以当教程用的模块级文档注释。赞分享【免费下载链接】wx-cliWeChat macOS database decryption and query tool项目地址https://gitcode.com/gh_mirrors/wxcl/wx-cli点击查看免费下载相关推荐tween.lua常见问题解答解决动画开发中的痛点与难点tween.lua常见问题解答解决动画开发中的痛点与难点 tween.lua是一款轻量级的Lua补间动画库提供了丰富的缓动函数和简洁的API帮助开发者轻松Echo Editor实时协作展望y-prosemirror与Yjs协同编辑探索指南Echo Editor实时协作展望y prosemirror与Yjs协同编辑探索指南 Echo Editor 是一款基于 tiptap 与 shadcn vuSDWebImageSwiftUI项目架构详解从WebImage到AnimatedImage的设计哲学SDWebImageSwiftUI项目架构详解从WebImage到AnimatedImage的设计哲学 SDWebImageSwiftUI是一个基于SDWeb移动开发UI组件上一篇MarkdocVR文档虚拟现实中的内容浏览下一篇VengeanceUI现代动画UI组件库如何让你的着陆页设计效率提升10倍创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑