Skip to content

πŸš› A curated list of awesome CAN bus tools, hardware and resources

License

Notifications You must be signed in to change notification settings

hexsecs/awesome-canbus

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CAN logo

Awesome Tools, Hardware And Resources For CAN Bus

Awesome GitHub stars GitHub forks GitHub watchers GitHub contributors GitHub pull-requests merged GitHub latest commit

This curated 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.
  • CANanalyze - This framework can be used to interact with automotive protocols like CAN/ISOTP/UDS.
  • Scapy - Python-based interactive packet manipulation program & library. Supports CAN/ISOTP/UDS/GMLAN plus many other protocols.

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 - powerful open environment for automotive bus monitoring, simulation, testing, diagnostics, calibration and so on (Closed source).
  • 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 - Java-based CAN traffic GUI analysis tool (archived).

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.
  • 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.

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 - Python Vehicle Interface Toolkit (archived).

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.
  • 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.
  • 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.
  • iso15765-canbus - Implementation of ISO15765-2 in C.

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)

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).
  • CAN_BUS_DBC_VIEWER - GUI based CAN bus dbc viewer.

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 - Cantact FirmWare by x893.
  • ELM329 - Open-source ELM329 OBD adapter based on STM32F042.
  • OBD2CAN - Bridge between any OBD2 compliant vehicle and the CAN bus interface (firmware is targeted for the STM32F072, and uses ChibiOS as a RTOS).

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.
  • arduino-OBD2 - Arduino library for reading OBD-II data from your car over CAN bus.
  • arduino-ecu-logger - Arduino-based OBD2 engine monitor and data logger.

Espressif Systems (ESP8266, ESP32)

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

Please follow this root-repo for lastest updates.

Contributing

About

πŸš› A curated list of awesome CAN bus tools, hardware and resources

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published