Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sony-vp-extract — Descifrar y extraer indicaciones de voz en MP3 de paquetes de voz cifrados de los Sony WH-1000XM4. Clave AES extraída mediante volcado de firmware Bluetooth del SoC Airoha MT2811. | Kitploit
Herramientas/GitHubGitHub/helgesverre/sony-vp-extract
Seguridad de Sistemas EmbebidosSeguridad BluetoothHerramientas de Cifrado/DescifradoIngeniería InversaSeguridad InalámbricaCriptografíaSeguridad de HardwareAnálisis de Firmware
GitHubhelgesverre/sony-vp-extract

sony-vp-extract

Descifrar y extraer indicaciones de voz en MP3 de paquetes de voz cifrados de los Sony WH-1000XM4. Clave AES extraída mediante volcado de firmware Bluetooth del SoC Airoha MT2811.

25217hace 2 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

Sony WH-1000XM4 Extractor de Paquetes de Voz

Sony WH-1000XM4 Voice Pack Extractor RACE Protocol Amp License: MIT

Descifra y extrae las indicaciones MP3 de guía de voz de los archivos de firmware cifrados de los Sony WH-1000XM4.

La clave AES-128-CBC se obtuvo volcando el firmware Airoha MT2811 de los auriculares a través de Bluetooth Low Energy usando el protocolo RACE, luego desensamblando la rutina de descifrado FOTA del ARM Cortex-M4. Documentación técnica completa: docs/WRITEUP.md

Inicio Rápido

# Install Bun (if not already installed)
curl -fsSL https://bun.sh/install | bash

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

# Downloads from Sony CDN automatically, then extracts
bun run cli/extract.ts --all

Uso

# Extract all — auto-downloads from Sony CDN if voice-packs/ is empty
bun run cli/extract.ts --all [input-dir] [output-dir]

# Extract a single voice pack
bun run cli/extract.ts voice-packs/VP_english_UPG_03.bin extracted/

# Show voice pack info
bun run cli/extract.ts --info voice-packs/VP_english_UPG_03.bin

# Download only (no extraction)
bun run cli/extract.ts --download [output-dir]

Alternativa en Python

uv run extract_all.py

Downloads from Sony CDN + decrypts + extracts — all in one command. Dependencies are declared inline (PEP 723) — uv run handles everything automatically.

Idiomas Disponibles

IdiomaArchivoIndicacionesCDN
🇬🇧 InglésVP_english_UPG_03.bin54Download
🇫🇷 FrancésVP_french_UPG_03.bin54Download
🇩🇪 AlemánVP_german_UPG_03.bin54Download
🇪🇸 EspañolVP_spanish_UPG_03.bin54Download
🇮🇹 ItalianoVP_italian_UPG_03.bin54Download
🇵🇹 PortuguésVP_portuguese_UPG_03.bin54Download
🇳🇱 NeerlandésVP_dutch_UPG_03.bin54Download
🇸🇪 SuecoVP_swedish_UPG_03.bin54Download
🇫🇮 FinlandésVP_finnish_UPG_03.bin54Download
🇹🇷 TurcoVP_turkish_UPG_03.bin54Download

Formato del Paquete de Voz

┌───────────────────────────────────────┐
│  Header (4096 bytes)                  │
│  ├── 0x000  Random nonce (32 bytes)   │
│  └── 0x100  TLV metadata             │
│       ├── compression_type = 2        │
│       ├── body_size                   │
│       ├── decompressed_size (1 MB)    │
│       └── SHA-256 of decompressed     │
├───────────────────────────────────────┤
│  Body (offset 0x1000+)               │
│  AES-128-CBC encrypted               │
│  └── LZMA1 compressed                │
│       └── Voice guidance image (1MB)  │
│            ├── Header (version+count) │
│            ├── Entry table (54 × 8B)  │
│            │   (size, abs_offset)     │
│            └── MP3 files (48kHz mono) │
└───────────────────────────────────────┘

La Clave

AES-128-CBC Key: eibohjeCh6uegahf
AES-128-CBC IV:  miefeinuShu9eilo

Encontrados hardcodeados como cadenas ASCII en la sección .rodata del firmware MT2811 CM4 en el offset de flash 0xD53A (clave) y 0xD529 (IV). La misma clave se usa en todas las unidades WH-1000XM4 y todos los paquetes de idioma.

Cómo se Encontró

  1. Conectado a los WH-1000XM4 por Bluetooth (los auriculares estaban emparejados con un teléfono)
  2. Descubierto el servicio BLE GATT RACE (Airoha Command Extensions)
  3. Volcado 59 KB de firmware CM4 desde la flash usando RACE_STORAGE_PAGE_READ (cmd 0x0403)
  4. Localizada la S-box de AES en el offset de firmware 0x81F4
  5. Determinada la dirección base en tiempo de ejecución 0x04200000 a partir del literal pool de la tabla de vectores ARM
  6. Desensamblada la función de descifrado FOTA, rastreada la carga de la clave desde el literal pool

Detalles técnicos completos: docs/WRITEUP.md

Requisitos Previos

  • Bun ≥ 1.0 — para la CLI de TypeScript
  • uv — para los scripts de Python (las dependencias se resuelven automáticamente mediante metadatos en línea)

Extrae la Clave Tú Mismo

Si quieres verificar la clave de forma independiente, puedes volcar el firmware de tus propios auriculares WH-1000XM4 emparejados y extraer la clave de él:

# Dump firmware over BLE and extract key
uv run cli/extract_key.py

# Or if you already have a firmware dump:
uv run cli/extract_key.py --firmware your_dump.bin

# Bun alternative (firmware dump required):
bun run cli/extract.ts --extract-key your_dump.bin

La herramienta busca en el binario del firmware la S-box de AES, encuentra cadenas ASCII adyacentes de 16 bytes terminadas en nulo, luego valida cada par candidato intentando descifrar un paquete de voz y verificando si hay cabeceras LZMA válidas.

Estructura del Proyecto

Descargar herramienta