
CAN Bus simulador de veículos para praticar ataques ofensivos de segurança automotiva. Emula múltiplas ECUs para permitir sniffing, injeção e manipulação de mensagens CAN em um ambiente de laboratório controlado.
Bem-vindo ao repositório do Simulador de Carro do Workshop EvilDoggie! Esta ferramenta replica o ambiente do barramento CAN do carro usado na sessão do Black Hat Arsenal 2025. Desenvolvido pela Faraday Security, o simulador emula múltiplas Unidades de Controle Eletrônico (ECUs) em um veículo, permitindo que pesquisadores pratiquem ataques ofensivos ao barramento CAN com o EvilDoggie em um ambiente controlado.
O simulador suporta interfaces seriais e SocketCAN, permitindo integração perfeita com o hardware Doggie para farejar, injetar e manipular mensagens CAN. Ele foi projetado para fins educacionais em segurança automotiva, com foco em desafios como falsificação de VIN, destravamento de portas, confusão do controle de cruzeiro, alternância de airbags, desconexão do ABS e mais—conforme detalhado nos guias do workshop anexados.
Este simulador de código aberto é licenciado sob a licença MIT e faz parte do ecossistema Doggie/EvilDoggie mais amplo. Para detalhes completos de firmware e hardware, visite o repositório principal.
Consulte a documentação do Workshop evilDoggie para um guia completo do workshop.

Para executar o simulador, você precisa de 2 Doggies (um para TX e um para RX); 3 Doggies são recomendados—um como atacante (EvilDoggie) e dois como ECUs simuladas—para garantir que as mensagens se propaguem por um barramento físico real.
Crie um ambiente virtual Python para isolar dependências:
python3 -m venv doggie_venv
source doggie_venv/bin/activate
Instale os pacotes necessários a partir do requirements.txt:
python3 -m pip install -r requirements.txt
Instale o pacote do simulador localmente:
python3 -m pip install -e .
Inicie o simulador usando interfaces seriais ou SocketCAN. Para uma configuração com 2 Doggies, conecte dois Doggies ao seu sistema (por exemplo, via USB) e identifique as portas deles (por exemplo, /dev/ttyUSB0 e /dev/ttyUSB1). Use a opção --serial para conexões seriais ou --socketcan para interfaces CAN virtuais.
Exemplo com interfaces seriais (ajuste portas e baudrates conforme necessário):
python3 -m doggie_lab --serial /dev/ttyUSB0@921600 /dev/ttyUSB1@921600 --speed 500000
--serial TX_PORT RX_PORT: Especifique portas seriais e baudrates (por exemplo, /dev/ttyUSB0@115200 /dev/ttyUSB1@115200).--speed SPEED: Defina a velocidade do barramento CAN em bits por segundo (padrão: 500000).Para SocketCAN (interfaces virtuais):
python3 -m doggie_lab --socketcan can0 can1 --speed 500000
--socketcan TX_CAN RX_CAN: Use interfaces SocketCAN (por exemplo, can0 can1).Execute python3 -m doggie_lab --help para ver todas as opções.
Para testes rápidos sem hardware, você pode simular uma única interface CAN virtual no Linux usando SocketCAN. Isso é ideal para farejamento ou injeção básicos, mas não reproduz os comportamentos físicos do barramento necessários para desafios avançados.
Configure uma interface CAN virtual:
sudo modprobe vcan.sudo ip link add dev vcan0 type vcan e sudo ip link set up vcan0.--socketcan vcan0 vcan0 (usando a mesma interface para loopback TX/RX).No entanto, para todos os desafios do workshop, Doggies físicos são essenciais para observar interações reais do barramento, como propagação de erros e contenção. Use pelo menos 3 Doggies: dois para simulação de ECU (TX/RX) e um como atacante EvilDoggie conectado ao barramento físico compartilhado.
requirements.txt (por exemplo, python-can, tkinter para a interface).Este simulador é apenas para pesquisa e treinamento. Não o use em veículos reais. Contribuições são bem-vindas—abra issues ou PRs para melhorias!
Este projeto é licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.