/canhack

A low-level CAN protocol hacking library

Primary LanguagePythonMIT LicenseMIT

Welcome to the Yes We CAN repository

This repository contains tools and resources for the Yes We CAN project of Canis Labs, including:

  • Python tool for creating and parsing a CAN bitstreams (src/canframe.py)
  • A Sigrok protocol decoder for CAN 2.0 (src/can2)
  • Portable generic C for the CANHack toolkit (in src)
  • A MicroPython SDK for the Raspberry Pi Pico with the CANHack or CANPico boards, released as binary firmware plus also a patch against the v1.15 MicroPython release (inpico/micropython)
  • Documentation for the CANPico board and the MicroPython SDK (in docs)
  • Schematics and Kicad PCB files for the CANHack and CANPico boards (in pico)

There is a PulseView and can2 demo video showing how to use PulseView as a logic analyzer and seeing CAN frames at a low-level.

More information about the CANHack toolkit are on the Canis Labs CTO blog, including details on how to make a CANHack board using breadboard. There is also a CANHack toolkit demo video that goes into detail on how to use the toolkit from Python, the CAN protocol hacks it includes, and demonstrates it attacking CAN frames in real hardware (the video uses the STM32-based PyBoard but the current MicroPython SDK now runs on the Raspberry Pi Pico).