
فك تشفير واستخراج ملفات الصوت التوجيهي بصيغة MP3 من حزم الصوت المشفرة لسماعات Sony WH-1000XM4. تم استخراج مفتاح AES عبر تفريغ البرامج الثابتة للبلوتوث لشريحة Airoha MT2811.
قم بفك التشفير واستخراج ملفات MP3 الخاصة بالتوجيه الصوتي من ملفات البرامج الثابتة المشفرة لسماعة Sony WH-1000XM4.
تم استخراج مفتاح AES-128-CBC عن طريق تفريغ البرامج الثابتة لشريحة Airoha MT2811 عبر تقنية Bluetooth Low Energy باستخدام بروتوكول RACE، ثم تفكيك روتين فك تشفير FOTA الخاص بمعالج ARM Cortex-M4. الشرح الفني الكامل: docs/WRITEUP.md
# تثبيت 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
# استخراج كل شيء — تحميل تلقائي من CDN الخاص بسوني إذا كان مجلد voice-packs/ فارغاً
bun run cli/extract.ts --all [input-dir] [output-dir]
# استخراج حزمة صوت واحدة
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 [output-dir]
uv run extract_all.py
يقوم بالتنزيل من CDN الخاص بسوني + فك التشفير + الاستخراج — كل ذلك في أمر واحد. يتم تعريف التبعيات في النص نفسه (PEP 723) — uv run يتولى كل شيء تلقائياً.
┌───────────────────────────────────────┐
│ الرأس (4096 بايت) │
│ ├── 0x000 قيمة عشوائية (32 بايت) │
│ └── 0x100 بيانات وصفية TLV │
│ ├── compression_type = 2 │
│ ├── body_size │
│ ├── decompressed_size (1 MB) │
│ └── SHA-256 للمفكوكة │
├───────────────────────────────────────┤
│ الجسم (الإزاحة 0x1000+) │
│ مشفر بـ AES-128-CBC │
│ └── مضغوط بـ LZMA1 │
│ └── صورة التوجيه الصوتي (1MB) │
│ ├── الرأس (الإصدار+العدد) │
│ ├── جدول الإدخالات (54 × 8B) │
│ │ (الحجم, الإزاحة المطلقة) │
│ └── ملفات MP3 (48kHz أحادية) │
└───────────────────────────────────────┘
AES-128-CBC Key: eibohjeCh6uegahf
AES-128-CBC IV: miefeinuShu9eilo
موجود بشكل صريح كنصوص ASCII في قسم .rodata الخاص بالبرامج الثابتة لـ MT2811 CM4 عند إزاحة الفلاش 0xD53A (المفتاح) و 0xD529 (IV). نفس المفتاح يُستخدم عبر جميع وحدات WH-1000XM4 وجميع حزم اللغات.
RACE_STORAGE_PAGE_READ (الأمر 0x0403)0x81F40x04200000 من مجموعة النصوص الحرفية لجدول ناقلات ARMالتفاصيل الفنية الكاملة: docs/WRITEUP.md
إذا كنت ترغب في التحقق من المفتاح بشكل مستقل، يمكنك تفريغ البرامج الثابتة من سماعة WH-1000XM4 الخاصة بك واستخراج المفتاح منها:
# تفريغ البرامج الثابتة عبر 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، ثم يجد السلاسل ASCII المجاورة المحددة بـ 16 بايت والمنتهية بصفر، ثم يتحقق من كل زوج محتمل عن طريق محاولة فك تشفير حزمة صوت والتحقق من وجود رؤوس LZMA صالحة.
├── cli/
│ ├── extract.ts # أداة Bun CLI (استخراج + إيجاد المفتاح)
│ └── extract_key.py # مبرمج Python لتفريغ BLE + إيجاد المفتاح
├── docs/
│ └── WRITEUP.md # شرح فني كامل
├── voice-packs/ # ملفات .bin التي تم تنزيلها (تم تجاهلها بواسطة git)
├── extracted/ # مطالبات MP3 المستخرجة (تم تجاهلها بواسطة git)
├── extract_all.py # بديل Python للاستخراج
├── package.json
└── README.md
يُوثق هذا المشروع بحثًا أمنيًا تم إجراؤه لأغراض تعليمية على أجهزة مملوكة شخصيًا. السماعات التي تم تحليلها كانت مقترنة ومتصلة بشكل عادي — لم يكن هناك أي وصول غير مصرح به.
ملفات .bin لحزم الصوت ومطالبات MP3 المستخرجة محمية بحقوق الطبع والنشر لشركة Sony Corporation و غير مضمنة في هذا المستودع. تقوم أداة CLI بتنزيلها مباشرة من CDN العام لسوني أثناء التشغيل. لا تقم بإعادة توزيع حزم الصوت المفكوكة أو ملفات MP3 المستخرجة. هذه الأداة مقدمة لأغراض البحث وقابلية التشغيل البيني فقط.
MIT
| اللغة | الملف | المطالبات | CDN |
|---|
| 🇬🇧 إنجليزية | VP_english_UPG_03.bin | 54 | تنزيل |
| 🇫🇷 فرنسية | VP_french_UPG_03.bin | 54 | تنزيل |
| 🇩🇪 ألمانية | VP_german_UPG_03.bin | 54 | تنزيل |
| 🇪🇸 إسبانية | VP_spanish_UPG_03.bin | 54 | تنزيل |
| 🇮🇹 إيطالية | VP_italian_UPG_03.bin | 54 | تنزيل |
| 🇵🇹 برتغالية | VP_portuguese_UPG_03.bin | 54 | تنزيل |
| 🇳🇱 هولندية | VP_dutch_UPG_03.bin | 54 | تنزيل |
| 🇸🇪 سويدية | VP_swedish_UPG_03.bin | 54 | تنزيل |
| 🇫🇮 فنلندية | VP_finnish_UPG_03.bin | 54 | تنزيل |
| 🇹🇷 تركية | VP_turkish_UPG_03.bin | 54 | تنزيل |