كيف اخترقت جهاز تتبع اللياقة Xiaomi MiBand 2 – دليل Linux خطوة بخطوة

هذا دليل خطوة بخطوة حول كيفية اختراق جهاز تعقب اللياقة البدنية بتقنية Bluetooth منخفض الطاقة (BLE) حتى أتمكن من التحكم فيه من Linux.

بدأت هذه القصة من مشاركة على Facebook أتحدث فيها عن مشكلة عدم وجود واجهة برمجة تطبيقات لمتتبعي اللياقة البدنية ، ولماذا لا يساعد ذلك علماء البيانات في صنع أشياء رائعة لهم.

أثار هذا المنشور قدرًا كبيرًا من النقاش وبعد لفت انتباه صديقي فولوديمير شيمانسكي الذي حاول مساعدتي ووجد بعض التعليمات البرمجية على Github من Leo Soares لمتتبع اللياقة البدنية MiBand 2. حاول تشغيله ، ولكن هناك كانت بعض المشاكل مع الاتصال. لقد أصلح المشكلة في غضون ساعات قليلة ، وأرسل الرمز لي وأرسل لي رابطًا.

لقد دفعني ذلك إلى الصدارة. الرمز الذي سمحت لي بالاتصال به جهاز MiBand 2 وتشغيل الإخطارات والحصول على قياس القلب. لكن هذا لم يكن كافيًا لما أردت القيام به. كنت بحاجة إلى الحصول على بيانات أولية في الوقت الفعلي من أجهزة الاستشعار لاستخدامها في تجارب علوم البيانات الخاصة بي. كنت أرغب في عمل مؤشر للتمارين الرياضية.

لذلك قررت أن أخترق متتبع اللياقة البدنية الخاص بي.

يبدأ المرح

لم تكن لدي أي خبرة في العمل مع أجهزة BLE ، لذلك حاولت أولاً أن أفهم كيفية عمل التكنولوجيا وكيف تتلاءم القطع المختلفة معًا. كما اتضح ، كان الأمر بسيطًا جدًا وهنا ملخص.

هذا هو كل ما تحتاج إلى معرفته لبدء العمل مع متتبع اللياقة البدنية.

ستحتاج أيضًا إلى تطبيقين يساعدك في تصحيح أخطاء جهاز BLE – محلل بروتوكول Wireshark ومصحح أخطاء BLE. وستحتاج إلى الوصول إلى خيارات مطوري هواتف Android (آسف يا مستخدمي iOS ولكن سيتعين عليك العثور على الخيارات المكافئة لمنصة iOS).

للبدء ، ستحتاج إلى إلغاء إقران جهاز MiBand2 الخاص بك من تطبيق الهاتف.

لذلك دعونا نرى الآن ما هي الخدمات والخصائص التي تتمتع بها فرقتنا. افتح مصحح أخطاء BLE وقم بإجراء فحص. سترى شيئًا كهذا.

احفظ عنوان MAC الخاص بجهازك في مكان ما ، وسنحتاج إليه لاحقًا. دعنا الآن نتصل بها ونرى ما هي الخدمات والخصائص التي بها.


من هاتين العمليتين البسيطتين ، حصلنا بالفعل على بعض المعلومات المفيدة حول أجهزتنا. هناك طريقة أخرى للقيام بذلك وهي استخدام أدوات سطر الأوامر مثل hcitool و gatttool .

لإجراء فحص BLE من سطر الأوامر:

الاتصال بعنوان Mac الخاص بجهاز BLE واسترجاع الخدمات والوصفات:

في بعض الحالات ، يمكن أن يحدث خلل في مكدس BLE ويمكنك تشغيل / إيقاف تشغيل جهاز البلوتوث أو تشغيل هذا الأمر:

التحضير لاستنشاق البيانات

لاستنشاق البيانات من الهاتف عند الاتصال بجهاز BLE ، سنحتاج إلى تمكين سجلات البلوتوث في إعدادات التطوير. للقيام بذلك ، تحتاج إلى تشغيل إعدادات المطور على جهاز Android الخاص بك أولاً. للقيام بذلك ، اتبع الخطوات أدناه.

في Android 4.1 والإصدارات الأقدم ، تتوفر شاشة خيارات المطور افتراضيًا. في Android 4.2 والإصدارات الأحدث ، يجب تمكين هذه الشاشة على النحو التالي:

افتح الآن إعدادات dev وابحث عن “ Enable Bleutooth HCI snoop log ” وقم بتمكينه. بعد ذلك ، سيتم تسجيل جميع اتصالات Bluetooth من الجهاز مع أي جهاز Bluetooth خارجي. يمكن عرض السجلات من خلال الوصول إلى ملف يسمى btsnoop_hci.log (في حالة جهازي الذي يعمل بنظام التشغيل Android 7.0 ، فهي موجودة على /mtklog/btlog/btsnoop_hci.log).

المصادقة

لذا سنحتاج الآن إلى تنفيذ الخطوات التالية للحصول على بعض المعلومات حول كيفية عمل المصادقة (الاقتران).

سترى شيئًا مثل هذا:

كما يتضح من الشكل أعلاه ، فإن قيم UUID للمقبض هي:

وإليك خطوات المصادقة:

بيانات الوقت الفعلي

كانت عملية المصادقة معقدة بعض الشيء ، وإضافة إلى المشكلات ، تم إيقاف تشغيل جهاز مراقبة معدل ضربات القلب بعد 15 ثانية. فيما يلي قيم UUID التي تم الحصول عليها من الجهاز:

وإليك كيفية تنفيذ بعض الإجراءات المشتركة:

تحليل البيانات

لم يكن فهم كيفية تحليل البيانات أمرًا مثيرًا للاهتمام ، حيث كنت بحاجة إلى معرفة كيفية فك ضغط البيانات التي تأتي من الجهاز.

يمكن تحليل جزء منه من السجلات والبعض الآخر لا يمكن.

قد يستغرق البحث عن الحزم الصحيحة والتشفير بعض الوقت. في حالتي ، حاولت العثور على تكرارات بايت متشابهة في حزم بجانب بعضها البعض ، وبعضها يتكرر داخل حزمة.

يمكننا رؤية نمط واضح مع تكرار السلسلة 368c 328c 2e8c 3c8c 338c 308c 3f8c والحزمة يبلغ طولها 16 بايت. إذا قمنا بفك هذا باستخدام 2 بايت قصير بدون إشارة ، فسنحصل على 7 قياسات أولية لمستشعر القلب.

نرى أيضًا أن البايت الثاني يتكرر فقط ، وأعتقد أنه مجرد فارق زمني بين القياسات (الردود)

أما بالنسبة للجيروسكوب ، فقد كان أصعب قليلاً. لكن أفكاري كانت أنه يجب تعبئتها بطريقة مماثلة لبيانات القلب ، ولكن في هذه الحالة لدينا 3 قياسات لكل محور جيروسكوبي والتي يجب توقيعها وطول الحزمة هو 20 بايت. لذلك لن تغطي قياسات 12 x و y و z جميع الحزم ، لكن 3 ستغطيها ، تاركًا أول 2 بايت (كما هو الحال في الحزمة السابقة). لذلك جربت هذا وعملت. 😃

الرمز

يمكنك العثور على الكود على Github كالمعتاد ، مع توفير مثال على الاستخدام. الأمر بسيط جدًا ، لذلك لست بحاجة إلى مزيد من التفصيل في هذه المقالة.

دعم

كن راعياً وادعم مجتمعنا لتقديم المزيد من المقالات الشيقة & amp؛ البرامج التعليمية

احصل على مقالات شيقة كل يوم – اشترك في قناة Telegram

قراءة مقالاتي الحديثة الأخرى