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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
obike — هندسة عكسية لبروتوكول اتصال oBike (BLE و HTTP) | Kitploit
أدوات/GitHubGitHub/antoinet/obike
أمن البلوتوثأمان إنترنت الأشياءالهندسة العكسيةأمن الشبكات اللاسلكيةالتشفيرالأوراق والأبحاثأمن واجهات برمجة التطبيقات
GitHubantoinet/obike

obike

هندسة عكسية لبروتوكول اتصال oBike (BLE و HTTP)

عرض المستودع
42822منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

وصف بروتوكول oBike (BLE/HTTP)

تقدّم هذه الوثيقة تحليلاً لبروتوكولات اتصال oBike كما هي في يناير 2018.

تم عرض النتائج في مؤتمر insomni'hack الأمني 2019:

  • الشرائح
  • التسجيل

وكذلك في مؤتمر AREA41 الأمني 2018:

  • الشرائح
  • التسجيل

اتصال oBike العام

يتكوّن قفل oBike من متحكم دقيق TI CC2541، وهو نظام على رقاقة (SoC) محسّن لاستهلاك الطاقة ويُستخدم لتطبيقات Bluetooth Low Energy (BLE). لا يملك القفل نفسه أي اتصال IP؛ بل يعتمد على اتصال الجهاز المحمول عبر 3G/4G للتواصل مع الخادم الخلفي لـ oBike. يتواصل القفل عبر BLE مع تطبيق oBike على الجهاز المحمول. ثم يتم ترحيل رسائل البروتوكول إلى الخادم الخلفي لـ oBike عبر REST API.

لا يملك القفل وحدة GPS خاصة به. وبالتالي، فإن الموقع المُبلَّغ عنه للخادم الخلفي هو دائمًا موقع الجهاز المحمول، وليس موقع oBike نفسه.``` GPS | +---------+ +---------+ +----------+ | oBike | | Mobile | | oBike | | Lock | +--- BLE ---> | Device | +--- HTTPS ---> | Backend | +---------+ +---------+ +----------+

## تسلسل إلغاء القفل```
 oBike Lock          (BLE)     Mobile Device    (HTTPS)           oBike Backend
------------+------------------------+---------------------------+--------------
            |                        |                           |
            | [1] hello(lat, lng)    |                           |
            | <--------------------- |                           |
Generate    |                        |                           |
32bit       | [2] keySource          |                           |
Challenge   | ---------------------> | [3] unlockPass(keySource) |
            |                        | ========================> | Compute
            |                        |                           | Response
            | [5]                    | [4] encKey, keys          |
            | sendKeys(encKey, keys) | <======================== |
!Unlock     | <--------------------- |                           |
 Bike!      |                        |                           |
            |                        |                           |
Generate    |                        |                           |
Acknowledge | [6] macKey, index      | [7]                       |
Message     | ---------------------> | lockMessage(macKey,index) |
            |                        | ========================> | Register
            |                        |                           | Ride (start
            |                        |                           | billing)

الخطوات:

  1. أرسل رسالة hello عبر BLE، وادفع الإحداثيات إلى القفل.
  2. استقبل keySource عبر BLE، وهي قيمة 32bit تمثل عدد المللي ثانية منذ تشغيل الشريحة (little endian).
  3. أرسل keySource عبر HTTPS إلى الخادم الخلفي لـ oBike باستخدام استدعاء REST unlockPass.
  4. استقبل encKey (مؤشر المفتاح) وقيمة مفتاح 128bit في keys عبر HTTPS.
  5. أرسل عبر BLE القيمة encKey (مقتطعة إلى 96bits) و index (الذي يقابل encKey). عند هذه النقطة، سيتم فتح قفل الدراجة.
  6. استقبل عبر BLE macKey و index، وهو تأكيد بأن عملية الفتح كانت ناجحة.
  7. أرسل عبر HTTPS lockMessage، مع القيم المقابلة (macKey و index). عند هذه النقطة، سيقوم الخادم الخلفي لـ oBike بتسجيل الرحلة وبدء الفوترة.

بروتوكول BLE

يتم تنفيذ مكوّنات بروتوكول BLE الموضحة في الأقسام التالية في وحدة بايثون obike.ble_client. بالإضافة إلى ذلك، تم تنفيذ ماسح ضوئي لاكتشاف إعلانات obike BLE في obike.ble_scanner.py.

تنسيق الأوامر العام```

6774 0D 86 59AEB6...3931 FD | | | | | | | | | +-- Check byte | | | +----------------- Payload | | +--------------------- Command type | +------------------------- Length of payload in bytes +------------------------------- Command Signature ('gt')

تبدأ الرسالة، سواءً كانت واردة أو صادرة، دائمًا بالتوقيع `\x67\x74`
(ascii `gt`).

طول الحمولة هو عدد البايتات دون الترويسة/الذيل.

يدعم البروتوكول أنواعًا مختلفة من الرسائل يتم تحديدها ببايت واحد. يحدد البتّان
الأكثر أهمية اتجاه الرسالة:```
 0x86   1000 0101     mobile -> obike
 0x46   0100 0101     obike  -> mobile

يتم حساب بايت الفحص من خلال XORing لنوع الأمر وبايتات الحمولة:``` check_byte = cmdtype ^ b[0] ^ b[1] ^ ... ^ b[N-1]

The maximumn PDU size is 19 bytes (header + payload + trailer). Messages
exceeding this size are fragmented.

### BLE getLockRecord/deleteLockRecord

نوع الأمر: `6`  
تُستخدم هذه الرسائل لإدارة "سجل القفل"، وهو سجل بيانات يحفظه الشريط ويتكون من معلومات آخر رحلة، مثل معرف العضو، والطابع الزمني، ومعرف oBike، والإحداثيات، وما إلى ذلك.

عند استدعائه دون حمولة، يُستخدم الأمر لاسترجاع سجل القفل المحفوظ:```
00000000  67 74 00 86 86                                    |gt...|

إذا لم يتوفر سجل قفل، يستجيب القفل بحمولة فارغة.``` 00000000 67 74 00 46 46 |gt.FF|

بخلاف ذلك، يحتوي رد القفل على عدة قيم من آخر رحلة، في
التنسيق التالي:```
00000000  67 74 46 46 00 00 01 23  45 67 59 9d 72 2a 44 31  |gtFF...#d2Y.r*D1|
00000010  39 33 36 42 33 31 37 2a  72 9d 59 00 34 37 2e 33  |936B317*r.Y.47.3|
00000020  37 32 37 36 30 00 00 00  30 38 2e 35 33 30 38 34  |72760...08.53084|
00000030  32 32 00 00 87 76 f3 7a  8c be 90 f8 4b a4 fa 00  |22...v.z....K...|
00000040  2e ae e3 dc 91 00 00 00  a9 01 8b                 |...........|

ما هو DNS؟```

Offset Value Description

0004 000001234567 member-id (explicitly coded in decimal, value is: 1234567)

000a 599d722a UNIX timestamp, 08/23/2017 @ 12:16pm

000e 443139333642333137 obike identifier (D1936B317) this corresponds to the MAC address without the first 3 hex digits, in this case: D4:3D:19:36:B3:17

0017 2a729d59 same UNIX timestamp, little endian

001b 00 transaction type

001c 34372e333732373630000000 latitude (47.372760)

0028 30382e353330383432320000 longitude (08.5308422)

0034 8776f37a8cbe90f84ba4fa002eaee3dc mackey (128 bits)

0044 91 key index

0045 000000 ? 0048 a901 battery voltag level (little endian) e.g. 4.25V

عند استخدامه مع حمولة، يحذف هذا الأمر سجل القفل الحالي:```
00000000  67 74 0d 86 59 d5 ff a4  36 33 39 38 37 37 31 33  |gt..Y...63987713|
00000010  43 14                                             |C.|

تتكوّن حمولة أمر الحذف من "Bike Trade Number" الذي تمت قراءته سابقاً، أي الطابع الزمني عندما تم تأجير الدراجة و معرّف obike:``` Offset Value Description

0004 59d5ffa4 timestamp (little endian) 000e 3633393837373133 "63987713C" obike identifier

### BLE Push Coords / Get Challenge
تنزيل الأداة