
EvilDoggie Workshop 자동차 시뮬레이터 저장소에 오신 것을 환영합니다! 이 도구는 Black Hat Arsenal 2025 세션에서 사용된 자동차 CAN Bus 환경을 재현합니다. Faraday Security가 개발한 이 시뮬레이터는 차량 내 여러 전자 제어 장치(ECU)를 에뮬레이션하여 연구자들이 통제된 환경에서 EvilDoggie로 공격적 CAN Bus 공격을 연습할 수 있게 해줍니다.
이 시뮬레이터는 직렬(serial) 및 SocketCAN 인터페이스를 모두 지원하여 CAN 메시지 스니핑, 주입, 조작을 위해 Doggie 하드웨어와 원활하게 통합됩니다. 자동차 보안 교육 목적으로 설계되었으며, 첨부된 워크숍 가이드에 자세히 설명된 VIN 스푸핑, 도어 잠금 해제, 크루즈 컨트롤 혼란, 에어백 토글, ABS 분리 등의 챌린지에 중점을 둡니다.
이 오픈소스 시뮬레이터는 MIT 라이선스로 배포되며 광범위한 Doggie/EvilDoggie 생태계의 일부입니다. 펌웨어 및 하드웨어에 대한 전체 세부 정보는 메인 저장소를 방문하세요.
전체 워크숍 가이드는 evilDoggie Workshop 문서를 참조하세요.

시뮬레이터를 실행하려면 Doggie 2개(TX용 1개, RX용 1개)가 필요하며, 메시지가 실제 물리적 버스를 통해 전파되도록 하려면 Doggie 3개(공격자(EvilDoggie) 1개와 시뮬레이션된 ECU 2개)를 권장합니다.
종속성을 격리하기 위해 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 2개 구성의 경우 두 개의 Doggie를 시스템에 연결(예: USB)하고 해당 포트(예: /dev/ttyUSB0 및 /dev/ttyUSB1)를 식별합니다. 직렬 연결에는 --serial 옵션을, 가상 CAN 인터페이스에는 --socketcan을 사용합니다.
직렬 인터페이스 예시(필요에 따라 포트와 보드레이트 조정):
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 Bus 속도를 초당 비트 수로 설정합니다(기본값: 500000).SocketCAN(가상 인터페이스)의 경우:
python3 -m doggie_lab --socketcan can0 can1 --speed 500000
--socketcan TX_CAN RX_CAN: SocketCAN 인터페이스를 사용합니다(예: can0 can1).전체 옵션은 python3 -m doggie_lab --help를 실행하세요.
하드웨어 없이 빠른 테스트를 위해 Linux에서 SocketCAN을 사용하여 단일 가상 CAN 인터페이스를 시뮬레이션할 수 있습니다. 기본적인 스니핑이나 주입에는 적합하지만 고급 챌린지에 필요한 물리적 버스 동작을 재현하지는 못합니다.
가상 CAN 인터페이스 설정:
sudo modprobe vcan.sudo ip link add dev vcan0 type vcan 및 sudo ip link set up vcan0.--socketcan vcan0 vcan0으로 시뮬레이터를 실행합니다(TX/RX 루프백에 동일한 인터페이스 사용).그러나 모든 워크숍 챌린지에서는 오류 전파 및 경합과 같은 실제 버스 상호 작용을 관찰하기 위해 물리적 Doggie가 필수적입니다. ECU 시뮬레이션(TX/RX)용 2개와 공유 물리적 버스에 연결된 공격자 EvilDoggie 1개, 최소 3개의 Doggie를 사용하세요.
requirements.txt에 나열된 종속성(예: python-can, UI용 tkinter).이 시뮬레이터는 연구 및 교육 목적으로만 사용됩니다. 실제 차량에는 사용하지 마세요. 기여를 환영합니다—개선을 위한 이슈 또는 PR을 열어주세요!
이 프로젝트는 MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.