Skip to content

CSS-Electronics/can-bus-reverse-engineering-skills

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CAN bus reverse engineering skills

This repo contains Claude Code skills that help you reverse engineer raw CAN bus data into decoding rules stored as DBC files.

Specifically, the skills help you leverage AI/LLM tools like Claude Code and python-can scripts to identify which CAN ID and data bits encode a real-world value (speed, RPM, state of charge, ...), work out its start bit, length, endianness, scale and offset, and verify the result.

The skills assume that you are using a CANsub CAN bus interface from CSS Electronics to either record CSV log files via e.g. the webCAN tool, or stream data in real-time via USB/Ethernet.

The repo bundles three skills (auto-discovered when you open the folder in Claude Code):

  • cansub-reverse-engineering - the workflow
  • combine-dbc - merge per-signal DBCs into one
  • cansub-knowledge - CANsub specs / API reference

Note: This is not a 'polished tool', but an illustration of how you can use the CANsub + Python + AI for CAN sniffing

Note: We strongly recommend reading our related article CAN bus reverse engineering with AI.

Watch the CAN bus reverse engineering demo

Recommended hardware

CANsub CAN bus interface streaming real-time in webCAN OBD2-DB9 adapter cable

1. Get the code and install dependencies

  1. Clone the repo (or download the ZIP from GitHub and extract it)
  2. Install Python - Python 3.10+; on Windows, tick "Add python.exe to PATH". Verify: python --version
  3. Install the dependencies into a local virtual environment (.venv) so your system Python stays untouched:
    • Windows: double-click install.bat (or run install.bat in a terminal)
    • macOS / Linux: python3 -m venv .venv && .venv/bin/pip install -r requirements.txt

2. Set up Claude Code

The below is our recommended setup for new Claude Code users:

  1. Get a Claude subscription - Claude Code is included with Claude Pro / Max (or API billing)
  2. Install Visual Studio Code
  3. Install the Claude Code extension - Extensions panel (Ctrl+Shift+X), search "Claude Code", install, sign in
  4. Open this folder - File → Open Folder… → the cloned repo; skills in .claude/skills/ load automatically

3. Connect the hardware

Plug the CANsub into your computer (USB) and into the vehicle's OBD2 port using the OBD2-DB9 adapter cable. Start the engine (or set the ignition on) so there's live CAN traffic to capture. We recommend verifying via webCAN that you can stream raw proprietary CAN bus data before proceeding. If not, consider our contactless CAN reader.

Try it

Open the Claude Code panel in VS Code and ask, for example:

I've connected my CANsub to my car via the OBD2-DB9 cable. Help me check if there is live proprietary CAN data available - and then help me reverse engineer my door locks

Reverse engineer Speed and RPM from the proprietary CAN data found in Mercedes-E350-2010-obd2-can.csv (contains OBD2 reference data).

I have a CANedge log with proprietary vehicle CAN data plus the CANedge's internal GPS/IMU on CAN9 (or a CANmod.gps GPS-to-CAN module). Use the GPS speed as the reference to reverse engineer the proprietary vehicle speed

Help me reverse engineer Speed from my Opel Astra. I have put the raw CAN data in opel/ along with a video of the speed from my car's dashboard.

I have a gauge-to-CAN module with 8 gauges connected to my CANsub - help me reverse engineer the 1st gauge position signal.

Note: You can use our CANsub CAN+OBD2 sample data to test the skill

Output structure and combining DBCs

Each confirmed signal is saved under decoding-output/, grouped by application (the system under test) and signal:

decoding-output/
  <application>/                         e.g. mercedes-e350/
    <signal>/<signal>.dbc                e.g. engine-rpm/engine-rpm.dbc   (one DBC per signal)
    <signal>/<signal>.png                the verify plot (decoded vs reference)
    <signal>/analysis-plots/             survey / correlate / bit-search / fit plots
    <application>.dbc                     the combined DBC across all signals

If you've decoded several signals, ask Claude to merge them into one application DBC (using the combine-dbc skill):

Combine the decoded DBCs for mercedes-e350 into a single DBC.

This produces decoding-output/<application>/<application>.dbc. You can load this combined DBC in webCAN and stream live from your CANsub to see your reverse-engineered signals decoded in real time - a final, live confirmation of the results.

License and attribution

These skills are fully open source under the MIT License - you are free to use, modify and distribute them in your own projects.

If you use them in your projects, videos or blog posts, we'd appreciate a reference to our article: CAN bus reverse engineering with AI.

About

Claude Code skills for reverse-engineering CAN bus signals into DBC files using the CANsub CAN bus interface

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors