Vehicle Security and Car Hacking
Contents
Miscellaneous
Projects
A community project building a hardware module for your car, a server to talk to it, and a mobile app to talk to the server, in order to allow developers and enthusiasts to add more functionality to their car and control it remotely.
The Open Source Car Control Project is a hardware and software project detailing the conversion of a late model vehicle into an autonomous driving research and development vehicle.
Hardware
CAN
A tool for reverse-engineering and testing automotive systems. The CANBadger consists of both hardware and software. The main interface is a LPC1768/LPC1769 processor mounted on a custom PCB, which offers two CAN interfaces, SD Card, a blinky LED, some GPIO pins, power supply for peripherals and the ethernet port.
A platform giving security auditors to audit CAN devices. It can be used to block, forward or modify CAN frames on the fly autonomously as well as interactively.
Open-source CAN hacking tool based on Raspberry Pi Pico [2] (W) - Up to 3x CAN interfaces, includes ELM327 emulator.
Applications
GUI tool that can monitor a CAN bus and automatically learn the devices attached to it by watching communications.
CANToolz is a framework for analysing CAN networks and devices. It is based on several modules which can be assembled in a pipeline.
An Open Source tool to simulate, analyze and test data bus systems such as CAN, LIN, FlexRay.
openpilot is an open source driving agent that performs the functions of Adaptive Cruise Control (ACC) and Lane Keeping Assist System (LKAS) for Hondas and Acuras.
An open source Automatic License Plate Recognition library written in C++ with bindings in C#, Java, Node.js, Go, and Python.
A PoC that the USB port is an attack surface for a Mazda car's infotainment system and how Mazda hacks are made (known bug in the CMU).
CAN related scripts, and scripts to use a car as a gamepad
A security analysis toolkit for proprietary car protocols.
Libraries and Tools
C
Userspace utilites for SocketCAN on Linux.
a Virtual car userspace that sends CAN messages based on SocketCAN
"dbcc is a program for converting a DBC file primarily into into C code that can serialize and deserialize CAN messages." With existing DBC files from a vehicle, this file allows you to convert them to C code that extracts the CAN messages and properties of the CAN environment.
C++
High level Volkswagen CAN signaling protocol implementation.
Development tool for CAN bus simulation. CANdevStudio enables to simulate CAN signals such as ignition status, doors status or reverse gear by every automotive developer.
Free, open-source ECU seed-key unlocking tool.
Python
A "swiss-army knife" for interacting with live CAN data. Primary API interface in Python, but written in C++.
A Python framework for Controller Area Network applications.
Intended to be the nmap of vehicle security.
A fingerprinting tool for CAN communications that can be used to find a specific signal on a CAN network when testing interactions with a vehicle.
Python interface to various CAN implementations, including SocketCAN. Allows you to use Python 2.7.x or 3.3.x+ to communicate over CAN networks.
A Python module for handling realtime sensor data from OBD-II vehicle ports. Works with ELM327 OBD-II adapters, and is fit for the Raspberry Pi.
A python library to send, receive, edit raw packets. Supports CAN and automotive protocols: see the automotive doc
A python gui used to visualize and plot message payloads in real time.
A python-based cli framework based on sploitkit and is easy to use because it similar to working with Metasploit. This similar to an exploit framework but focused on known CAN Bus vulnerabilities or fun CAN Bus hacks.
Python module to work with CAN matrix files
Python module to decode and encode CAN messages using a DBC file
Upgraded and optimized version of the original Caring Caribou project.
Go
A Go server that allows a room full of researchers to simultaneously work on the same vehicle, whether for instructional purposes or team reversing sessions.
A Go based CAN simulator for the Raspberry Pi to be used with PiCAN2 or the open source CAN Simulator board