Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
jbl-wave-buds2-firmware-research — ملاحظات هندسة عكسية وأدوات Python لبرنامج ثابت (firmware) لسماعات JBL Wave Buds 2 (BES1306): تنسيق حاوية OTA، وتخطيط الذاكرة الوميضية (flash layout)، وبروتوكول BLE/GATT، ونموذج الثقة CRC-32. | Kitploit
أدوات/GitHubGitHub/c8dhjp4tyv-bit/jbl-wave-buds2-firmware-research
أمان الأنظمة المدمجةأمن البلوتوثأمان إنترنت الأشياءالاستغلالالهندسة العكسيةالتشفيرأمان الأجهزة وإنترنت الأشياءتحليل الملفات الثنائيةالأوراق والأبحاث

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
تحليل البرامج الثابتة
GitHubc8dhjp4tyv-bit/jbl-wave-buds2-firmware-research

jbl-wave-buds2-firmware-research

ملاحظات هندسة عكسية وأدوات Python لبرنامج ثابت (firmware) لسماعات JBL Wave Buds 2 (BES1306): تنسيق حاوية OTA، وتخطيط الذاكرة الوميضية (flash layout)، وبروتوكول BLE/GATT، ونموذج الثقة CRC-32.

عرض المستودع
133منذ يوم واحدلم تتم المراجعة بعد

JBL Wave Buds 2 — هندسة عكسية للبرنامج الثابت و OTA

Tests

ملاحظات هندسة عكسية وأدوات قابلة لإعادة الإنتاج لسماعات JBL Wave Buds 2 (شريحة Bestechnic BES1306، معرّف المنتج 2100): تخطيط الذاكرة الوميضية (flash)، وصيغة حاوية OTA حتى مستوى البايت، وبروتوكول أوامر BLE/GATT، والنقل المشفّر "TOTA v2" من BES، وحدود الثقة على جانب الجهاز والتطبيق، ووحدة التحكم الخاصة بالمصنع، وطريقة قابلة لإعادة الإنتاج لتحميل صورة مبنية ذاتيًا على وحدة تملكها.

يغطي التحليل نسختين — wavebuds.elf المُحلَّل بـ IDA (أبريل 2025) وحزمة التوزيع 2.9.0 (سبتمبر 2026) — حاوية OTA محددة بالكامل من 8 تدفقات (تم التحقق منها عبر إعادة تجميع مطابقة بايتًا ببايت)، ونموذج سلامة CRC-32 المؤكَّد على جانبي التطبيق والجهاز، وجدول أوامر مصنع من 54/59 مدخلًا، و12 متغير حالة OTA في RAM، وتعدادًا لـ 7,960 دالة، ومقارنة تفاضلية بين النسختين. الاسترداد الدلالي عميق بالنسبة للأنظمة الفرعية الخاصة بـ OTA/الفلاش/CRC/المصنع، ومقتصر على التعداد في ما عدا ذلك — راجع تدقيق الاكتمال.

[!WARNING] هذا بحث عتاد يُجريه المالك، وليس تحديثًا رسميًا من JBL. كتابة صورة معدّلة عملية لا رجعة فيها: مرحلة التنزيل مجزّأة وآمنة من الإفساد (brick-safe)، لكن تفعيل صورة صالحة وفق CRC لكنها معطوبة لا يملك مسار استرداد مكشوفًا. اقرأ SAFETY.md قبل إعادة إنتاج أي شيء.

النسخة التركية: README.tr.md

سماعات JBL Wave Buds 2 المُختبرة في التطبيق المرافق: كلتا السماعتين متصلتان بنسبة 100%، وجميع عناصر التحكم تعمل

النتيجة على العتاد في الوحدة المُختبرة: بعد التحقق من خط أنابيب OTA عبر التطبيق + شهادة CA للمستخدم بنمط MITM، تتصل كلتا السماعتين وتُبلغا بنسبة 100%، ويعمل كل عنصر تحكم في التطبيق (ANC/Ambient، الإيماءات، EQ). قُبلت الصورة المعدّلة ببايت واحد بالطريقة نفسها وبقي الجهاز يعمل بكامل وظائفه.

النتائج المؤكَّدة

العناوين مأخوذة من النسخة المُحلَّلة (wavebuds.elf)؛ راجع سجل العناوين والمصدر.

  • صورة OTA غير موقَّعة تشفيريًا. السلامة على جانب الجهاز هي CRC-32 فقط — يتحقق المعالج 0x2C0918BC من الإعدادات، ومن كل مقطع، ومن الصورة بأكملها باستخدام روتين CRC-32 0x2C0CE944 (الجدول 0x2C0F5218) إضافة إلى سحر "BEST". قُبلت صورة صالحة وفق CRC مع بايت واحد معدّل وتم إقلاعها.
  • مدقّق RSA-2048 في التطبيق (com.jbl.counterfeit.Rsa2048DynamicVerifier) مخصّص لمكافحة التقليد (أصالة الجهاز)، وليس لتوقيع البرنامج الثابت.
  • التطبيق لا يثبّت (pinning) نقاط نهاية OTA الخاصة به؛ يكفي تثبيت شهادة CA من المستخدم لاعتراض إعدادات OTA وإعادة كتابتها.
  • OTA مجزّأ: تُنسخ الصورة الجديدة إلى قاعدة الفلاش 0x28120000 بينما يبقى التطبيق قيد التشغيل دون مساس، لذا فإن مرحلة التنزيل آمنة من الإفساد.
  • لا يمكن لجهاز BLE مركزي خارجي أن يقود OTA: المعالجات مقيّدة بحالة TWS/اتصال داخلية (0x2C0905E4: MEMORY[0x20026BA0] ∈ {2,4}).
  • يشتق نقل TOTA v2 من BES مفتاح جلسة AES-128 بالكامل على جانب العميل؛ لا يوجد سرّ على الخادم/الجهاز.
  • يمكن لـوحدة تحكم المصنع/الهندسة (59 أمرًا في النسخة المُحلَّلة، و54 في 2.9.0) قراءة/كتابة هوية الجهاز (عنوان MAC/BLE)، ومعايرة البلورة (crystal trim)، ومفتاح ربط BT. إمكانية الوصول إليها عبر الأثير UNRESOLVED.
  • النسختان مُصرَّفتان ومُعاد تموضعهما بشكل منفصل: المنتج نفسه، عناوين مُزاحة، 59 ← 54 مدخل مصنع. راجع المقارنة التفاضلية.

التعديل المُختبر

التعديل أدنى ما يمكن عمدًا — بايت واحد من الصورة بعد فك الضغط. يغيّر سلسلة نواة RTX من RTX V5.5.1 إلى V5.5.2 عند الإزاحة بعد فك الضغط 64096، ويُعاد حساب CRC-32 للحاوية. وهو تجميلي بحكم التصميم: الهدف هو إثبات أن الجهاز يقبل صورة معدّلة لكنها صالحة وفق CRC، وليس تغيير السلوك.

Base (owner-supplied; not redistributed)
  official 2.9.0 package   549,558 bytes   SHA-256 836cb251f9fb2261dde14f39ba18d358c48018817f3c3d1b527e1ac5f3ab7ba2
  decompressed image       955,596 bytes   SHA-256 489663e80b76f20f4c94671064908569fac5f4e3df10ab6d7369baffe094f67d
  container CRC-32          A0C7CCEC (valid), input range [0x0, 0x862AD)

يحتوي المستودع عمدًا على لا يوجد برنامج ثابت JBL. وفّر حزمتك التي حصلت عليها بشكل قانوني وأعد إنتاج:

python3 tools/ota_unpack.py  <official_2.9.0_package.bin> --extract image.bin
python3 tools/ota_repack.py  make-test <official_2.9.0_package.bin> test.bin
python3 tools/ota_unpack.py  test.bin      # exactly one decompressed byte differs; CRC valid

تعتمد البايتات الدقيقة للحاوية المُعاد تجميعها على مُرمِّز LZMA؛ فالجهاز يتحقق من CRC-32، وليس من تجزئة الحزمة (انظر docs/04)، والفرق المُفكَّك الضغط ذو البايت الواحد حتمي. أما التسليم عبر التطبيق فهو في docs/08.

المخططات

خريطة الفلاشتقسيم NOR بسعة 2 ميغابايت
تدفق أوامر OTAالتسلسل ونقاط تحقق CRC-32 الخاصة به
حدود الثقةما تتحقق منه كل مرحلة، وأين تكمن ثقة الصورة

التوثيق

تنزيل الأداة