
¡Bienvenido al repositorio del Simulador de Automóvil del Taller EvilDoggie! Esta herramienta replica el entorno CAN Bus del automóvil utilizado en la sesión de Black Hat Arsenal 2025. Desarrollado por Faraday Security, el simulador emula múltiples Unidades de Control Electrónico (ECUs) en un vehículo, permitiendo a los investigadores practicar ataques ofensivos contra el CAN Bus con EvilDoggie en un entorno controlado.
El simulador admite interfaces seriales y SocketCAN, lo que permite una integración perfecta con el hardware Doggie para esnifar, inyectar y manipular mensajes CAN. Está diseñado con fines educativos en seguridad automotriz, centrándose en desafíos como la suplantación de VIN, el desbloqueo de puertas, la confusión del control de crucero, la conmutación de airbags, la desconexión del ABS y más, tal como se detalla en las guías del taller adjuntas.
Este simulador de código abierto está licenciado bajo MIT y forma parte del ecosistema más amplio Doggie/EvilDoggie. Para obtener todos los detalles sobre firmware y hardware, visita el repositorio principal.
Consulta la documentación del taller de evilDoggie para obtener una guía completa del taller.

Para ejecutar el simulador necesitas 2 Doggies (uno para TX y otro para RX); se recomiendan 3 Doggies (uno como atacante (EvilDoggie) y dos como ECUs simuladas) para garantizar que los mensajes se propaguen por un bus físico real.
Crea un entorno virtual de Python para aislar las dependencias:
python3 -m venv doggie_venv
source doggie_venv/bin/activate
Instala los paquetes necesarios desde requirements.txt:
python3 -m pip install -r requirements.txt
Instala el paquete del simulador localmente:
python3 -m pip install -e .
Inicia el simulador utilizando interfaces seriales o SocketCAN. Para una configuración con 2 Doggies, conecta dos Doggies a tu sistema (por ejemplo, vía USB) e identifica sus puertos (por ejemplo, /dev/ttyUSB0 y /dev/ttyUSB1). Usa la opción --serial para conexiones seriales o --socketcan para interfaces CAN virtuales.
Ejemplo con interfaces seriales (ajusta los puertos y las velocidades de baudios según sea necesario):
python3 -m doggie_lab --serial /dev/ttyUSB0@921600 /dev/ttyUSB1@921600 --speed 500000
--serial TX_PORT RX_PORT: Especifica los puertos seriales y las velocidades de baudios (por ejemplo, /dev/ttyUSB0@115200 /dev/ttyUSB1@115200).--speed SPEED: Establece la velocidad del CAN Bus en bits por segundo (por defecto: 500000).Para SocketCAN (interfaces virtuales):
python3 -m doggie_lab --socketcan can0 can1 --speed 500000
--socketcan TX_CAN RX_CAN: Utiliza interfaces SocketCAN (por ejemplo, can0 can1).Ejecuta python3 -m doggie_lab --help para ver todas las opciones.
Para pruebas rápidas sin hardware, puedes simular una única interfaz CAN virtual en Linux usando SocketCAN. Esto es ideal para esnifado o inyección básicos, pero no replicará los comportamientos físicos del bus necesarios para los desafíos avanzados.
Configura una interfaz CAN virtual:
sudo modprobe vcan.sudo ip link add dev vcan0 type vcan y sudo ip link set up vcan0.--socketcan vcan0 vcan0 (usando la misma interfaz para el bucle local TX/RX).Sin embargo, para todos los desafíos del taller, los Doggies físicos son esenciales para observar interacciones reales del bus, como la propagación de errores y la contención. Utiliza al menos 3 Doggies: dos para la simulación de ECUs (TX/RX) y uno como atacante EvilDoggie conectado al bus físico compartido.
requirements.txt (por ejemplo, python-can, tkinter para la interfaz de usuario).Este simulador es solo para investigación y entrenamiento. No lo utilices en vehículos reales. ¡Las contribuciones son bienvenidas: abre issues o PRs para mejoras!
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.