Awesome CAN Bus 


🚜 CAN 버스를 위한 멋진 도구, 하드웨어 및 리소스
이 큐레이션 목록은 CAN 버스 장치를 리버스 엔지니어링하는 데 도움을 주며, 자동차 임베디드 컨트롤러 소프트웨어와 통신 이해에 가볍게 특화되어 있습니다.
Note
"🔝"로 표시된 항목은 강력히 추천됩니다.
이 목록의 영구 URL: https://github.com/iDoka/awesome-canbus
목차
해킹 및 리버스 엔지니어링 도구
- GVRET - 범용 전기차 리버스 엔지니어링 도구 (Arduino 펌웨어).
- UDSim - 통합 진단 서비스(UDS) 시뮬레이터 및 퍼저 (uds-server의 후속작).
- uds-server - CAN UDS 시뮬레이터 및 퍼저.
- CANalyse - 차량 네트워크 분석 및 공격 도구.
- canhack - 저수준 CAN 프로토콜 해킹 라이브러리.
- canDrive - 자동차 해킹 도구.
- Carpunk - CAN 인젝션 툴킷이자 CANghost의 후속작.
- CANghost - CAN 버스 해킹을 위한 자동화 스크립트.
- canTot - 빠르고 간편한 canbus 해킹 프레임워크.
- CANanalyze - CAN/ISOTP/UDS 같은 자동차 프로토콜과 상호작용하는 데 사용할 수 있는 프레임워크.
- Scapy - Python 기반 대화형 패킷 조작 프로그램 및 라이브러리. CAN/ISOTP/UDS/GMLAN 및 기타 많은 프로토콜을 지원합니다.
- CAN-RE-Tool - CAN 버스 통신 기반 시스템을 위한 리버스 엔지니어링 도구.
- 🔝can-explorer - 리버스 엔지니어링을 돕는 CAN 버스 시각화 도구.
테스트 장비 및 시뮬레이터
- canerrsim - SocketCAN을 사용하여 오류 조건을 테스트하기 위한 CAN 버스 오류 프레임 시뮬레이터 및 모니터.
- ECU-simulator - 일부 차량 진단 서비스를 시뮬레이션하는 도구. UDS(ISO 14229) 및 ISO-TP(ISO 15765-2) 프로토콜을 지원하는 OBD-II 동글 또는 테스터 도구를 테스트하는 데 사용할 수 있습니다.
- ELM327-emulator - 다중 ECU 시뮬레이션을 지원하는 ELM327 어댑터를 통해 OBDII 소프트웨어 인터페이스를 테스트하기 위한 ELM327 에뮬레이터.
프로토콜
OBD-II 도구
- DDT4All - 저렴한 ELM327 인터페이스로 CAN 네트워크에 연결하고 자신만의 ECU 파라미터 화면을 만들 수 있는 도구.
- ELM327SLCAN - ELM327 기반 차량 CAN 버스 스니퍼.
- Arduino-OBD2-Async - 비동기 데이터 요청을 지원하는 Arduino OBD 라이브러리.
- CAN-Shark - Arduino + MCP2515 쉴드에서 OBD PID 작업.
- OBD2-Scantool - 자동차에서 OBD2 정보를 읽는 Python 스캔 도구.
- O2OO - OBD-II 호환 자동차 진단 도구. 자동차의 센서 데이터를 SQLite 데이터베이스로 읽어 들입니다.
- freediag - OBD-II 호환 자동차를 위한 무료 진단 소프트웨어.
- pyvit - Python 차량 인터페이스 툴킷 (보관됨).
- OBDium - ELM327 어댑터를 통해 실시간 OBD-II 데이터, 고장 코드 분석, 오프라인 VIN 디코딩을 제공하는 차량 진단 앱.
UDS
ISO 14229 표준
- python-UDSonCAN - UDS ISO-14229 표준의 Python 구현.
- uds-c - UDS(Unified Diagnostics Service) 및 OBD-II C 라이브러리.
- iso14229 - 임베디드 시스템용 UDS ISO-14229 서버 및 클라이언트의 C 구현.
ISO-TP
ISO 15765-2 표준
- isotp-c - C 언어로 작성된 ISO-TP(ISO15765-2) CAN 프로토콜 구현.
- python-can-IsoTP - ISO-TP(ISO15765-2) CAN 프로토콜의 Python 구현.
- CanTp - AUTOSAR 사양 v4.4.0에 따른 CanTp 모듈(ISO 15765-2) 구현.
- aioisotp - asyncio Python용 ISO-TP 구현.
J1939 도구
SAE J1939 표준
J2534 도구
SAE J2534 표준
유틸리티
공통
- 🔝cantools - CAN 버스 네트워크를 위한 CLI 도구 모음.
- BUSMASTER - CAN과 같은 데이터 버스 시스템을 시뮬레이션, 분석 및 테스트하는 오픈 소스 소프트웨어 도구.
- signalbroker-server - gRPC를 사용하여 CAN/LIN/flexray 및 기타 버스를 읽고 쓸 수 있는 도구로, 원하는 언어를 사용할 수 있습니다.
- CANiBUS - CAN 장치 차량 연구 서버 (OpenGarages.org).
- CANopenTerm - CANopen CC 및 CAN CC 네트워크와 장치를 개발, 테스트 및 분석하기 위한 도구.
Linux 관련
- 🔝Linux CAN Utils - Linux-CAN / SocketCAN 사용자 공간 유용한 유틸리티.
- CAN support in Linux - CAN 하드웨어 인터페이스에 대한 Linux 커널 지원.
- SocketCAN - Linux 커널 지원 (커널 >= 2.6).
- J1939 - Linux 커널 지원 (커널 >= 5.4), can-j1939 커널 모듈도 참조하세요.
- elmcan - ELM327 기반 장치용 Linux SocketCAN 커널 드라이버 (커널 >= 6.0).
- can-isotp - ISO 15765-2:2016 CAN 전송 프로토콜용 Linux 커널 모듈 (Linux 커널 >= 5.10의 일부).
- gs_usb - Geschwister Schneider USB/CAN 장치 및 candleLight USB CAN 인터페이스용 WCID 기반 Linux/Windows CAN 드라이버.
GUI 도구
TUI 도구
Python 도구
- 🔝python-can - Python 개발자를 위해 CAN(Controller Area Network) 지원을 제공하는 CAN 패키지.
- strym - USB-CAN 인터페이스와 함께 작동하는 실시간 CAN 데이터 로깅 및 시각화 도구.
- canviewer - 녹화된 can-bus 데이터 또는 라이브 데이터에서 들어오는 can-bus 메시지를 검사할 수 있는 GUI 프로그램.
- can4python - Linux SocketCAN에서 CAN 버스 신호를 처리하기 위한 패키지.
- Python-Vector-CANoe - Python으로 Vector CANoe API를 제어합니다.
- CanCat - 자동차 및 빌딩 자동화 등에서 자주 사용되는 CAN의 스위스 군용 칼.
- Pyfuzz_can - 연구에서 트럭에 메시지를 주입하여 가속, 클러스터 스푸핑, 브레이크 성능 저하를 유발하는 데 사용될 수 있습니다.
- Robotell-USB-CAN-Python - Robotell USB-CAN 어댑터용 Python 프로그램.
- python-socketcan-monitor - 네트워크 인터페이스를 통해 CAN 버스의 데이터를 표시하는 스크립트.
- CanoPy - 메시지 페이로드를 실시간으로 시각화하고 플로팅하는 Python GUI.
- PythonVectorXL - Vector XL 드라이버 라이브러리용 완전한 Python ctypes 래퍼 라이브러리. 'vxlapi.h'의 #define 지시문, struct/union typedef 지시문 및 함수 정의를 포함합니다(DLL도 로드합니다) (Windows 전용).
python-can에서 영감을 받았습니다.
- py4can - CANalyzer를 통해 CAN 메시지를 보내고 받는 Python 유틸리티.
CAN-over-IP
기타 유틸리티* Seeed-USB-CAN-Linux - 이름 없는 중국산 USB-CAN 어댑터를 위한 CLI Linux 지원.
- opendlv-device-can-replay - 캡처된 CAN 프레임을 CAN 인터페이스로 재생하는 OpenDLV 마이크로서비스.
- c0f - CAN 버스 트래픽을 분석하고 제조사와 모델을 식별하도록 설계된 CAN 버스 핑거프린팅 도구.
- canqv - CAN_RAW를 사용한 빠른 CAN 프레임 검사.
- Candle.NET - candlelight CAN 버스 게이트웨이/분석기(예: CANable, CANtact 등)용 Candle API의 .NET 래퍼.
- canSerializer - CAN이 아닌 전송 계층을 통해 전송하기 위해 CAN 프레임을 직렬화/역직렬화하는 라이브러리(UART, SPI 등을 통해 CAN 프레임을 전송하는 데 사용할 수 있음).
Libraries
- libwecan - CAN 신호를 인코딩/디코딩하는 헤더 전용 라이브러리.
- VCAN - C로 작성된 초소형 가상 CAN 및 CAN-FD 버스 라이브러리.
- IMCTFD - 개선된 Microchip CAN Teensy FlexData 라이브러리 MCP2517FD.
- go-socketcan - SocketCAN용 Golang 라이브러리.
- Qt CAN Bus - 다양한 CAN 장치(SocketCAN, Sys Tec, PEAK, Virtual)를 지원하는 멀티플랫폼 C++ 플러그인 기반 라이브러리.
- JavaCAN - epoll 기반 이벤트 중심 IO를 사용하여 RAW, BCM 및 ISO-TP 소켓을 지원하는 SocketCAN용 Java 바인딩 라이브러리.
- iso15765-canbus - C로 작성된 ISO15765-2 구현.
- CanKit - 여러 CAN 어댑터에 걸쳐 통합 API를 제공하는 크로스플랫폼 C#/.NET CAN 통신 라이브러리.
- CANvenient - Windows와 Linux에서 여러 CAN API를 위한 추상화 계층.
Examples
CAN 데이터베이스
형식(DBC, KCD)
DBC
DBC - CAN 데이터베이스의 사실상 표준은 Vector Informatik GmbH가 개발한 DBC 파일 형식입니다. 공식적인 공개 문서나 사양이 없다는 점에서 독점 형식입니다.
KCD
- KCD - CAN 통신 관계를 설명하는 개방형 형식. DBC 형식과 유사하지만 XML로 작성됩니다.
변환기 및 파서
- can4python - KCD 파일(및 DBC 파일에서 변환된 파일)의 내용을 표시하는 유용한 패키지.
DBC 전용
하드웨어
CAN 버스 USB2CAN 동글, 로거, 스니퍼, 어댑터 등 모든 종류의 하드웨어.
ARM
- USB_CAN-FD on ATSAME51 - 오픈 소스 하드웨어 USB to CAN-FD 인터페이스입니다(ATSAME51J).
- SuperCAN - 오픈 소스 USB to CAN-FD 프로토콜 펌웨어(ATSAME51).
- FlexCAN - Teensy 3.1, 3.2, 3.5, 3.6용 CAN Arduino 라이브러리.
- ELM327 - LPC1517JDB48 기반 오픈 소스 ELM327 OBD 어댑터.
- Open-OBD2-datalogger - 실시간 엔진 데이터를 SD 카드에 저장하는 NXP Kinetis E 데이터로거(시각화는 HTML5와 JavaScript로 수행).
- CANBootloader - GUI + CAN 부트로더 프로토콜.
- PiCCANTE - Raspberry Pi Pico(1|2|W) 기반 오픈 소스 CAN 해킹 도구 - 최대 3개의 CAN 인터페이스, ELM327 에뮬레이터 포함.
STM32
STM32F0x2 기반 하드웨어
Arduino
- GVRET - 일반화된 전기차 리버스 엔지니어링 도구(Arduino 펌웨어).
Espressif Systems (ESP8266, ESP32)
SBC
SBC - 단일 보드 컴퓨터(Single Board Computers).
ASIC 및 FPGA용 IP 코어
- CAN - 클래식 CAN 프로토콜 컨트롤러용 IP 코어(VHDL).
- CTU-CAN-FD - ISO 11898-1:2015 준수 CAN FD IP 코어(VHDL).
기타 하드웨어
하드웨어 관련 도구
기여* 여러분의 기여는 언제나 환영합니다! 먼저 기여 가이드라인을 읽어 주세요.
각주
- 최신 업데이트를 확인하려면 이 루트 저장소를 팔로우하세요.
- 또 다른 awesome 리스트 ▶️ CAN ID 컬렉션 ◀️ 도 유용할 수 있습니다.
- LIN 버스 리버스 엔지니어링, LIN 하드웨어 개발 및 디버깅을 위한 훌륭한 도구와 리소스가 담긴 이 큐레이션 목록 도 유용할 수 있습니다.