
ثنائي Go واحد لاختبار أمان Bluetooth Low Energy على Linux/BlueZ: الفحص، وتعداد GATT، والقراءة/الكتابة/الإشعار، واختبار الخصائص العشوائي (fuzz)، وتشغيل تقييمات منظمة مع إخراج JSON.
ملف Go تنفيذي واحد لكامل سير عمل تقييم Bluetooth Low Energy على Linux/BlueZ: الفحص، والتعداد، والقراءة/الكتابة/الإشعار، والتشويش (fuzzing)، والتقييم الأمني المنظم، مع إخراج JSON للسكربتات والوكلاء.
Caeruleus يجمع اختبار أمان Bluetooth Low Energy (BLE) في ملف Go تنفيذي واحد مبني على حزمة Linux BlueZ. يتواصل مع الأجهزة الطرفية عبر BlueZ D-Bus ومقابس L2CAP/HCI الخام، ويغطي دورة الحياة كاملة: اكتشاف الأجهزة، وتصفح وقراءة/كتابة شجرة GATT، والتقاط الإشعارات، وتشويش الخصائص القابلة للكتابة، وتشغيل سير عمل تقييم أمني قابل للتكرار. كل أمر يُخرج مخرجات منظمة -o json / -o jsonl للسكربتات وإعداد التقارير ووكلاء LLM.
بُني بواسطة مهندسي الأمن الهجومي ليحل محل الكومة المعتادة من bettercap وgatttool وhcitool وbluetoothctl وسكربتات Bleak المؤقتة، ويُبقي Caeruleus التجريدات عند المستوى الذي يعمل به الإنسان أو الوكيل فعليًا.
caeruleus: كلمة لاتينية تعني "الأزرق" في Bluetooth Low Energy
سير العمل القياسي لاختبار أمان BLE هو رحلة بحث عبر أدوات لم تُصمم أبدًا للعمل معًا:
hcitool / hciconfig لإعداد المحول والاكتشاف، وكلاهما مهجور من BlueZ ومفقود في العديد من التوزيعات الحديثة.bettercap لأمر ble.recon وble.enum. قوي، لكنك تثبّت إطار عمل هجوم شبكي كامل لمجرد تصفح شجرة GATT.gatttool لقراءة وكتابة المقابض (handles)، مهجور منذ سنوات لكنه لا يزال في كل درس تعليمي.كل منها يتحدث لهجته الخاصة، ولا شيء منها يُخرج مخرجات قابلة للقراءة آليًا يمكنك تمريرها إلى الخطوة التالية، لذا تصبح أنت طبقة التكامل، وتنسخ عناوين MAC والمقابض بين الطرفيات يدويًا. واجهات BlueZ المدعومة رسميًا (bluetoothctl، btmgmt) هي أدوات إدارة عامة الغرض موضوعة عند مستوى تجريد خاطئ لأعمال التقييم.
يستبدل Caeruleus تلك الكومة بأكملها بواجهة أوامر واحدة متسقة:
| حالة الاستخدام | الطريقة السابقة | مع Caeruleus |
|---|---|---|
| اكتشاف الأجهزة القريبة | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| سرد وقراءة الخدمات/الخصائص | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| جلسة تفاعلية | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| قراءة مقبض | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| كتابة مقبض | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| التقاط الإشعارات | مسجّل Bleak مخصص | caeruleus listen -b <mac> -a <handle> |
| تدقيق التعرض غير الموثّق | سكربتات تدقيق Bleak مخصصة | caeruleus recon / caeruleus assess ... |
| تشويش خاصية | أدوات تشويش مخصصة / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| معاملات الاتصال، MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| طاقة المحول والاستعادة | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
إخراج منظم في كل مكان. كل أمر يُنتج مخرجات يدعم -o text|json|jsonl. JSON هو التمثيل الأساسي، وليس تصديرًا ثانويًا؛ ويبثّ jsonl سجلًا واحدًا لكل حدث لأمر scan --live وlisten. ويُخرج enumerate --compact سطرًا واحدًا بصيغة key=value لكل خاصية لاستخدامه مع grep أو نافذة سياق LLM.
صحة حزمة BLE. يفحص caeruleus doctor حالة BlueZ والنواة ويطبع قائمة تحقق OK/WARN/FAIL: تشغيل bluetoothd، وتزويد المحول بالطاقة، وعدم وجود جلسة اكتشاف متروكة، ومقارنة العنوان المخزّن مؤقتًا في BlueZ مع العنوان الحيّ لشريحة MGMT، وفحص مسح حيّ لمدة ثانيتين، وExchangeMTU في نطاق آمن. كل نتيجة غير OK تحمل أمر إصلاح ملموس، ويتبع رمز الخروج اصطلاح grep/diff (0 سليم، 2 عند الفشل).
إنهاء نظيف. عند SIGTERM/SIGHUP يشغّل الأداة مسار قطع الاتصال ويستطلع حتى ينتشر Connected=false عبر BlueZ، فيعيد الطرفي الإعلان عن نفسه فورًا بدلًا من التوقف حتى انتهاء مهلة الإشراف. لا مزيد من "الاتصالات الشبحية" بعد الانهيار.
السكربتات والأتمتة. يُبقي serve/send رابط GATT واحدًا مفتوحًا عبر مقبس Unix حتى يتجنب سكربت أو وكيل تكلفة إعادة الاتصال البالغة ~1.5 ثانية لكل أمر؛ ويشغّل batch أوامر من stdin عبر اتصال دائم واحد؛ ويُعدّ listen --trigger-value إشعارًا، ويطلق كتابة، ويلتقط الاستجابة ذريًا.
تفاصيل مريحة. استنتاج نوع الجهاز من GAP Appearance بالإضافة إلى الخدمات المُعلنة (تظهر الساعة كـ "Smartwatch"، وليس رمز appearance خام)؛ تحليل مدخلات متسامح (المقابض كـ 0x002a أو 0X2A أو 42؛ الست عشري كـ deadbeef أو de:ad:be:ef أو 0xdeadbeef)؛ يسرد caeruleus recipes ويبحث بالكلمات المفتاحية في 19 سير عمل شائعًا؛ ويُظهر conn-params الفاصل الزمني المتفاوض عليه وزمن الاستجابة ومهلة الإشراف التي لا يكشفها gatttool ولا bettercap.
يعامل Caeruleus وكلاء LLM كمستخدمين من الدرجة الأولى. يمنح -o json / -o jsonl مخرجات منظمة وفعّالة من حيث الرموز يحللها الوكيل دون كشط جداول منسقة للبشر، ويشحن المستودع Agent Skill محمولًا (skills/caeruleus/SKILL.md) يعلّم أي مساعد متوافق مع Agent Skills واجهة الأوامر ومنهجية تقييم موصى بها. وجّه وكيلًا إلى جهاز وسيشغّل المنهجية كاملة من البداية إلى النهاية.
في اختبارنا المعياري، أكمل Opus 4.8 (xHigh) مع Caeruleus ومهارته المهمة في 62% من الوقت و70% من الرموز مقارنةً بالنموذج نفسه مع حرية اختيار الأدوات (الذي لجأ إلى hcitool وسكربتات Bleak).
يستهدف Caeruleus Linux مع BlueZ (bluetoothd) ومحول BLE قياسي. لا يُبنى ولا يعمل على macOS أو Windows. وهناك حفنة من أوامر المقابس الخام تحتاج صلاحيات الجذر.
مع سلسلة أدوات Go:
go install github.com/praetorian-inc/caeruleus/cmd/caeruleus@latest
ملف تنفيذي جاهز من الإصدار (x86_64 وarm64): نزّل الأرشيف المناسب لمعماريتك من صفحة Releases، وفك الضغط، وضع caeruleus في $PATH.
من المصدر:
git clone https://github.com/praetorian-inc/caeruleus
cd caeruleus
make build # -> ./caeruleus
make test # unit tests + shell tests
تحقق من سلامة المحول، ثم اكتشف ما هو قريب:
$ caeruleus doctor
adapter: hci0
[ OK] bluetoothd active
[ OK] Powered true
[ OK] Discovering false
[ OK] Address agreement 00:1A:7D:DA:71:13
[ OK] LE scan healthy saw advertisements
[ OK] ExchangeMTU 247
$ caeruleus scan
ADDRESS TYPE RSSI DEVICE NAME
------------------------------------------------------------
9C:9C:1F:F2:88:86 public -32 BLECTF_JohnsonSpace
C4:C0:B0:3B:5B:EF random -59 Aranet4 06D4B
DC:FD:B4:CA:B4:E9 random -62 JBL Boombox 2
تصفّح شجرة GATT كاملة واقرأ كل خاصية في ضربة واحدة، ثم تحسّس المقابض الفردية: