jglim / CaesarSuite

Library and applications to work with Dаіmlеr diagnostics CBF files.
MIT License
125 stars 33 forks source link

CaesarSuite Banner

Caesar Suite

Counter

Library and applications to work with Dаіmlеr diagnostics CBF files.

Header Image

Warning

This project is far from production ready. Please be careful if you are planning to use this with your vehicle.

Getting Started

Builds are available on the Releases page for the adventurous. Ensure that .NET Framework 4.6 or newer is installed. Optionally install .NET 5 too, if you intend to use UnlockECU.

License

MIT

Icons from http://www.famfamfam.com/lab/icons/silk/


Caesar

Caesar is an experimental parser for CBF files that is reverse engineered from the official, proprietary c32s.dll library.

Names of classes, functions, properties will change often as they are matched with their disassembly's names. Please be mindful of this when referencing the Caesar library.

Trafo

Trafo converts a CBF file into a simplified JSON representation and is backed by Caesar. At this point, the JSON should contain enough information to work with variant-coding strings. Usage is straightforward: drop a CBF file onto Trafo.exe and a JSON file will be created in the same folder as the input file.

Diogenes

Diogenes is intended to be a FOSS replacement for Vediamo's variant-coding capabilities over J2534 interfaces.

At this point, Diogenes can:

(New:)

Diogenes will be "complete" when it can:

If you are looking for an alternative with a broader feature set, check out OpenVehicleDiag instead

Demo

Establishing a connection

Connection

Reading ECU data

Read Data

Variant coding

VC

More information on variant coding in this discussion

CFF flash export

Dump a CFF flash file's raw memory contents (assumes unencrypted, uncompressed data). Files are labeled with its intended memory address (IDA: File -> Load file -> Additional binary file)

CFF

(New!) CFF Splicer

Modify a CFF flash file's memory segment data (assumes unencrypted, uncompressed data). New segment data can be of different file sizes, and the destination ECU memory address can be changed.

CFF2


Contributing

Issues

The primary roadblock for Caesar/Diogenes is the inability to parse Diagnostic Service code blobs, which are compiled binary scripts that automate tasks such as session switching, variant identification, ECU unlocking, and (apparently) variant coding. While Diogenes is usable on UDS, it still falls short for protocols like KW2C3PE because of this issue.

Workaround

My lack of understanding

There are concepts which I do not understand that may impede the development of this project:

Contributors

These individuals have helped to improve Diogenes in some form (e.g. code, testing, traces/logs, knowledge sharing, assets).

Thank you for your contributions.