Skip to content

Latest commit

 

History

History
396 lines (300 loc) · 26 KB

README.md

File metadata and controls

396 lines (300 loc) · 26 KB

CAN logo

🚜 A curated list of awesome tools, hardware and resources for CAN bus

This list helps a reverse engineering CAN bus devices with lightly specializing in automotive embedded controller software and communication understanding.

The another awesome list ▶️ CAN ID collections ◀️ also might be useful.

permanent URL: https://github.com/iDoka/awesome-canbus

Contents

Hacking and Reverse Engineering tools

  • CarHackingTools - Collection of Common Car Hacking Tools a scripts collection to help jump start car research and hacking
  • Caring Caribou - A friendly car security exploration tool for the CAN bus
  • CAN_Reverse_Engineering - Automated Payload Reverse Engineering Pipeline for the Controller Area Network (CAN) protocol
  • carhacking - Car hacking scripts and docs collection
  • ReCAN - Reverse engineering of Controller Area Networks
  • parse_can_logs - Parse CAN logs and visualize data streams on plot
  • reversegear - Offline Reverse Engineering Tools for Automotive Networks
  • CANalyzat0r - Security analysis toolkit for proprietary car protocols
  • CANToolz - Black-box CAN network analysis framework
  • GVRET - Generalized Electric Vehicle Reverse Engineering Tool (Arduino FW)
  • UDSim - Unified Diagnostic Services Simulator and Fuzzer (successor of uds-server)
  • uds-server - CAN UDS Simulator and Fuzzer
  • CANalyse - a vehicle network analysis and attack tool
  • canhack - a low-level CAN protocol hacking library
  • canDrive - tools for hacking your car
  • Carpunk - CAN injection toolkit and successor of CANghost
  • CANghost - automated Script For Hacking Into CAN Bus
  • canTot - quick and dirty canbus h4xing framework

Utils

Common

  • Linux CAN Utils - Linux-CAN / SocketCAN user space useful utils
  • cantools - collection of CLI tools for the CAN bus network
  • BUSMASTER - an Open Source Software tool to simulate, analyze and test data bus systems such as CAN
  • signalbroker-server - Tool to read and write CAN/LIN/flexray and other buses using gRPC which allows usage of preferred language
  • CANiBUS - CAN Device Vehicle Research Server (OpenGarages.org)

GUI Tools

  • CANdevStudio from GENIVI - CAN simulation software using a drag-and-drop style GUI with interconnected functional blocks
  • CANAL-View - Qt GUI for TouCAN USB to CAN bus converter
  • wxCAN-Sniffer - CAN bus sniffer (PC side) with animation and chart
  • CANLogger - CAN bus logger and analyzer tool
  • Seeeed-USB-CAN-Analyzer - Closed source binary for noname Chinese USB-CAN adapter
  • CANtact-app Desktop application for CANtact hardware interface
  • SavvyCAN - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces.
  • openCanSuite - Set of tools for analyzing, simulating and visualizing a CAN system
  • Plotter and Scanner from SmartGauges - scanning and visualizing tool for automotive systems
  • ICSim - Instrument Cluster Simulator for SocketCAN by OpenGarages
  • CANgaroo - Qt-based CAN bus analyzer software
  • CAN-X - C# CAN bus analyzer software
  • CAN-Monitor-qt - universal CAN bus monitoring program
  • CANBUS-Analyzer - development tool/companion software for graphs, displays and analyzes both known and unknown CANBUS packets
  • SLSS-CANAnalyser - SLSS CANAnalyser is Windows CAN-Bus-Analysis-Software to show, record and evaluate CAN-Bus signals
  • TSMaster - [closed source] powerful open environment for automotive bus monitoring, simulation, testing, diagnostics, calibration and so on
  • CAN++ - Windows program for receiving and transmitting CAN bus messages. After import of CAN data base files (*.dbc or *.kcd) CAN signals are shown in symbolic form. In addition they can be shown as graphics (wave forms)
  • CANcool - CAN bus Analyser and Simulation Software with CAN-FD support
  • Kayak - [archived] Java-based CAN traffic GUI analysis tool

Python Tools

  • cantools - CAN BUS tools in Python
  • python-can - CAN package provides controller area network support for Python developers
  • strym - real time CAN data logging and visualization tool to work with USB-CAN Interface
  • canviewer - GUI program that allows the inspection of incoming can-bus messages, either from recorder can-bus data or live data
  • can4python - A package for handling CAN bus signals on Linux SocketCAN. Useful for showing the contents of KCD files (also those converted from DBC files)
  • Python-Vector-CANoe - Control Vector CANoe API by Python
  • CanCat - Swiss army knife of CAN often used in cars and building automation, etc
  • Pyfuzz_can - may be used in research to inject messages into a truck and cause acceleration, cluster spoofing, and degrade brake performance
  • Robotell-USB-CAN-Python - Python program for Robotell USB-CAN Adapter
  • python-socketcan-monitor - script to display data from a CAN bus over network interfaces
  • CanoPy - A python gui used to visualize and plot message payloads in real time.

UDS

  • python-UDSonCAN - Python implementation of UDS ISO-14229 standard
  • uds-c - Unified Diagnostics Service (UDS) and OBD-II C Library

ISO-TP

  • isotp-c - An implementation of the ISO-TP (ISO15765-2) CAN protocol in C
  • python-can-IsoTP - Python implementation of the ISO-TP (ISO15765-2) CAN protocol

CAN-over-IP

  • cannelloni - SocketCAN over Ethernet tunnel
  • tincan - Visualization of CAN bus traffic via UDP interface
  • pican - TCP CAN reader
  • canny - Simple CAN-over-IP gateway
  • python-socketcan-monitor - script to display data from a CAN bus over network interfaces

OBD-II tools

  • DDT4All - tool to create your own ECU parameters screens and connect to a CAN network with a cheap ELM327 interface
  • ELM327SLCAN - ELM327 based vehicle's CAN bus sniffer
  • Arduino-OBD2-Async - Arduino OBD library with asynchronous data requesting
  • CAN-Shark working with OBD PIDs from Arduino + MCP2515 shield
  • OBD2-Scantool - A python scantool to read OBD2 info from cars
  • O2OO - OBD-II compliant car diagnostic tool. It reads sensor data from a car into an sqlite database
  • freediag - Free diagnostic software for OBD-II compliant motor vehicles
  • pyvit - [archived] Python Vehicle Interface Toolkit

J1939 Tools

  • J1939-CANBUS - Supported Engines CAT, Perkins, Wartsalla, MTU, VOLVO
  • J1939-Framework - Framework to work with J1939 Frames used in CAN bus in bus, car and trucks industries
  • python-j1939 - SAE J1939 support dependent on python-can package. Provides codec and filtering by PGN but not full SPN decoding
  • can-utils with J1939 support - Fork of can-utils with a few additional tools for J1939
  • test-can-j1939 - how to use CAN J1939 on linux
  • libj1939 - library to work with J1939 Frames (intended to be used in microcontrollers)
  • Pretty-J1939 - python libs and scripts for pretty-printing J1939 logs
  • TruckDevil - a tool and framework for interacting with and assessing ECUs that use J1939 for communications on the CANBUS

J2534 Tools

  • JCanalog - Easy To Use J2534 Vehicle Logger (left for history)
  • j2534-tcp - Virtual J2534 driver over TCP/IP

Other Utils

  • Seeeed-USB-CAN-Linux - CLI Linux Support for noname Chinese USB-CAN adapter
  • opendlv-device-can-replay - OpenDLV Microservice to replay captured CAN frames to a CAN interface
  • c0f - CAN bus fingerprinting tool is designed to analyze CAN bus traffic and fingerprint the Maker and Model
  • canqv - Quick CAN frame inspection using CAN_RAW
  • Candle.NET - .NET wrapper for the Candle API for candlelight CAN bus gateways/analysers (e.g. CANable, CANtact, etc)
  • canSerializer - lib for serializing and deserializing CAN frames for transmission over a non CAN transport layer (Can be used to transport CAN frames over UART, SPI, etc)

Libraries

  • libwecan - header only lib to encode and decode CAN signal
  • python-can - the can package provides controller area network support for Python developers
  • VCAN - a tiny virtual CAN and CAN-FD bus library in C
  • IMCTFD - Improved Microchip CAN Teensy FlexData Library MCP2517FD
  • go-socketcan - Golang library for SocketCAN
  • isotp-c - An implementation of the ISO-TP (ISO 15765-2) Support Library in C
  • Qt CAN Bus - A multiplatform C++ plugin based library with support for various CAN Devices (SocketCAN, Sys Tec, PEAK, Virtual)
  • JavaCAN - A Java binding library for SocketCAN with support for RAW, BCM and ISO-TP sockets using epoll-based event-driven IO

Examples

  • CAN-Examples - Example C code for CAN Sockets on Linux
  • socketcan-demo - set of example programs which highlight how to make use of SocketCAN on Linux

CAN Databases

Formats

DBC

KCD

  • KCD - An open format to describe communication relationships in CAN. similar to DBC format but written in XML

Converters and Parsers

  • cantools by Erik Moqvist - CAN tools in python for DBC, KCD, SYM, ARXML 4 and CDD file parsing
  • cantools by Andreas Heitmann - a set of libraries and command line tools for handling ASC, BLF, CLG, VSB, MDF, and DBC files
  • CanDB - Generate CAN dbc file with OEM defined CAN matrix (xls)
  • canmatrix - Converting CAN Database Formats .arxml .dbc .dbf .kcd
  • CANBabel - Translator for several CAN description formats (supports KCD r/w and DBC read)
  • can4python - A useful package for showing the contents of KCD files (also those converted from DBC files)
  • dbcc - DBC to C (and CSV, JSON and XML) compiler using the mpc parser combinator library
  • convert_dbc_to_cpp_file - util for convert dbc (canbus) to cpp(cplusplus) function

DBC only

  • Vector DBC - library to access CAN Databases (aka CANdb, aka DBC files) from Vector Informatik
  • dbcppp - C/C++ DBC file parser/tool
  • can_decoder - API module for decoding raw CAN bus data to physical values using a DBC CAN database
  • CANdb from GENIVI - Library for parsing DBC - CAN bus database description formats
  • dbc-parser - A Flex/Bison/Lemon parser/scanner for DBC files
  • Vector CANdb++ DBC file parser - modified version of the dbc file parser of eerimoq
  • dbc_reader - Virtual can bus reader from dbc file (python)

Hardware

All kind of HW like CAN bus USB2CAN dongles, loggers, sniffers, adapters, etc.

ARM

STM32F042x based HW

  • candleLight_fw - compatible firmware for candleLight, cantact, canable, CANAlyze, VulCAN
  • CANsniffer on STM32F042 - CANbus sniffer less complicated than existing commercial products
  • candleLight - KiCAD project of usb-can adapter based on STM32F0
  • cantact-hw - Hardware design files for the CANtact tool, use cantact-fw as firmware source
  • cantact - Drivers and Command Line Interface for CANtact tools
  • USB2CAN - Compact and isolated USB-to-CAN Adapter
  • CANAlyze - an open source, native CAN interface for Linux that can be built entirely using open source tools, use canalyze-fw as firmware source
  • Cantact FW by x893
  • ELM329 - Open-source ELM329 OBD adapter based on STM32F042

Arduino

  • arduino-canhacker - CanHacker (lawicel) CAN adapter on Arduino + MCP2515
  • open-usb-can from Fabio Baltieri - CAN-to-USB dongle based on ATMega32U and MCP2515
  • Arduino-CAN-bus-SD-logger - Arduino script to log CAN bus information to SD card. Mainly focused on J1939
  • Arduino-canbus-monitor - Can bus monitoring tool based on arduino and can bus shield. Implements CAN ASCII/SLCAN protocol compatible with Lawicel CAN232/CANUSB
  • Arduino-psa-comfort-can-adapter - Arduino sketch to operate new PSA (Peugeot, Citroen, DS, Opel) comfort devices (CAN2010) on old BSI CAN-BUS (CAN2004)
  • epasuino - Arduino based Speed sensitive electric power steering for automobiles Speed sensitive electric power steering for automobiles
  • carfuino - Arduino based Automotive performance computer with Megasquirt integration
  • W203-canbus - Arduino project for W211/W219 W203/W209 Mercedes (bluetooth audio control and more)
  • CANBus-Triple - The car hacking platform based on AVR and MCP2515 works with this firmware
  • GVRET - Generalized Electric Vehicle Reverse Engineering Tool (Arduino FW)
  • open-source-can-bridge - gateway with several CAN interfaces based on Xmega
  • arduino-mcp2515 - Arduino MCP2515 CAN interface library
  • slcanuino - USB-CAN (SocketCAN) sketch for Arduino CAN-BUS shield
  • CITM02 - CAN In The Middle (CITM) the Dual channel CANBUS adapter built around Arduino

ESP

SBC

SBC - Single Board Computers

  • beaglebone_black_socketcan - How to get access to the CAN bus on a BeagleBone Black via socketcan interface
  • rpi-can-logger - Project to log CAN bus data from a PiCAN2 and a GPS module
  • CANoPi - CAN interface for Raspberry Pi Zero

Others HW

Hardware related tools

etc

Follow this permanent root-repo for lastest updates: https://github.com/iDoka/awesome-canbus

Tags

#awesome #awesome-list #can #can-bus #canbus #canfd #can-fd #logger #sniffer #slcan #socketcan #car-hacking #bus-monitoring #lawicel #elm327 #obd2 #canutils #automotive #embedded #arduino #rpi #raspberry-pi #sae #uds #j1962 #j1939 #j1979 #j2534 #lin #lin-bus #local-interconnect-network #flexray #obd-ii #slcan-protocol #usbtin #usb2can #iso11898 #iso11565 #iso11765 #iso14229 #dbc #odb #ldf #electric-vehicles #vehicular-networks #python #automotive-security