Tool
Caring Caribou
Python automotive security exploration tool, begun in the HEAVENS research project, that the README describes as a zero-knowledge tool to drop onto a CAN network and collect information about the services present. Passive modules dump CAN traffic to the terminal or a candump-format file and list every arbitration ID seen on the bus, while the UDS (ISO 14229-1), DoIP (ISO 13400-2) and XCP modules discover ECUs that answer diagnostic requests, enumerate their supported services and subservices, read data identifiers and query XCP capabilities. Its utilities provide reusable ISO-TP (ISO 15765-2) and UDS implementations, and new modules plug into a drop-in module architecture.
Requirements & limits
- Latest GitHub release at review: 0.6, published 2024-03-28; the reviewed master commit is 45 commits ahead and its packaging already reports 0.7. The README installs it from the source tree; PyPI had no caringcaribou project at review.
- Needs a CAN interface supported by python-can and configured in python-can's .canrc file. The install guide uses a PEAK PCAN-USB adapter with SocketCAN on Linux (kernel 3.4 or newer there, while the README asks for a pretty modern kernel) and suggests a Linux VM on Windows. The README requires Python 3.7+; the DoIP module also needs the doipclient and udsoncan packages.
- Discovery and service scans transmit diagnostic requests on the connected bus or network. Other modules send, replay or fuzz frames and perform intrusive diagnostic operations; those are outside this entry, which covers traffic capture and diagnostic-service discovery only.
- GPL-3.0. The bundled unit tests run against mock ECUs on a virtual CAN bus. No CAN traffic was captured or sent.
About this entry
- Type
- Tool
- Category
- Protocol analysis tools
- Relationship
- Foundation tool
- Targets
- Protocol
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/howtoinstall.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/howtouse.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/dump.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/listener.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/uds.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/doip.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- documentation/xcp.md GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- pyproject.toml GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- caringcaribou/tests/mock/mock_ecu.py GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- LICENSE GitHub · CaringCaribou/caringcaribou · Revision 092eff3
- https://github.com/CaringCaribou/caringcaribou/releases/tag/0.6
More in Protocols
- open-appleremote: Siri Remote protocol reconstruction · Case study
- GAMEKB-K17: reconstructing a macropad configuration protocol · Case study
- cooler-lcd: a Thermalright display protocol implementation · Case study
- NJFE: a Soulear camera protocol bridge for desktop inspection · Case study
- hw-harness: scanner USB protocol investigation · Case study
- Roborock Local Server: a self-hosted stand-in for Roborock’s vacuum cloud · Case study