عكس الهندسة التقدير - 💡 Fix My Ideas

عكس الهندسة التقدير

عكس الهندسة التقدير


مؤلف: Ethan Holmes, 2019

كريج فيدريي ، نائب رئيس شركة أبل الرئيسي لهندسة البرمجيات في WWDC.

مرة أخرى في يونيو من العام الماضي - في WWDC - أعلنت شركة أبل بهدوء عن iBeacon. لم يتم حتى ذكر إشارة في الكلمة الرئيسية ، والتي تظهر في شريحة واحدة فقط عنها"... بعض الميزات الأخرى في SDK." لكن بالنسبة لأفراد الأجهزة ، كانت في الواقع واحدة من أبرز الميزات في أحدث إصدار من نظام التشغيل Apple ، وانفجرت خلاصة Twitter الخاصة بي. يبحث الناس دائمًا عن أدوات جديدة لتمكينهم من القيام بأشياء جديدة.

لن أتحدث هنا حقًا عن الانقسام بين Google المثير للاهتمام والمثير للإعجاب إلى حد ما ، والذي كان يعتمد في البداية على تقنية NFC وقد أضاف مؤخرًا دعم Bluetooth LE إلى Android و Apple ، مما تجنب NFC وركز على إيجاد بدائل الاستفادة من كل من Wi-Fi و Bluetooth LE — على سبيل المثال من خلال طرح AirDrop كبديل لخدمة مشاركة الملفات Bump المغلق الآن من Google. على الرغم من أنني أعتقد أن اختيار تلك التقنيات المنافسة يخبرنا فعليًا بالكثير عن الشركتين ، فهذه وظيفة أخرى بالكامل.

في ما يمكن أن يكون سوقًا للسلع بسهولة - بعد أن لم يكن iBeacon هو تقنيته - يُنظر إلى التقديرات على أنها الشركة الرائدة في السوق ، ويتم الترويج لها بشكل كبير كواحدة من حفنة من الشركات الشريكة في جناح Nordic في معرض CES الأسبوع المقبل.

ما هو iBeacon؟

iBeacon هي تقنية تتيح لك إضافة سياق حقيقي إلى تطبيقات الهواتف الذكية. استنادًا إلى تقنية Bluetooth LE ، وهي جزء من معيار Bluetooth 4.0 الجديد ، إنها وسيلة لتوفير التنقل الداخلي الأساسي وتم دمج iBeacon في نظام التشغيل iOS 7 داخل Core Core وأطر عمل Passkit على حد سواء لتمكين الموقع الصغري الداخلي والتأليف الجغرافي.

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

بناء iBeacon الخاصة بك

من السهل إلى حد ما إنشاء iBeacon الخاص بك - إما باستخدام Raspberry Pi أو باستخدام لوحة Bluetooth LE مثل لوحة Red Bear Labs BLE Mini - وهناك بعض الأشخاص الذين يستفيدون من ذلك لتحقيق ربح سريع.

على سبيل المثال نصف قطر الشبكات هو بيع أ "مجموعة تطوير iBeacon" الذي يتكون من Raspberry Pi ، ودونجل USB Bluetooth ، وبطاقة SD 8 جيجابايت. بتكلفة حوالي 45 دولارًا عند شرائها بشكل منفصل بسعر التجزئة الكامل ، يقومون ببيعها معًا مقابل 100 دولار. إنه تمييز كبير ، خاصة وأنهم لن يشتروا المكونات في تجارة التجزئة ، مع القليل جدًا من القيمة المضافة لشراء قطع الغيار بشكل منفصل واتباع الإرشادات البسيطة إلى حد ما الخاصة ببناء قطع الغيار الخاصة بك.

لكي نكون منصفين ، أعتقد أن Radius هو مجرد بيع المجموعة كخط جانبي للترويج لعرض برامجهم ، وقد نشروا أعمالهم في الهندسة العكسية لملف تعريف iBeacon Bluetooth ، وزيادة استجابة iBeacon إلى الحد الأقصى من بين أشياء أخرى.

التقدير

الطريقة التي سمعت بها ، أدهشها تقدير. هناك ، كانوا يتجولون مع "إشارات Bluetooth LE" التي يمكن استخدامها من قبل الهواتف الذكية لإصلاح المواقع الداخلية ، دون أن يبدي الناس اهتمامًا كبيرًا ، ثم كان هناك Apple - و iBeacon ، وانتهى بهم الأمر ببضعة أشهر بداية على المنافسة. بالطبع ، قد تكون هذه هي النسخة الأسطورية الحضرية - أو على الأقل نسخة مراجعة - من تاريخ الشركة الخاصة بها ، والتي تم إخبارها في الحانات ولوبيات المؤتمرات وأماكن أخرى يجتمع فيها المطورون. ولكن لديها حلقة معينة من الأصالة لذلك.

على الرغم من ذلك - وأيًا كانت القصة الحقيقية - عند مناقشة iBeacon ، فغالبًا ما تسمع العبارة "... مثل تقدير". إنها غير عادلة بعض الشيء في منافستهم ، وهناك منافسون هم Ro Rim و TwoCanoes و Sonic Notify و Radius Networks وعدد قليل من الآخرين ، لكنني أعتقد أن هذه هي الاستراحات.

في الواقع ، لا يزال من الصعب إلى حد ما الحصول على مجموعة معاينة مطور Estimote - لأنه لا يزال يشحن بأعداد محدودة - لكنني تمكنت من الحصول على واحدة من مجموعات المطورين المبتدئين مرة أخرى في نوفمبر من العام الماضي ، وكما هو متوقع ، استولت على أحد المنارات بعيدا، بمعزل، على حد.

أول ما تلاحظه هو أنه لا يوجد زر تشغيل / إيقاف ، الجهاز يبث طوال الوقت ، حتى قبل الخروج من العبوة. يتم شحنها مباشرة ، والتي يمكن أن تصبح مثيرة للاهتمام.

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

بنيت منارة تقدير حول الشمال أشباه الموصلات nRF51822. يمكنك أيضًا رؤية الهوائي الموجود على متن الراديو لراديو Bluetooth LE على يمين الصورة.

تم بناء تقدير حول حول أشباه الموصلات Nordic nRF51822 ، وهو ما يفسر وجودهم على كشك الشمال في CES. إنها شريحة رائعة ، وهي في الأساس وحدة معالجة ARM Cortex M0 32 بت مع ذاكرة فلاش بسعة 256 كيلوبايت وذاكرة وصول عشوائي بسعة 16 كيلوبايت مع راديو 2.4 جيجا هرتز يدعم كلا من Bluetooth LE وكذلك تشغيل 2.4 جيجا هرتز - حيث يكون وضع 2.4 جيجا هرتز متوافقًا مع الهواء مع منتجات سلسلة nRF24L من الشمال.

يتم تسويق المنارات على أنها تشتمل على مستشعر درجة الحرارة ومقياس التسارع - على الرغم من أننا سنرى لاحقًا أنه لم يتم الإعلان عن أيٍّ منهما كجزء من GATT ، ولا يمكن الوصول إلى حزم البيانات ، على الأقل في الوقت الحالي.

أفترض الآن - أن مستشعر درجة الحرارة الذي يتحدثون عنه هو الجهاز المدمج في ARM Nordic نفسه ، وأن مقياس التسارع هو الشريحة الأصغر (على يسار الصورة)"8237 C3H DEA3H" على الرغم من أنه سيتعين عليّ الاعتراف بأنني لم أتعقب ورقة البيانات الخاصة بهذه الشريحة حتى لا أعرف ذلك بشكل مؤكد.

تعلن شركة Estimote عن نطاق يبلغ حوالي 230 قدمًا (حوالي 70 مترًا) لإشاراتها. ومع ذلك ، فإن الاختبار يضع النطاق أقل بكثير ، في مكان ما على بعد حوالي 130 قدمًا (حوالي 40 مترًا) من الصندوق ، بدقة متغيرة للغاية. بقدر ما أستطيع أن أخبركم يجب ألا تعتمدوا على قياسات القرب على الإطلاق ، على الأقل من اختباراتي الخاصة ، تختلف قياسات القرب هذه بسرعة - من المفترض بسبب التداخل اللاسلكي.

كما أنهم يتوقعون عمر بطارية يصل إلى عامين. ومع ذلك ، وصل منارة لدينا إلى 55 في المائة من الرسوم ، وهو الآن عند 33 في المائة بعد شهر واحد فقط ، بحيث يبدو إلى حد ما تنبؤًا متفائلًا - ويجعل هذا الضميمة المغلقة مسؤولية أكثر من الأصل.

من المثير للاهتمام أن جميع منارات Estimote في جميع مجموعات معاينة مطور البرامج الخاصة بهم يتم شحنها باستخدام UUIDs متطابقة - تم إصلاح UUID لكل منارة - ولا يخططون لإضافة القدرة على تغيير UUID في أي وقت قريب. هذا يعني أنه لا يمكنك استخدامها في بيئة إنتاج بالطريقة التي تقصدها Apple ، أو على الأقل ، دون إجراء بعض التعديلات.

أنت أيضًا مؤمن بشكل فعال في استخدام iOS SDK المصدر المغلق الخاص بك إذا كنت تستخدم أجهزتهم ، لأن أجهزة iBeacon الأخرى لن تعمل مع SDK الخاصة بهم ، وإذا كنت تستخدم القاسم المشترك الأدنى - إطارات عمل الموقع الأساسية وموقع Passkit من Apple - للتحدث مع مجموعة غير متجانسة من أجهزة iBeacon ، فأنت عالق في وضع القراءة فقط مع إشارات Estimote نفسها. قد تكون هذه مشكلة حقيقية في المستقبل ، سواء بالنسبة للمستخدمين النهائيين أو تقدير أنفسهم.

الآن قد أقدر الآن أيضًا تطبيق Android SDK مفتوح المصدر. ومع ذلك ، لا يبدو لي أن هناك ميزة كبيرة في حبسك في SDK الخاصة به على نظام Android على أنه - على عكس iOS SDK - لا يمكن تكوين منارات استخدامه ، لذلك أنت عالق مع وضع القراءة فقط في بأي حال. يمكنك أيضًا استخدام إحدى المكتبات العامة المصممة لـ iBeacons على Android ، وتكون قادرًا على التحدث إلى أجهزة الجميع ، وليس فقط Estimote.

بعد ذلك ، يجب أن يتم تكوين المنارات نفسها بواسطة iOS SDK مغلق المصدر ، وفي الوقت الحالي على الأقل تظل خدمات وخصائص أجهزة Bluetooth LE GATT - على الأقل رسميًا - غير موثقة.

لكي نكون منصفين مع Estimote ، لم تقم Apple - على الأقل رسميًا - بتوثيق مواصفات iBeacon علنًا حتى الآن ، على الرغم من أن الوثائق غير الرسمية المستندة إلى مثال Apple الخاص قد بدأت تظهر. بالإضافة إلى الأجهزة بعد ذلك ، يجب أن نلقي نظرة فاحصة على برنامج إشارات معاينة مطور البرامج ومعرفة ما إذا كان يمكننا معرفة كيفية عملها.

ماذا يعلن منارة الإقدر؟

باستخدام حزمة Sandeep النبيلة لـ node.js ، يمكننا أن ننظر إلى ما تم الإعلان عنه بواسطة أحد المنارات ، وذلك باستخدام البرنامج النصي لاكتشاف الإعلان المتضمن في الحزمة.

منارة تقدير - تم انتقاؤها عشوائيًا من مجموعة معاينة المطور - بعنوان Bluetooth E7: 44: 89: 31: ED: 4E تعلن عن اسم محلي لـ "Estimote" جنبا إلى جنب مع بعض بيانات الخدمة والشركة المصنعة. ومع ذلك ، لا يبدو أنها تعلن عن أي معرّفات UUID للخدمة.

بعد إلقاء نظرة فاحصة على بيانات التصنيع ، كانت البيانات التي أعلنها المنارة ،

4C00 02 15 B9407F30F5F8466EAFF925556B57FE6D ED4E 8931 B6

تحطيم هذا ،

  • أول وحدتي بايت هما معرف شركة Apple (Little Endian) 0x0042.
  • تحدد البايتة الثالثة - على الأرجح على الأقل - نوع البيانات ، وهو 2.
  • تحدد البايت الرابع طول البيانات المتبقية ، 21 بايت.
  • تحتوي إشارات الإقلاع على UUID ثابت لـ iBeacon من B9407F30-F5F8-466E-AFF9-25556B57FE6D.
  • البايتان التاليتان بعد iBeacon UUID هما iBeacon Major (Big Endian) ، أي 0xED4E ، 60750.
  • البايتان التاليتان بعد iBeacon Major هما iBeacon Minor (Big Endian) ، أي 0x8931 ، 35121.
  • البايت الأخير هو RSSI المقاس على بعد متر واحد ، على سبيل المثال 0xB6 ، -74.

على نحو فعال ، لا يقوم Estimote بأي شيء خاص هنا ، فهذه مجرد بيانات iBeacon قياسية. ثلاثة من الخصائص تخلق هوية المنارة. هؤلاء هم:

  • UUID - هذه خاصية فريدة لكل شركة ، وفي معظم الحالات تستخدم نفس UUID لجميع الرموز التي تنشرها شركة (أو مجموعة). التقديرات غير عادية من حيث أنها حددت UUID للجميع"هم" منارات لتكون هي نفسها.
  • رئيسي - الخاصية التي تستخدمها لتحديد مجموعة من الرموز ذات الصلة ، على سبيل المثال تشترك جميع المنارات الموجودة في متجر واحد في نفس القيمة الرئيسية.
  • ثانوية - الخاصية التي تستخدمها تحدد منارة معينة في الموقع.

نحن بحاجة إلى إلقاء نظرة على بيانات الخدمة التي أعلنها المنارة ،

0A18 4EED318944E7 B6 4EED 3189

لرؤية أي شيء تقدير محددة ،

  • تحديد وحدتي بايت الأولى بيانات الخدمة هذه لخدمة مع UUID 0x180A.
  • البايتات الستة التالية هي عنوان Bluetooth ولكن بترتيب عكسي ، E7: 44: 89: 31: ED: 4E.
  • البايت التالي ، 0xB6 يطابق RSSI المقاس على بعد 1 متر.
  • تتطابق البايتان التاليتان مع iBeacon Major ، لكن هذه المرة يكون Little Endian.
  • تطابق وحدتي البايت الأخيرتين مع iBeacon Minor مرة أخرى بتنسيق Little Endian.

وفقًا لمتطلبات خدمة Bluetooth الأساسية للمواصفات ، يجب أن تكون بادئة بيانات UUID ذات 16 بت للخدمة هي البيانات - وهنا بالنسبة لـ Estimote - بيانات الخدمة مخصصة لخدمة مع UUID من 0x180a ، وهذا أمر مثير للاهتمام لأننا سنرى لاحقًا عندما ننظر إلى GATT ، تلك الخدمة غير موجودة على الجهاز.

خدمات الجات وخصائصها

في المقابل مع "الكلاسيكية" Bluetooth - حيث يوجد نطاق كامل من البروتوكولات - مع Bluetooth LE يوجد بروتوكول واحد فقط في الأعلى وهو GATT (سمة عامة). يتم تنفيذ الوظيفة الفعلية لجهاز Bluetooth LE عن طريق السمات التي يمكن قراءتها أو كتابتها أو تمكينها للإشعار / الإشارة ، اعتمادًا على نوع السمة.

يمكننا استخدام لينكس gatttool برنامج سطر الأوامر - جزء من حزمة BlueZ - لمعالجة هذه السمات. الاتصال منارة مع gatttool نحصل على قائمة بكل من الخدمات والخصائص.

وضع الإخراج من gatttool في شكل جدول - حيث تمت قراءة الخصائص القابلة للقراءة باستخدام "قراءة شار-HND gatttool أمر - يمكننا مقارنة القيم التي حصلنا عليها من gatttool إلى ما يظهر تطبيق Estimote iOS ،

منارة لدينا في تطبيق Estimote iOS.

ونحن نمضي قدمًا. ومن المثير للاهتمام إذا ، في هذه المرحلة ، حاولت استخدام gatttoolالصورة "حرف الكتابة-مسا أمر الكتابة إلى أي من خصائص Estimote - UUID و Minor و Major و Power Level و الفاصل الزمني للإعلان - تعود الكتابة بنجاح. ومع ذلك ، لا يتم تحديث البيانات التي يتم بثها عبر iBeacon وفقًا لذلك.

على الرغم من ذلك ، يتيح لك تطبيق التقديرات SDK تحديث iBeacon Minor and Major - على الرغم من أنه لم يتم ذكر UUID سابقًا للمنارة - هناك شيء ما يحدث هنا نحتاج إلى فهمه بشكل أكمل. من الواضح أن SDK تفعل شيئًا مخادعًا تحت غطاء المحركgatttool هو ليس كذلك.

باستخدام SDK

صمم Yoann Gini أداة بسيطة باستخدام أداة تقدير SDK مما يسمح لك بقراءة وتحرير الأرقام الثانوية والأرقام الرئيسية الخاصة بالمنارة ، والتي تسمى EstimoteEditor.

لقد قمنا بتشكيل المشروع - وقمنا ببعض التغييرات التي سنتحدث عنها لاحقًا - لذا إذا تقدمت واستنسخت الريبو ،

git clone https://github.com/sandeepmistry/EstimoteEditor.git cd EstimoteEditor git submodule init git submodule update

وتهيئة الوحدات الفرعية وتحديثها ، ثم فتح المشروع في Xcode ، يمكنك إنشاء ونشر على جهاز iPhone يعمل بتقنية Bluetooth LE - لسوء الحظ ، لن يعمل في iOS Simulator ، يجب تشغيله على جهاز.

يتم عرض iBeacon الخاص بتقديرنا في تطبيق EstimoteEditor.

بعد تحديد المنارة المكتشفة ، تكون كل من Power Level و Major و Minor و الفاصل الزمني للإعلان قابلة للتكوين جميعًا - وتلتزم القيم المعدلة ، على عكس التغييرات التي أجريناها من gatttool. إذن ، ماذا تفعل SDK بشكل مختلف؟

طريقة Swizzling CoreBluetooth

نظرًا لأن Objective-C هي لغة وقت التشغيل ، فمن الممكن فحص الأساليب والخصائص ومتغيرات الفئات والكائنات في وقت التشغيل ، على الرغم من أنها خاصة ومختفية بواسطة SDK ، حتى لو لم يكن لديك الكود المصدري ولم يكن لديك سوى الوصول إلى النقطة الثنائية.

للقيام بذلك ، نستخدم شيئًا ما يسمى طريقة swizzling — فهو يتيح لك استبدال التطبيق الحالي للطريقة بأسلوبك الخاص في وقت التشغيل. يمكن التنبؤ بها إذا تم استخدامها بشكل صحيح ، أن تكون أداة قوية. ومع ذلك ، إذا استخدمت بشكل غير صحيح ، فإنها يمكن أن تسبب الدمار على نطاق الكتاب المقدس.

استخدم Sandeep هذه التقنية لمعرفة كيفية عمل CoreBluetooth تحت غطاء محرك السيارة على OS X ، ثم استخدم النتائج للتواصل مع اللون الأزرق - البرنامج الخفي Bluetooth على OS X - دون استخدام CoreBluetooth في مكتبة node.js BLE الخاصة به. ربما بشكل أكثر طفيفًا ، استخدمها الأسدير في كود الإنتاج لاعتراض مكالمات الشبكة المختلفة وتقديم تحليلات لجمع بيانات أداء الشبكة"في البرية" على اي فون.

دعونا نستخدم تقنية مماثلة على نظام iOS لاعتراض التواصل بين Estimote SDK و CoreBluetooth. بعد إلقاء نظرة على رؤوس وقت تشغيل iOS لـ CoreBluetooth ، تبرز فئة CBXpcConnection. هنا يتم استخدام اتصال XPC بواسطة CoreBluetooth للتواصل مع البرنامج الخفي Bluetooth.

دعنا نعوم الطرق التالية ،

- (باطلة) handleMsg: (int) arg1 args: (id) arg2 ؛ - (باطلة) sendMsg: (int) arg1 args: (id) arg2 ؛

مما سيسمح لنا أن نرى كيف يستخدم تقدير SDK CoreBluetooth - مع بعض التفسير ، نرى أنه لا يوجد شيء خاص يحدث هنا ،

  1. بدء المسح الضوئي للأجهزة
  2. الأجهزة المكتشفة
  3. توقف عن المسح
  4. الاتصال بالجهاز
  5. اكتشاف خدمات الأجهزة والخصائص
  6. قراءة / كتابة بعض خصائص الأجهزة

تبدو الأمور مشابهة لما كنا نفعله باستخدام gatttool ، باستثناء القراءة / الكتابة للخصائص الموجودة في المقابض 45 و 47. ربما يجب علينا العودة إلى Xcode وتعيين نقاط التوقف أثناء عمليات الكتابة المميزة ونرى ما تعرضه مكدسات الاستدعاء ،

مكدس الاستدعاء في IDE Xcode أثناء عمليات الكتابة المميزة.

هذا يعطينا طريقتين أخريين للتنقل ، هذه المرة داخل فئة ESTBeacon ،

- (باطلة) زوجسنسفورستارت ؛ - (باطلة) زوجسنسورسيكوند بارت ؛

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

يوفر تشغيل تفريغ الفئة على الإنشاء بعض الإخراج المثير للاهتمام. تبدو فئة ETBluetoothMath مثيرة للاهتمام بشكل خاص.

interface ETBluetoothMath: NSObject {} + (id) stringFromHexString: (id) arg1؛ + (id) hexStringToBytes: (id) arg1؛ + (int) GiveSignToUnsigned: (unsigned int) arg1؛ + (طويلة غير موقعة) Secunit_ModExpWithBase: (طويلة غير موقعة) arg1 Exp: (طويلة غير موقعة) arg2 وMod: (طويلة غير موقعة) arg3؛ + (غير موقعة طويلة) randomUInt32؛ + (قصيرة غير موقعة) randomUInt16؛ + (id) randomDataWithBytes: (unsigned int) arg1؛ + (const char *) CBUUIDToString: (id) arg1؛ + (int) comparCBUUID: (id) arg1 UUID2: (id) arg2؛ + (معرّف) IntToCBUUID: (غير موقعة قصيرة) arg1؛ + (اختصار غير موقّع) CBUUIDToInt: (id) arg1؛ + (اختصار غير موقعة) المبادلة: (قصيرة غير موقعة) arg1؛ + (const char *) UUIDToString: (struct __CFUUID *) arg1؛ @النهاية

دعنا نلجأ إلى Secunit_ModExpWithBase: Exp: andMod: method وأضف بعض تسجيل الدخول إلى المدخلات وقيم الإرجاع. سوف يخبرنا كيف يتم استخدام المقبض المميز 45 ،

  1. إنشاء عدد صحيح 32 بت عشوائي غير موقعة.
  2. اكتب ما يلي للميزة في المؤشر 45: 5 ^ (عشوائي 32) وزارة الدفاع 0xfffffffb (القليل endian)
  3. قراءة السمة في المقبض 45 (endian الصغير): (القيمة المميزة 45) ^ (عشوائي 32) mod 0xfffffffb

دعنا نضع نقطة توقف في أسلوب الزوج المستنقع swensledSecorPart في ESTBeacon ، وخطو إلى الخطوة الأصلية. بعد تجاوز بعض الإرشادات ، نرى شيئًا مثيرًا للاهتمام.

التنقل عبر التعليمات البرمجية وتحديد مكالمة aes_encrypt في TI_aes.c.

هل هذا TI- كما في Texas Instruments؟ بالانتقال إلى Google ، لا نجد أنه كذلك ، بل الكود المصدري الخاص بـ TI_aes.c متاح على الإنترنت. يمكننا الاستيلاء عليها ، وإضافته إلى مشروعنا. لنجرب إضافة نقاط التوقف إلى aes_encrypt و aes_decrypt في داخل TI_aes.c. من المثير للدهشة أن نقاط التوقف هذه قد وصلت بالفعل ، مما يعني أنه يمكننا فحص البيانات التي تم تمريرها في كل من طرق التشفير وفك التشفير.

مفتاح التشفير AES-128 هو دائمًا 0xff8af261013625c2d810097f20d3050f. بينما تستند حالة التشفير إلى عنوان Bluetooth (E7: 44: 89: 31: ED: 4E) و 0x4eed318944e731ed4ee74489443189ed.

يعتمد مفتاح فك تشفير AES-128 على آخر secunit محسوب (0x8e450d08) وهو 0x080d458e8e450d08088e0d458e08450d. في حين أن حالة فك التشفير هي نتيجة التشفير ، 0x419a05a457dcceebeed5129e88a81c4e.

تتم كتابة نتيجة فك تشفير إلى السمة في المقبض 47 ، مع الانتهاء من عملية الاقتران.

وضع الأشياء معا

الآن اكتشفنا تسلسل الاقتران ومواصفات تقريبية للخصائص. يمكننا إنشاء برنامج نصي node.js يستخدم خدمة نبيلة لاكتشاف منارة Estimote والاتصال بها. بعد ذلك يمكننا المحاولة - مرة أخرى - بعد الاقتران لكتابة الخصائص الرئيسية والثانوية. هذه المرة بالنجاح.

مثير للإعجاب. لا يسمح SDK بتحديث UUID ، هل يمكننا القيام بذلك باستخدام هذه الطريقة؟ اتضح أننا نستطيع. تعمل كتابة نفس القيمة لكل من خصائص UUID ، ويتم تحديث iBeacon UUID. يمكننا ضبط معرف UBID الخاص بشركة iBeacon على شيء لا يعرضه التقدير.

استنتاج

يعتبر Estimote iOS SDK مصدرًا مغلقًا ، ولكن باستخدام طريقة swizzling والأداة المساعدة لتفريغ الفئة عليه وإطار عمل CoreBluetooth تمكنا من معرفة كيفية تفاعله مع المنارة.

ربما تكون المعلومات الواردة في SDK أكثر تكشفًا مما توقعه المؤلفون ، وللأسف بالنسبة لهم ، هناك القليل جدًا الذي يمكنهم فعله حيال ذلك.

في حين أن مجموعة معاينة مطور Estimote و SDK لا تزال في مراحلها الأولى إذا ما تمسك تقدير التقديرات بنموذج الأمان الحالي الخاص به - على الرغم من وجود علامات على أنه قد لا يقوم بذلك - فسيتمكن أي شخص يقوم بإنشاء تطبيق باستخدام SDK من إعادة تكوين أي منارات Estimote في البرية.

الآثار المترتبة على ذلك بعيدة المدى إلى حد ما. إذا قام شخص ما بتغيير خاصية iBeacon Major أو Minor بشكل خبيث من منارة ، فإن أي تطبيق للمستهلك تم تكوينه لاستخدام هذا المنارة المعين سوف يتوقف عن العمل - يجب تكوين منارات مع هوية محددة سلفا لتحريك السلوك الصحيح داخل التطبيق الخاص بالمستهلك عندما يأتي الهاتف الذكي بالقرب من المنارة.

بعد ذلك يمكنك تكوين أ"مزورة" منارة لتعمل كداعم لدائرة أخرى منارة تابعة لسلسلة البيع بالتجزئة ، مما يحتمل أن تحصل على إمكانية الوصول إلى العروض الترويجية وبطاقات الهدايا وغيرها من الأشياء الجيدة التي تعتمد على الموقع والمرتبطة بالمنارة التي تنتحل شخصيتها.

يستخدم المصنّعون الآخرون طرقًا مختلفة - وربما أكثر أمانًا - لتعيين قيم UUID و Minor و Major الخاصة بالإشارة. أنا شخصياً أريد أن ألقي نظرة جدية على تلك البدائل قبل نشر هذه التكنولوجيا في بيئات الإنتاج. خاصة إذا كان هناك أموال حقيقية المعنية.

في حين أنه ليس من السهل إجراء هندسة عكسية للبرامج والأجهزة المستخدمة في أجهزة مثل Estimote ، إلا أنها قابلة للتنفيذ بالكامل - وبعد فهم كيفية عمل المنارات - تمكنا من تعديل تكوين المنارة بسهولة.

تحديث: تحدثنا عن كل من القدرة على التكوين"مزورة" منارات ، والقدرة على تعطيل منارات في هذا المجال ، ولكننا لا نعتقد أننا سوف نرى شيئا مثل هذا في وقت قريب جدا. أظهر معرض الالكترونيات الاستهلاكية لهذا العام مطاردة زبالة ترويجية تعتمد على تقنية iBeacon من Apple - واتضح أنه يمكنك الفوز بالبحث ، دون الحاجة إلى الذهاب إلى CES.

00


قد تكون مهتمة

إنشاء مصباح يدوي Hackable

إنشاء مصباح يدوي Hackable


كيف ل: اصنع زوج مخصص من سروال الحنفية

كيف ل: اصنع زوج مخصص من سروال الحنفية


في الميك ، مع أليسون كيندال

في الميك ، مع أليسون كيندال


متدرب ، احصل علي كامباري!

متدرب ، احصل علي كامباري!






المشاركات الأخيرة