
مرحبًا بكم في مستودع محاكي سيارة ورشة عمل EvilDoggie! تعيد هذه الأداة إنتاج بيئة ناقل CAN للسيارة المستخدمة في جلسة Black Hat Arsenal 2025. طوّرت شركة Faraday Security هذا المحاكي، وهو يحاكي وحدات التحكم الإلكترونية المتعددة (ECUs) في المركبة، مما يتيح للباحثين ممارسة هجمات على ناقل CAN باستخدام EvilDoggie في بيئة محكومة.
يدعم المحاكي واجهتَي serial وSocketCAN، مما يتيح تكاملًا سلسًا مع عتاد Doggie لالتقاط رسائل CAN وحقنها والتلاعب بها. وهو مصمم لأغراض تعليمية في مجال أمن السيارات، مع التركيز على تحديات مثل انتحال VIN، وفتح الأبواب، وإرباك نظام تثبيت السرعة، وتبديل حالة الوسائد الهوائية، وفصل نظام ABS، والمزيد—كما هو موضح بالتفصيل في أدلة ورشة العمل المرفقة.
هذا المحاكي مفتوح المصدر مرخّص بموجب MIT وهو جزء من النظام البيئي الأوسع لمشروع Doggie/EvilDoggie. للحصول على التفاصيل الكاملة للبرامج الثابتة والعتاد، تفضل بزيارة المستودع الرئيسي.
راجع توثيق ورشة عمل evilDoggie للحصول على دليل ورشة العمل الكامل.

لتشغيل المحاكي، تحتاج إلى جهازي Doggie (واحد للإرسال TX وآخر للاستقبال RX)، ويُنصح باستخدام 3 أجهزة Doggie—واحد كمهاجم (EvilDoggie) واثنان كوحدات ECU محاكاة—لضمان انتشار الرسائل عبر ناقل مادي حقيقي.
أنشئ بيئة Python افتراضية لعزل التبعيات:
python3 -m venv doggie_venv
source doggie_venv/bin/activate
ثبّت الحزم المطلوبة من requirements.txt:
python3 -m pip install -r requirements.txt
ثبّت حزمة المحاكي محليًا:
python3 -m pip install -e .
شغّل المحاكي باستخدام واجهات serial أو SocketCAN. لإعداد بجهازي Doggie، وصّل جهازي Doggie بنظامك (على سبيل المثال عبر USB) وحدد منافذهما (مثل /dev/ttyUSB0 و/dev/ttyUSB1). استخدم الخيار --serial للاتصالات التسلسلية أو --socketcan لواجهات CAN الافتراضية.
مثال باستخدام الواجهات التسلسلية (اضبط المنافذ ومعدلات الباود حسب الحاجة):
python3 -m doggie_lab --serial /dev/ttyUSB0@921600 /dev/ttyUSB1@921600 --speed 500000
--serial TX_PORT RX_PORT: حدد المنافذ التسلسلية ومعدلات الباود (مثل /dev/ttyUSB0@115200 /dev/ttyUSB1@115200).--speed SPEED: اضبط سرعة ناقل CAN بالبت في الثانية (الافتراضي: 500000).بالنسبة إلى SocketCAN (واجهات افتراضية):
python3 -m doggie_lab --socketcan can0 can1 --speed 500000
--socketcan TX_CAN RX_CAN: استخدم واجهات SocketCAN (مثل can0 can1).شغّل python3 -m doggie_lab --help لعرض جميع الخيارات.
لإجراء اختبار سريع دون عتاد مادي، يمكنك محاكاة واجهة CAN افتراضية واحدة على Linux باستخدام SocketCAN. هذا مثالي للالتقاط أو الحقن الأساسي، لكنه لن يحاكي سلوكيات الناقل المادي اللازمة للتحديات المتقدمة.
إعداد واجهة CAN افتراضية:
sudo modprobe vcan.sudo ip link add dev vcan0 type vcan وsudo ip link set up vcan0.--socketcan vcan0 vcan0 (باستخدام الواجهة نفسها لحلقة الإرسال/الاستقبال loopback).مع ذلك، ولجميع تحديات ورشة العمل، تُعد أجهزة Doggie المادية ضرورية لملاحظة تفاعلات الناقل الحقيقية، مثل انتشار الأخطاء والتنافس عليه. استخدم 3 أجهزة Doggie على الأقل: اثنان لمحاكاة وحدات ECU (إرسال/استقبال) وواحد كمهاجم EvilDoggie متصل بالناقل المادي المشترك.
requirements.txt (مثل python-can وtkinter لواجهة المستخدم).هذا المحاكي مخصص للبحث والتدريب فقط. لا تستخدمه على المركبات الحقيقية. المساهمات مرحب بها—افتح issues أو PRs للتحسينات!
هذا المشروع مرخّص بموجب رخصة MIT. راجع ملف LICENSE للتفاصيل.