
BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
BLESuite هي حزمة بايثون تهدف إلى جعل التواصل مع أجهزة البلوتوث منخفض الطاقة (BLE) أكثر سهولة للمستخدم وتمكّن من إجراء اختبارات سريعة لأجهزة BLE. الإصدار 2 من BLESuite يزيل الاعتماد على PyGattlib وBlueZ ويستخدم بدلاً من ذلك نسخة معدّلة من PyBT (https://github.com/mikeryan/PyBT) لتنفيذ وإدارة حزمة BLE الخاصة بنا. هذا الإصدار يزيد من موثوقية الاتصال، ويعزز مرونة الاتصال، ويحسّن فحص الأجهزة، ويتيح اختبار التشويش (fuzzing) على الأجهزة في الطبقات المضيفة من حزمة البلوتوث. حزمة الاتصال التي تستخدمها BLESuite تسمح عمداً بإرسال طلبات/استجابات غير صحيحة البنية إلى الأجهزة بهدف تمكين اختبار الأجهزة.
الميزات:
blesuite وble-replayملاحظة للقارئ:
للوصول إلى وظائف البلوتوث منخفض الطاقة، يجب أن يتوفر لديك محول بلوتوث يدعمها.
الهدف من BLESuite هو توفير طريقة مبسّطة لبرمجة الاتصال بسرعة مع أجهزة BLE المستهدفة لأغراض تقييمات الأمان. وبالاقتران مع الانتقال من PyGattlib وBlueZ إلى PyBT، أصبح بإمكاننا الآن التحكم بشكل أكبر في حزمة BLE واستخدامها لاختبار طبقات حزمة BLE المختلفة لجهاز مستهدف.
بالإضافة إلى ذلك، لم تعد BLESuite مقتصرة على الدور المركزي فقط. تدعم BLESuite الآن الدور الطرفي وتتيح للمستخدمين تكوين وتشغيل خادم GATT بسرعة يمكن استخدامه لاختبار أجهزة BLE ذات الدور المركزي (أو الأجهزة ثنائية الدور).
فيما يلي تعليمات تثبيت حزمة بايثون BLESuite.
أنظمة التشغيل المدعومة:
تم تطوير BLESuite واختباره على Debian 9.3. قد تكون المكتبة مدعومة على توزيعات لينكس أخرى، ومع ذلك لا يُضمن الدعم حالياً.
ملاحظة: تمت المحاولات الحديثة لاستخدام BLESuite مع Fedora 28 بنجاح من خلال تثبيت العناصر التالية:
مع Fedora 28، تم الإبلاغ عن مشكلة واحدة غير قابلة للتكرار في BLESuite تتعلق بـ TypeError غير موجودة في تثبيتات Debian 9.3 عند محاولة معالجة طلب ATT وارد.
المساهمات لإصلاح هذه المشكلة مرحب بها!
البرمجيات المطلوبة
فيما يلي المتطلبات اللازمة لاستخدام BLESuite:
بعد تثبيت libbluetooth-dev وlibpython-dev وpython-sphinx، نفّذ الأمر التالي لتثبيت تبعيات بايثون المتبقية:
pip install -r requirements.txt
من مجلد docs، نفّذ:
make html
بعد ذلك، ستتوفر مجموعة كاملة من التوثيق والأدلة المرجعية في docs/_build/html.
نفّذ الأمر التالي لتثبيت حزمة بايثون:
python setup.py install
إذا كنت لا تريد تثبيت واجهة برمجة تطبيقات BDADDR الخاصة ببايثون أو تواجه مشاكل في تثبيتها، قم بتعليق السطر التالي في setup.py وأعد تنفيذ الأمر أعلاه:
ext_modules = [c_ext],
حتى الآن، تدعم BLESuite اقتران LE Legacy JustWorks فقط. تم تحديد مدير الأمان (Security Manager) في معظمه، لكن ما تزال البرمجة التشفيرية المتبقية لـ LESC ونماذج الارتباط البديلة بحاجة إلى التنفيذ.
عملية الكتابة الموقّعة (Signed Write) في ATT غير مدعومة حالياً من قبل BLESuite. هذه ليست عملية شائعة الاستخدام، ومع ذلك فمن أجل دعم وضع الأمان 2 (Security Mode 2)، ينبغي دعمها.
تدعم BLESuite حالياً العناوين العامة (Public) والعناوين العشوائية (Random) الثابتة فقط. ومع ذلك، يمكن أن تكون العناوين العشوائية من نوعين فرعيين: ثابتة (Static) أو خاصة (Private). ويمكن أيضاً تقسيم العنوان العشوائي الخاص إلى نوعين فرعيين غير مدعومين حالياً من BLESuite: العنوان الخاص غير القابل للحل (Non-resolvable Private Address) والعنوان الخاص القابل للحل (Resolvable Private Address) (يُحل باستخدام IRK المتبادل أثناء الاقتران).
وبالتالي، فإن وظيفة تعيين هذه الأنواع من العناوين لمحول المضيف غير متاحة حالياً من خلال BLESuite. كما أن القدرة على حل العناوين العشوائية القابلة للحل لجهاز مقابل بناءً على IRK متبادل لم تُنفَّذ بعد.
مع اكتمال بناء المكتبة، تتمثل الخطوة التالية في بناء أدوات تقييم أمان تستخدم هذه المكتبة.
أحد الأمثلة على ذلك التي أدرجناها مع هذه المكتبة هو ble-replay، والذي يمكنه استيعاب التقاط حزم BLE
وإعادة تشغيل حركة مرور GATT إلى جهاز مستهدف. يمكن لـ ble-replay المساعدة بسرعة في
تحديد ثغرات أمان طبقة التطبيق المتعلقة بهجمات إعادة التشغيل (Replay Attacks).
هذه الأنواع من الأدوات تقلل الوقت المستغرق في تحليل التقاطات الحزم يدوياً وبرمجة حالات اختبار اتصالات BLE يدوياً.