Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sony-vp-extract — 解密并提取索尼WH-1000XM4加密语音包中的语音引导MP3提示音。AES密钥通过蓝牙固件转储Airoha MT2811 SoC获取。 | Kitploit
工具/GitHubGitHub/helgesverre/sony-vp-extract
嵌入式系统安全蓝牙安全加密/解密工具逆向工程无线安全密码学硬件安全固件分析
GitHubhelgesverre/sony-vp-extract

sony-vp-extract

解密并提取索尼WH-1000XM4加密语音包中的语音引导MP3提示音。AES密钥通过蓝牙固件转储Airoha MT2811 SoC获取。

查看仓库
25252个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Sony WH-1000XM4 语音包提取器

Sony WH-1000XM4 语音包提取器 RACE 协议 Amp 许可证: MIT

从索尼 WH-1000XM4 加密固件文件中解密并提取语音指导 MP3 提示。

AES-128-CBC 密钥是通过使用 RACE 协议 通过蓝牙低能耗 (BLE) 转储耳机 Airoha MT2811 固件,然后反汇编 ARM Cortex-M4 FOTA 解密例程而提取的。完整技术文章:docs/WRITEUP.md

快速开始

root@kitploit:~
# 安装 Bun(如果尚未安装)
curl -fsSL https://bun.sh/install | bash

git clone https://github.com/HelgeSverre/sony-vp-extract.git
cd sony-vp-extract
bun install

# 自动从索尼CDN下载,然后提取
bun run cli/extract.ts --all

用法

root@kitploit:~
# 全部提取 — 如果 voice-packs/ 为空则自动从索尼CDN下载
bun run cli/extract.ts --all [输入目录] [输出目录]

# 提取单个语音包
bun run cli/extract.ts voice-packs/VP_english_UPG_03.bin extracted/

# 显示语音包信息
bun run cli/extract.ts --info voice-packs/VP_english_UPG_03.bin

# 仅下载(不提取)
bun run cli/extract.ts --download [输出目录]

Python 替代方案

root@kitploit:~
uv run extract_all.py

从索尼CDN下载 + 解密 + 提取 — 一键完成。依赖项以内联方式声明(PEP 723)— uv run 自动处理所有内容。

可用语言

语音包格式

root@kitploit:~
┌───────────────────────────────────────┐
│  头部(4096 字节)                     │
│  ├── 0x000  随机 nonce(32 字节)      │
│  └── 0x100  TLV 元数据                 │
│       ├── compression_type = 2         │
│       ├── body_size                    │
│       ├── decompressed_size(1 MB)    │
│       └── 解压后的 SHA-256             │
├───────────────────────────────────────┤
│  主体(偏移 0x1000+)                  │
│  AES-128-CBC 加密                      │
│  └── LZMA1 压缩                        │
│       └── 语音指导映像(1MB)           │
│            ├── 头部(版本+数量)         │
│            ├── 条目表(54 × 8B)        │
│            │   (大小, 绝对偏移)        │
│            └── MP3 文件(48kHz 单声道) │
└───────────────────────────────────────┘

密钥

root@kitploit:~
AES-128-CBC 密钥: eibohjeCh6uegahf
AES-128-CBC IV:  miefeinuShu9eilo

在 MT2811 CM4 固件 .rodata 段的闪存偏移量 0xD53A(密钥)和 0xD529(IV)处以 ASCII 字符串硬编码形式发现。所有 WH-1000XM4 设备和所有语言包使用相同的密钥。

发现过程

  1. 连接到 WH-1000XM4 的蓝牙(耳机已与手机配对)
  2. 发现 RACE(Airoha 命令扩展)BLE GATT 服务
  3. 转储了 59KB 的 CM4 固件,通过 RACE_STORAGE_PAGE_READ(命令 0x0403)从闪存中读取
  4. 定位到固件偏移量 0x81F4 处的 AES S-box
  5. 确定从 ARM 向量表字面量池得到的运行时基地址 0x04200000
  6. 反汇编 FOTA 解密函数,追踪从字面量池加载密钥的过程

完整技术细节:docs/WRITEUP.md

前提条件

  • Bun ≥ 1.0 — 用于 TypeScript CLI
  • uv — 用于 Python 脚本(依赖项通过内联元数据自动解析)

自行提取密钥

您如果想独立验证密钥,可以从已配对的 WH-1000XM4 耳机中转储固件并从中提取密钥:

root@kitploit:~
# 通过 BLE 转储固件并提取密钥
uv run cli/extract_key.py

# 如果已有固件转储文件:
uv run cli/extract_key.py --firmware your_dump.bin

# Bun 替代方案(需要固件转储文件):
bun run cli/extract.ts --extract-key your_dump.bin

该工具在固件二进制文件中搜索 AES S-box,找到相邻的以 null 结尾的 16 字节 ASCII 字符串,然后通过尝试解密语音包并检查有效的 LZMA 头部来验证每个候选对。

项目结构

root@kitploit:~
├── cli/
│   ├── extract.ts          # Bun CLI 工具(提取 + 密钥查找)
│   └── extract_key.py      # Python BLE 固件转储器 + 密钥查找器
├── docs/
│   └── WRITEUP.md          # 完整技术文章
├── voice-packs/            # 下载的 .bin 文件(已 gitignore)
├── extracted/              # 提取的 MP3 提示(已 gitignore)
├── extract_all.py          # Python 替代提取器
├── package.json
└── README.md

免责声明

该项目记录了在个人拥有的硬件上为教育目的进行的安全研究。分析的耳机是正常配对和连接的——未涉及未经授权的访问。

语音包 .bin 文件和提取的 MP3 提示版权归索尼公司所有,未包含在本仓库中。CLI 工具在运行时直接从索尼的公共 CDN 下载它们。请勿重新分发解密的语音包或提取的 MP3 文件。本工具仅用于研究和互操作性目的。

许可证

MIT

下载工具
语言文件提示数CDN
🇬🇧 英语VP_english_UPG_03.bin54下载
🇫🇷 法语VP_french_UPG_03.bin54下载
🇩🇪 德语VP_german_UPG_03.bin54下载
🇪🇸 西班牙语VP_spanish_UPG_03.bin54下载
🇮🇹 意大利语VP_italian_UPG_03.bin54下载
🇵🇹 葡萄牙语VP_portuguese_UPG_03.bin54下载
🇳🇱 荷兰语VP_dutch_UPG_03.bin54下载
🇸🇪 瑞典语VP_swedish_UPG_03.bin54下载
🇫🇮 芬兰语VP_finnish_UPG_03.bin54下载
🇹🇷 土耳其语VP_turkish_UPG_03.bin54下载