{"id":48083872,"url":"https://github.com/evil0ctal/wechat-channels-video-file-decryption","last_synced_at":"2026-04-04T15:04:12.552Z","repository":{"id":318899581,"uuid":"1076712533","full_name":"Evil0ctal/WeChat-Channels-Video-File-Decryption","owner":"Evil0ctal","description":"一个可在线运行的微信视频号加密视频解密工具和 API 服务，基于逆向工程分析实现。本项目使用微信官方的 WebAssembly (WASM) 模块来生成 Isaac64 PRNG 密钥流，并通过 XOR 运算完成视频解密。","archived":false,"fork":false,"pushed_at":"2026-01-24T00:49:31.000Z","size":31726,"stargazers_count":48,"open_issues_count":3,"forks_count":22,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-24T12:33:59.641Z","etag":null,"topics":["crawler","reverse-engineering","wechat","wechat-api","wechat-channel","wechat-crawler","wechat-hack","wechat-hook","wechat-video","wechat-video-download"],"latest_commit_sha":null,"homepage":"https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/","language":"WebAssembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Evil0ctal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-15T08:40:08.000Z","updated_at":"2026-01-24T00:49:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"7fb1c263-9809-4774-901c-5fc28dac38e6","html_url":"https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption","commit_stats":null,"previous_names":["evil0ctal/wechat-channels-video-file-decryption"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Evil0ctal/WeChat-Channels-Video-File-Decryption","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evil0ctal%2FWeChat-Channels-Video-File-Decryption","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evil0ctal%2FWeChat-Channels-Video-File-Decryption/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evil0ctal%2FWeChat-Channels-Video-File-Decryption/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evil0ctal%2FWeChat-Channels-Video-File-Decryption/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Evil0ctal","download_url":"https://codeload.github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evil0ctal%2FWeChat-Channels-Video-File-Decryption/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31403952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crawler","reverse-engineering","wechat","wechat-api","wechat-channel","wechat-crawler","wechat-hack","wechat-hook","wechat-video","wechat-video-download"],"created_at":"2026-04-04T15:03:49.173Z","updated_at":"2026-04-04T15:04:12.510Z","avatar_url":"https://github.com/Evil0ctal.png","language":"WebAssembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 微信视频号解密工具 / WeChat Channels Video Decryption Tool\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub Stars](https://img.shields.io/github/stars/Evil0ctal/WeChat-Channels-Video-File-Decryption?style=flat\u0026logo=github\u0026label=Stars)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/Evil0ctal/WeChat-Channels-Video-File-Decryption?style=flat\u0026logo=github\u0026label=Forks)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/network/members)\n[![GitHub Issues](https://img.shields.io/github/issues/Evil0ctal/WeChat-Channels-Video-File-Decryption?style=flat\u0026logo=github\u0026label=Issues)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/Evil0ctal/WeChat-Channels-Video-File-Decryption?style=flat\u0026logo=github\u0026label=PRs)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/pulls)\n[![Docker Image CI](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/actions/workflows/docker-image.yml/badge.svg)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/actions/workflows/docker-image.yml)\n\n[![Docker Hub](https://img.shields.io/docker/v/evil0ctal/wechat-decrypt-api?label=Docker%20Hub\u0026logo=docker\u0026color=2496ED)](https://hub.docker.com/r/evil0ctal/wechat-decrypt-api)\n[![Docker Pulls](https://img.shields.io/docker/pulls/evil0ctal/wechat-decrypt-api?logo=docker\u0026color=2496ED)](https://hub.docker.com/r/evil0ctal/wechat-decrypt-api)\n[![Docker Image Size](https://img.shields.io/docker/image-size/evil0ctal/wechat-decrypt-api/latest?logo=docker\u0026label=Image%20Size)](https://hub.docker.com/r/evil0ctal/wechat-decrypt-api)\n\n[![License](https://img.shields.io/github/license/Evil0ctal/WeChat-Channels-Video-File-Decryption?color=blue)](LICENSE)\n[![Contributors](https://img.shields.io/github/contributors/Evil0ctal/WeChat-Channels-Video-File-Decryption?color=orange)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/graphs/contributors)\n[![Last Commit](https://img.shields.io/github/last-commit/Evil0ctal/WeChat-Channels-Video-File-Decryption?logo=github)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption/commits/main)\n[![Repo Size](https://img.shields.io/github/repo-size/Evil0ctal/WeChat-Channels-Video-File-Decryption?logo=github)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption)\n[![Code Size](https://img.shields.io/github/languages/code-size/Evil0ctal/WeChat-Channels-Video-File-Decryption?logo=github)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption)\n[![Top Language](https://img.shields.io/github/languages/top/Evil0ctal/WeChat-Channels-Video-File-Decryption?logo=javascript\u0026color=yellow)](https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption)\n\n\u003c/div\u003e\n\n---\n\n一个完整的微信视频号加密视频解密解决方案，基于逆向工程分析实现。本项目使用微信官方的 WebAssembly (WASM) 模块来生成 Isaac64 PRNG 密钥流，并通过 XOR 运算完成视频解密。\n\n## 📖 项目简介\n\n微信视频号使用 **Isaac64**（Indirection, Shift, Accumulate, Add, and Count）密码学伪随机数生成器对视频文件的前 128 KB 数据进行加密。本项目通过以下方式实现完整的解密流程：\n\n- 🔬 **算法分析**：通过逆向工程分析微信客户端，确认使用 Isaac64 PRNG 算法\n- 🧩 **WASM 模块**：直接使用微信官方的 `wasm_video_decode.wasm` 模块，保证 100% 兼容性\n- 🔑 **密钥流生成**：基于 API 响应中的 `decode_key` 种子值生成 131,072 字节的密钥流\n- 🔄 **关键步骤**：密钥流必须经过 `reverse()` 操作（这是成功解密的关键）\n- ⚡ **XOR 解密**：对视频前 128 KB 执行 XOR 运算，还原原始 MP4 数据\n- 🎯 **多平台支持**：提供在线网页版、命令行工具、图形界面、RESTful API 四种使用方式\n\n**技术栈：** JavaScript (WASM), Python 3.x, Node.js, tkinter, HTML5, Docker\n\n## ✨ 特性\n\n- ✅ **浏览器内一键解密** - 无需安装任何软件，直接在网页中完成解密\n- ✅ **完全本地处理** - 视频数据不离开您的设备，100% 保护隐私\n- ✅ **RESTful API 服务** - Docker 容器化部署，支持远程调用和批量处理\n- ✅ **本地优先架构** - API 服务内置 WASM 文件，优先使用本地加载（速度更快，离线可用）\n- ✅ **智能降级机制** - 本地文件加载失败时自动切换到微信 CDN，确保服务可用性\n- ✅ 使用微信官方 WASM 模块（保证 100% 兼容性）\n- ✅ 支持完整视频解密（文件大小无限制）\n- ✅ 提供四种使用方式：在线网页版、命令行版、图形界面版、API 服务\n- ✅ 专业级日志输出 - Hex Dump、MP4 分析、XOR 运算展示\n- ✅ 实时进度显示和性能统计\n- ✅ 包含示例文件和详细技术文档\n\n## 🚀 快速开始\n\n### 前置要求\n\n- **仅浏览器内解密**：现代浏览器 (Chrome/Edge/Safari/Firefox) - 无需其他依赖\n- **Python 工具**：Python 3.x（仅用于 CLI/GUI 工具）\n- **API 服务**：Node.js 16+ 或 Docker（仅用于 RESTful API）\n\n### 方式一：在线网页版（⭐ 最推荐 - 零安装）\n\n**完全在浏览器中完成解密，无需安装任何软件！**\n\n#### 🌐 访问在线版本\n\n**GitHub Pages（推荐）：** https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/\n\n或本地启动：\n```bash\npython3 -m http.server 8888\nopen http://localhost:8888/index.html\n```\n\n#### 📝 使用步骤截图\n\n\u003cimg src=\"screenshots/Index.png\" alt=\"在线解密工具界面\" width=\"600\"\u003e\n\n**在线工具界面**\n\n**🎬 一键解密模式**（最简单）：\n\n1. **输入 decode_key**\n   - 从 API 响应的 `$.data.object_desc.media[0].decode_key` 字段获取\n   - 例如：`2136343393`\n\n2. **选择加密视频**\n   - 点击上传区域或直接拖放文件\n   - 支持任意大小的 MP4 文件\n   - ⚠️ 文件不会上传到服务器，完全本地处理\n\n3. **开始解密**\n   - 点击 \"🚀 开始解密\" 按钮\n   - 观看实时解密过程和详细日志\n   - 查看加密/解密文件头对比、XOR 运算示例\n\n4. **下载解密视频**\n   - 点击 \"💾 下载解密视频\" 保存文件\n   - 视频可直接播放\n\n**🔑 仅生成密钥流模式**（配合 Python 工具使用）：\n\n1. 切换到 \"仅生成密钥流\" 标签\n2. 输入 `decode_key` 并点击 \"生成密钥流\"\n3. 点击 \"导出密钥流\" 下载 `keystream_131072_bytes.txt`\n4. 使用 Python CLI/GUI 工具解密视频\n\n#### ✨ 在线版本特色功能\n\n- 📊 **专业级 Hex Dump 显示** - 类似 `xxd` 命令的格式化输出\n- 🔍 **MP4 文件头深度分析** - Box Size、Type、Brand 等详细信息\n- 📐 **XOR 运算可视化** - 展示每个字节的解密过程\n- 📈 **实时进度条** - 显示解密进度和处理速度\n- 🔒 **加密前后对比** - 直观展示解密效果\n- 💯 **性能统计** - 解密耗时、处理速度等\n\n### 方式二：图形界面（推荐不熟悉命令行的用户）\n\n最简单的使用方式，无需命令行操作：\n\n```bash\npython3 decrypt_wechat_video_gui.py\n```\n\n在图形界面中：\n1. 选择或粘贴密钥流\n2. 选择加密视频文件\n3. 点击\"开始解密\"按钮\n4. 等待解密完成\n\n### 方式三：命令行（推荐进阶用户和自动化场景）\n\n#### 交互模式（推荐）\n\n```bash\npython3 decrypt_wechat_video_cli.py\n```\n\n按提示操作即可，支持：\n- 从文件加载密钥流\n- 直接粘贴十六进制密钥流\n- 自动验证和引导\n\n#### 命令行参数模式\n\n```bash\n# 使用密钥流文件解密\npython3 decrypt_wechat_video_cli.py -i wx_encrypted.mp4 -k keystream_131072_bytes.txt -o wx_decrypted.mp4\n\n# 静默模式（脚本调用）\npython3 decrypt_wechat_video_cli.py -i encrypted.mp4 -k keystream.txt -o decrypted.mp4 -q\n\n# 查看帮助\npython3 decrypt_wechat_video_cli.py --help\n```\n\n### 方式四：RESTful API 服务（推荐批量处理和集成使用）\n\n适合需要远程调用、批量处理或集成到其他系统的场景。\n\n#### 🐳 使用 Docker（推荐）\n\n**方式 A: 使用 Docker Hub 镜像（最简单）**\n\n```bash\n# 拉取最新镜像\ndocker pull evil0ctal/wechat-decrypt-api:latest\n\n# 运行服务\ndocker run -d \\\n  --name wechat-decrypt-api \\\n  -p 3000:3000 \\\n  --shm-size=2gb \\\n  evil0ctal/wechat-decrypt-api:latest\n```\n\n**方式 B: 使用 Docker Compose 本地构建**\n\n```bash\n# 进入 API 服务目录\ncd api-service\n\n# 使用 Docker Compose 启动\ndocker-compose up -d\n\n# 查看服务状态\ndocker-compose ps\n\n# 查看日志\ndocker-compose logs -f\n```\n\n#### 📦 或直接使用 Node.js\n\n```bash\n# 进入 API 服务目录\ncd api-service\n\n# 安装依赖\nnpm install\n\n# 启动服务\nnpm start\n\n# 开发模式（自动重启）\nnpm run dev\n```\n\n#### 📸 API 服务界面\n\n\u003cimg src=\"screenshots/API.png\" alt=\"API 服务交互式文档\" width=\"600\"\u003e\n\n**API 服务交互式文档页面**\n\n#### 🔌 API 调用示例\n\n**完整解密视频：**\n```bash\ncurl -X POST http://localhost:3000/api/decrypt \\\n  -F \"video=@encrypted.mp4\" \\\n  -F \"decode_key=2136343393\" \\\n  -o decrypted.mp4\n```\n\n**生成密钥流：**\n```bash\ncurl -X POST http://localhost:3000/api/keystream \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"decode_key\": \"2136343393\"}'\n```\n\n**查看完整 API 文档：**\n```bash\n# 浏览器访问文档页面\nopen http://localhost:3000\n\n# 或获取 JSON 格式的服务信息\ncurl http://localhost:3000/api/info\n```\n\n#### ✨ API 服务特性\n\n访问 `http://localhost:3000` 将显示一个漂亮的交互式文档页面，包含：\n\n- 🎨 **美观界面** - 渐变色设计、代码高亮、响应式布局\n- 📊 **实时状态** - WASM 模块健康检查和服务信息\n- 🔌 **完整文档** - 所有 API 端点的详细说明和参数\n- 💡 **代码示例** - Python、JavaScript/Node.js 等多种语言\n- ⚡ **本地优先** - 内置 WASM 文件，优先使用本地加载（速度更快）\n- 🛡️ **智能降级** - 本地文件加载失败时自动切换到微信 CDN\n- 🐳 **容器化** - Docker 镜像包含完整 WASM 文件，开箱即用\n- 🔒 **离线可用** - 即使没有网络也能正常工作\n\n**Python 调用示例：**\n```python\nimport requests\n\n# 解密视频\nurl = 'http://localhost:3000/api/decrypt'\nfiles = {'video': open('encrypted.mp4', 'rb')}\ndata = {'decode_key': '2136343393'}\n\nresponse = requests.post(url, files=files, data=data)\n\nif response.status_code == 200:\n    with open('decrypted.mp4', 'wb') as f:\n        f.write(response.content)\n    print('✅ 解密成功')\n```\n\n📚 详细文档请查看：[api-service/README.md](api-service/README.md)\n\n## 📁 文件说明\n\n```\nWeChat-Channels-Video-File-Decryption/\n├── index.html                      # 🌐 在线一键解密工具（⭐ 推荐）\n├── decrypt_wechat_video_cli.py     # 💻 命令行解密工具\n├── decrypt_wechat_video_gui.py     # 🖥️ 图形界面解密工具\n├── api-service/                    # 🚀 RESTful API 服务\n│   ├── server.js                   #    Express API 服务器\n│   ├── worker.html                 #    RPC Worker (浏览器 WASM 执行)\n│   ├── docs.html                   #    交互式 API 文档页面\n│   ├── wechat_files/               #    内置 WASM 文件（本地优先加载）\n│   │   ├── wasm_video_decode.wasm  #    Isaac64 WASM 模块（3.8 MB）\n│   │   ├── wasm_video_decode.js    #    WASM 加载器（175 KB）\n│   │   └── ...                     #    其他 WASM 相关文件\n│   ├── package.json                #    依赖配置\n│   ├── Dockerfile                  #    Docker 构建文件\n│   ├── docker-compose.yml          #    Docker Compose 配置\n│   └── README.md                   #    API 服务文档\n├── wx_response.json                # 📋 API 响应示例（包含 decode_key）\n├── wx_encrypted.mp4                # 🔒 示例加密文件\n├── wx_decrypted.mp4                # ✅ 示例解密文件\n├── screenshots/                    # 📸 项目截图\n│   ├── Index.png                   #    在线工具截图\n│   └── API.png                     #    API 服务文档截图\n├── wechat_files/                   # 📦 微信官方 WASM 模块（供 index.html 使用）\n│   ├── wasm_video_decode.wasm      #    Isaac64 WASM 模块\n│   ├── wasm_video_decode.js        #    WASM 加载器\n│   ├── wasm_video_decode_fallback.js #  降级版本\n│   ├── worker_release.js           #    Worker 脚本\n│   └── wasm_video_decode.wat       #    WASM 文本格式（调试用）\n├── LICENSE                         # 📄 MIT 许可证\n└── README.md                       # 📖 本文件\n```\n\n## 🔑 工作原理\n\n### 加密方式\n\n微信视频号使用 **Isaac64 PRNG** 生成密钥流，然后：\n\n1. 只加密视频的前 **131,072 bytes** (128 KB)\n2. 使用 **XOR** 进行加密：`encrypted = original ^ keystream`\n3. **关键步骤**：密钥流必须 **reverse()** 后才能使用\n\n### 解密流程\n\n```\ndecode_key → Isaac64 WASM → 生成密钥流 → Reverse → XOR 解密 → MP4 视频\n```\n\n### decode_key 获取\n\n从微信视频号 API 响应中提取：\n\n```json\n{\n  \"data\": {\n    \"object_desc\": {\n      \"media\": [{\n        \"decode_key\": \"2136343393\",  // 这就是解密种子\n        \"url\": \"https://...\",         // 加密视频下载链接\n        \"file_size\": 14088528\n      }]\n    }\n  }\n}\n```\n\n**⚠️ 重要提示：**\n- 微信接口每次请求都会返回**新的加密文件链接**和**新的 decode_key**\n- 即使是同一个视频，每次请求获取的 `url` 和 `decode_key` 都不相同\n- **必须确保** `decode_key` 与 `url` 是同一次 API 响应中获取的，否则解密将失败\n- 如果解密失败，请重新获取 API 响应，确保使用匹配的 key 和文件\n\n## 📝 使用示例\n\n### 示例 1: 在线网页版一键解密（⭐ 最推荐）\n\n**完整流程演示：**\n\n1. **访问工具**\n   ```\n   https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/\n   ```\n\n2. **解密操作**\n   - 输入 decode_key: `2136343393`\n   - 选择加密视频: `wx_encrypted.mp4` (13.44 MB)\n   - 点击 \"🚀 开始解密\"\n\n3. **查看详细日志**\n   ```\n   ╔═══════════════════════════════════════════════════════════╗\n   ║         微信视频号解密工具 - 完整解密流程                ║\n   ╚═══════════════════════════════════════════════════════════╝\n\n   📋 解密配置信息:\n      🔑 Decode Key: 2136343393\n      📹 输入文件: wx_encrypted.mp4\n      📊 文件大小: 13.44 MB (14,088,528 bytes)\n      🔒 加密范围: 前 131,072 bytes (128 KB)\n\n   🔒 加密文件头（前 64 字节）:\n   00000000  23 76 6a 16 ff 8f fe 1a 1c a6 cd 5f 99 48 46 ab  |#vj........_.HF.|\n   00000010  d9 09 4e 78 87 c7 22 45 30 27 14 4f 84 d4 fa 05  |..Nx..\"E0'.O....|\n   ...\n\n   📐 XOR 运算示例（前 8 字节）:\n      [0] 0x23 XOR 0x23 = 0x00 ('')\n      [1] 0x76 XOR 0x76 = 0x00 ('')\n      [2] 0x6a XOR 0x6a = 0x00 ('')\n      [3] 0x16 XOR 0x36 = 0x20 (' ')\n      [4] 0xff XOR 0x99 = 0x66 ('f')\n      [5] 0x8f XOR 0x74 = 0xfb ('t')\n      [6] 0xfe XOR 0x79 = 0x87 ('y')\n      [7] 0x1a XOR 0x70 = 0x6a ('p')\n\n   🔓 解密后文件头（前 64 字节）:\n   00000000  00 00 00 20 66 74 79 70 69 73 6f 6d 00 00 02 00  |... ftypisom....|\n   00000010  69 73 6f 6d 69 73 6f 32 61 76 63 31 6d 70 34 31  |isomiso2avc1mp41|\n   ...\n\n   📋 MP4 文件头分析:\n      📦 Box Size: 32 bytes (0x20)\n      🏷️  Box Type: 'ftyp'\n      🎬 Major Brand: 'isom'\n      📌 Minor Version: 512\n      🔗 Compatible Brands: isom, iso2, avc1, mp41\n\n   🔍 MP4 格式验证:\n      ✅ 'ftyp' 签名验证通过 @ 偏移 4\n      ✅ 文件格式: MP4 (ISO Base Media)\n      ✅ 解密成功！文件可以正常播放\n\n   📊 解密统计:\n      📁 原始文件: 14,088,528 bytes\n      🔓 解密范围: 131,072 bytes (0.93%)\n      ⏱️  总耗时: 12.45 ms\n      💾 输出文件: decrypted_video.mp4\n   ```\n\n4. **下载视频**\n   - 点击 \"💾 下载解密视频\"\n   - 文件名: `decrypted_video.mp4`\n   - 可直接播放 ✅\n\n**优势：**\n- ✅ 零安装 - 只需浏览器\n- ✅ 完全本地 - 数据不离开设备\n- ✅ 专业日志 - 深入理解技术原理\n- ✅ 支持大文件 - 无大小限制\n- ✅ 实时进度 - 清晰的处理状态\n\n### 示例 2: GUI 图形界面（推荐不熟悉命令行的用户）\n\n```bash\n# 启动 GUI\npython3 decrypt_wechat_video_gui.py\n```\n\n在图形界面中：\n1. 如果有 `keystream_131072_bytes.txt` 文件，会自动加载\n2. 或者点击\"选择文件\"加载密钥流文件\n3. 或者直接粘贴十六进制密钥流到文本框\n4. 选择加密视频文件 `wx_encrypted.mp4`\n5. 点击\"🚀 开始解密\"\n6. 等待完成后点击\"📂 打开文件夹\"查看结果\n\n### 示例 3: CLI 交互模式\n\n```bash\npython3 decrypt_wechat_video_cli.py\n```\n\n按照提示操作：\n```\n🎬 微信视频号解密工具 - 交互模式\n======================================================================\n\n⚠️  未找到密钥流文件: keystream_131072_bytes.txt\n\n请选择输入方式：\n1. 输入密钥流文件路径\n2. 直接粘贴十六进制密钥流\n3. 退出\n\n请选择 (1/2/3): 1\n请输入密钥流文件路径: keystream_131072_bytes.txt\n✅ 密钥流大小: 131,072 bytes (128.00 KB)\n\n请输入加密视频文件路径: wx_encrypted.mp4\n\n请输入输出文件名 (默认: wx_decrypted.mp4):\n```\n\n### 示例 4: CLI 命令行模式（自动化）\n\n```bash\n# 基本用法\npython3 decrypt_wechat_video_cli.py \\\n  -i wx_encrypted.mp4 \\\n  -k keystream_131072_bytes.txt \\\n  -o wx_decrypted.mp4\n\n# 静默模式（用于脚本）\npython3 decrypt_wechat_video_cli.py \\\n  -i encrypted.mp4 \\\n  -k keystream.txt \\\n  -o decrypted.mp4 \\\n  -q\n\n# 使用十六进制字符串\npython3 decrypt_wechat_video_cli.py \\\n  -i encrypted.mp4 \\\n  -H \"0a1b2c3d4e5f...\" \\\n  -o decrypted.mp4\n```\n\n### 示例 5: 解密已提供的测试文件\n\n项目已包含测试文件：\n- `wx_encrypted.mp4` (加密文件)\n- `wx_response.json` (包含 decode_key: 2136343393)\n\n**使用 GUI:**\n```bash\npython3 decrypt_wechat_video_gui.py\n```\n\n**使用 CLI:**\n```bash\npython3 decrypt_wechat_video_cli.py\n```\n\n### 示例 6: 解密新视频（完整流程）\n\n1. **获取视频信息**\n   ```bash\n   # 抓包获取 API 响应\n   # 提取 decode_key 和视频 URL\n   ```\n\n2. **下载加密视频**\n   ```bash\n   curl -o my_encrypted_video.mp4 \"视频URL\"\n   ```\n\n3. **解密视频**\n\n   **方式 A: 在线一键解密（推荐）**\n   ```\n   访问: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/\n\n   1. 输入你的 decode_key\n   2. 上传 my_encrypted_video.mp4\n   3. 点击 \"开始解密\"\n   4. 下载解密视频\n   ```\n\n   **方式 B: 生成密钥流 + Python 工具**\n   ```bash\n   # 步骤 1: 在线生成并导出密钥流\n   # 访问网页，切换到\"仅生成密钥流\"标签\n\n   # 步骤 2: 使用 Python 工具解密\n   python3 decrypt_wechat_video_cli.py \\\n     -i my_encrypted_video.mp4 \\\n     -k keystream_131072_bytes.txt \\\n     -o my_decrypted_video.mp4\n   ```\n\n## 🔧 命令行参数说明\n\n### CLI 工具参数\n\n```bash\npython3 decrypt_wechat_video_cli.py [OPTIONS]\n```\n\n**参数列表:**\n\n| 参数 | 说明 | 示例 |\n|------|------|------|\n| `-i, --input` | 加密视频文件路径 | `-i wx_encrypted.mp4` |\n| `-o, --output` | 输出文件路径 | `-o wx_decrypted.mp4` |\n| `-k, --keystream-file` | 密钥流文件路径 | `-k keystream_131072_bytes.txt` |\n| `-H, --keystream-hex` | 十六进制密钥流字符串 | `-H \"0a1b2c3d...\"` |\n| `-q, --quiet` | 静默模式 | `-q` |\n| `--version` | 显示版本信息 | `--version` |\n| `-h, --help` | 显示帮助信息 | `--help` |\n\n**使用技巧:**\n\n- 不带任何参数运行进入交互模式（推荐新手）\n- 使用 `-q` 参数进行静默输出，适合脚本调用\n- 可以使用 `-H` 直接传入密钥流，无需文件\n- 输出文件默认为 `wx_decrypted.mp4`\n\n## 🔍 验证解密\n\n成功解密的视频应该：\n\n✅ 文件类型：`ISO Media, MP4 Base Media v1`\n✅ 文件头包含 `ftyp` 签名（offset 4）\n✅ 可以正常播放\n\n验证命令：\n```bash\nfile wx_decrypted.mp4\n```\n\n应该显示：\n```\nwx_decrypted.mp4: ISO Media, MP4 Base Media v1 [ISO 14496-12:2003]\n```\n\n或使用 `xxd` 查看文件头：\n```bash\nxxd -l 32 wx_decrypted.mp4\n```\n\n应该看到类似：\n```\n00000000: 0000 0020 6674 7970 6973 6f6d 0000 0200  ... ftypisom....\n00000010: 6973 6f6d 6973 6f32 6165 7631 6d70 3431  isomiso2aev1mp41\n```\n\n## ⚠️ 重要提示\n\n1. **decode_key 和加密文件必须匹配** ⭐ 最重要\n   - 微信接口每次请求都会返回新的加密文件链接和 decode_key\n   - 即使是同一个视频，每次请求的 key 和 URL 都不同\n   - **必须确保** decode_key 与加密视频文件来自同一次 API 响应\n   - 使用不匹配的 key 会导致解密失败\n\n2. **必须使用 reverse() 操作**\n   - 密钥流必须反转才能正确解密\n   - HTML 页面和 Python 工具已自动处理此步骤\n\n3. **只加密前 128KB**\n   - 视频的后续部分未加密\n   - 解密脚本会自动处理\n\n## 🛠️ 技术细节\n\n### Isaac64 算法\n\n- **类型**: 密码学安全的伪随机数生成器\n- **周期**: 2^8295\n- **输出**: 64-bit 随机数\n- **实现**: 微信官方 WASM 模块\n\n### 关键代码\n\n**JavaScript (密钥流生成)**:\n```javascript\nfunction wasm_isaac_generate(ptr, size) {\n    decryptor_array = new Uint8Array(size);\n    var wasmArray = new Uint8Array(Module.HEAPU8.buffer, ptr, size);\n    decryptor_array.set(wasmArray.reverse());  // ⚠️ 必须反转\n}\n```\n\n**Python (XOR 解密)**:\n```python\n# 解密前 131072 字节\nfor i in range(decrypt_len):\n    decrypted[i] = encrypted[i] ^ keystream[i]\n```\n\n## 🌐 在线工具详解\n\n### 功能特色\n\n#### 🎬 一键解密模式\n\n完全在浏览器中完成视频解密，无需任何额外软件：\n\n**工作流程：**\n```\n用户选择文件（本地） → 输入 decode_key\n    ↓\n浏览器读取文件（不上传）\n    ↓\nWASM 生成密钥流（Isaac64）\n    ↓\nJavaScript 执行 XOR 解密\n    ↓\n浏览器触发文件下载（Blob API）\n```\n\n**技术特点：**\n- 🔒 **完全离线** - 所有数据在浏览器内存中处理\n- ⚡ **高性能** - WASM 加速，处理速度 10+ MB/s\n- 📊 **透明可见** - 完整显示解密过程的每个步骤\n- 🛡️ **安全隐私** - 数据不经过任何服务器\n\n#### 🔑 密钥流生成模式\n\n为 Python CLI/GUI 工具生成密钥流文件：\n\n1. 生成 131,072 字节的 Isaac64 密钥流\n2. 导出为十六进制文本文件\n3. 配合 Python 工具离线解密\n\n### 部署到 GitHub Pages\n\n**自己部署：**\n\n1. Fork 本仓库或上传到你的 GitHub\n2. 进入仓库设置 **Settings → Pages**\n3. **Source** 选择 `main` 分支，目录选择 `/ (root)`\n4. 保存后等待几分钟\n5. 访问：`https://your-username.github.io/repo-name/`\n\n**使用官方部署：**\n\n直接访问：https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/\n\n### 浏览器兼容性\n\n| 浏览器 | 最低版本 | 说明 |\n|--------|---------|------|\n| Chrome | 57+ | ✅ 完全支持 |\n| Edge | 79+ | ✅ 完全支持 |\n| Firefox | 52+ | ✅ 完全支持 |\n| Safari | 11+ | ✅ 完全支持 |\n| Opera | 44+ | ✅ 完全支持 |\n\n**必需功能：**\n- WebAssembly 支持\n- File API (FileReader)\n- Blob API\n- Async/Await\n\n## 🎯 项目信息\n\n- **作者**: Evil0ctal\n- **项目**: WeChat Channels Video Decryption Tool\n- **GitHub**: https://github.com/Evil0ctal/WeChat-Channels-Video-File-Decryption\n- **在线工具**: https://evil0ctal.github.io/WeChat-Channels-Video-File-Decryption/\n- **项目赞助方**: [TikHub.io](https://tikhub.io) - 专业的社交媒体数据 API 服务平台\n\n# 样本备注\n\n1. [微信安装包 v3.9.8.15](https://github.com/tom-snow/wechat-windows-versions/releases/tag/v3.9.8.15)\n2. [wasm\\_video\\_decode.wasm v1.2.46](https://aladin.wxqcloud.qq.com/aladin/ffmepeg/video-decode/1.2.46/wasm_video_decode.wasm)\n3. [worker\\_release.js v1.2.46](https://aladin.wxqcloud.qq.com/aladin/ffmepeg/video-decode/1.2.46/worker_release.js)\n4. [wasm\\_video\\_decode.js v1.2.46](https://aladin.wxqcloud.qq.com/aladin/ffmepeg/video-decode/1.2.46/wasm_video_decode.js)\n5. [wasm\\_video\\_decode\\_fallback.js v1.2.46](https://aladin.wxqcloud.qq.com/aladin/ffmepeg/video-decode/1.2.46/wasm_video_decode_fallback.js)\n\n\n## 📄 许可证\n\nMIT License\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## ⚠️ 免责声明\n\n本工具仅供学习和研究使用。请遵守相关法律法规和平台服务条款。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevil0ctal%2Fwechat-channels-video-file-decryption","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevil0ctal%2Fwechat-channels-video-file-decryption","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevil0ctal%2Fwechat-channels-video-file-decryption/lists"}