# WxApkgDecoder **Repository Path**: yedada_wei/WxApkgDecoder ## Basic Information - **Project Name**: WxApkgDecoder - **Description**: 微信小程序 wxapkg 解密工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-09-18 - **Last Updated**: 2026-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微信小程序 wxapkg 解密工具 一款用于解密并解包微信 PC 客户端缓存的微信小程序代码包(`.wxapkg`)的工具,提供命令行与图形界面两种使用方式,内置敏感信息提取能力,可用于小程序安全审计与分析。 ## 功能特性 - **解密 wxapkg 加密包**:支持微信 3.x / 4.x PC 客户端缓存的加密小程序包 - **解包还原源码**:自动解析 wxapkg 容器格式,还原出 JS / WXML / JSON 等源码文件 - **自动扫描缓存目录**:自动检测本机常见微信小程序缓存目录(Windows / macOS) - **图形化界面(GUI)**: - 按小程序(wxid)分组展示,缓存获取小程序名称与图标 - 名称可直接手动编辑,回车或失焦自动保存(`app_name_cache.json`),重启后保留 - 一键"刷新清单"重新扫描小程序列表 - 勾选批量解密、单包/批量删除源文件与解包输出 - 实时进度条与日志面板 - 支持插件代码包显示开关 - **敏感信息提取**:基于可编辑正则规则,从解包源码中批量提取 URL、账号密码、密钥、手机号、身份证、JDBC 连接串等敏感信息(用于安全审计) - **规则编辑器**:图形化编辑提取规则(按类别启用/禁用、增删改正则,保存到 `rule.json`) ## 目录结构 ``` 小程序解密/ ├── decrypt_wxapkg.py # 核心引擎 + 命令行工具 ├── wxapkg_gui.py # tkinter 图形界面 ├── rule_store.py # 提取规则存储/读取/编译 ├── rule.json # 提取规则配置(敏感信息正则) ├── run.bat # Windows 一键启动 GUI └── README.md ``` ## 环境要求 - Python 3.8+(建议 3.10+) - 依赖库:`pycryptodome`(仅 AES 解密需要) 安装依赖: ```bash pip install pycryptodome ``` > GUI 使用标准库 tkinter,无需额外安装。 ## 使用方法 ### 图形界面(推荐) ```bash run.bat python wxapkg_gui.py ``` 或 Windows 下直接双击 `run.bat`。 操作流程: 1. **选择路径**:程序启动后自动检测并填充微信缓存目录;也可手动输入或点击"选择目录"指定 2. **加载列表**:自动扫描并按小程序(wxid)分组展示;点击"刷新清单"可重新扫描;点击"路径提示?"查看常见缓存路径 3. **编辑名称**:列表中的小程序名称可直接点击编辑,回车或失焦自动保存,便于识别 4. **勾选解密**:勾选要解密的小程序,点击"开始解密"(或对单个小程序点"解包") 5. **查看结果**:点击"目录"打开解包输出;点击"提取"按规则提取敏感信息(结果显示在"提取结果"页签,支持按类别查看与复制) 6. **规则编辑**:点击"编辑规则"可自定义提取正则,保存后即时生效 ### 命令行 ```bash # 处理指定文件或目录 python decrypt_wxapkg.py <文件或目录> [<文件或目录> ...] # 不传参数时自动扫描常见微信缓存目录 python decrypt_wxapkg.py # 指定输出目录 python decrypt_wxapkg.py -o 输出目录 路径 # 手动指定小程序 appid(用于路径中无法识别 wxid 的加密包) python decrypt_wxapkg.py --wxid wx1234567890abcdef 加密包路径 ``` ### 输出结构 ``` output/ └── / ├── <包名>.wxapkg # 解密后的原始包 └── <包名>_src/ # 解包出的源码文件 ``` ## 解密原理 微信 PC 端加密小程序包格式:`V1MMWX`(6B 魔数) + AES-256-CBC(1024B) + XOR(剩余数据)。 - **AES key**:`PBKDF2-HMAC-SHA1(wxid, salt="saltiest", iter=1000, len=32)` - **AES IV**:`b"the iv: 16 bytes"` - **XOR key**:`wxid` 倒数第 2 个字符的 `ord` 值;wxid 长度 < 2 时固定为 `0x66` - 解密后头部前 1023 字节为明文,其余为 XOR 还原数据 解包器兼容新版格式(文件索引位于 offset 14,微信 3.x 新版/4.x)与旧版格式(JSON 索引位于 offset 8)。 ## 提取规则说明 `rule.json` 按类别组织提取正则,内置类别包括: | 类别 | 说明 | |---|---| | `Path` | 路径型资源引用(/api/xxx 等) | | `url` | 完整 URL(含常见敏感扩展名) | | `账号密码` | user/password/用户名/密码等 | | `key` | API Key / Secret / Token / AccessKey 等 | | `手机号` | 大陆手机号 | | `身份证` | 大陆身份证号 | | `JDBC` | 数据库连接串与账号密码 | | `静态资源` | css/js/img 等静态资源引用 | | `媒体资源` | 图片/音视频/文档等媒体文件 | 可在 GUI 的"编辑规则"中新增类别、增删正则以适配审计需求,保存后自动生效(带内存缓存,仅在 `rule.json` 变化时重新编译)。 ## 注意事项 - 本工具仅用于**合法授权范围内的安全研究、审计与学习**,请勿用于非法用途 - 删除源文件操作不可恢复,使用时请谨慎 - 部分加密包无法从路径识别 wxid 时需通过 `--wxid` 手动指定