Library and applications to work with Dаіmlеr diagnostics CBF files.
This project is far from production ready. Please be careful if you are planning to use this with your vehicle.
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.
MIT
Icons from http://www.famfamfam.com/lab/icons/silk/
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 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 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
More information on variant coding in this discussion
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)
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.
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.
00 40 33 10
) on a "fresh" ECU, and become 00 00 00 01
when written with Vediamo.There are concepts which I do not understand that may impede the development of this project:
DT_STO_ID_Calibration_Identification
. There is also a function for DT_STO_ID_Calibration_Verification_Number
which returns an unknown 4 bytes. Are these values matched?These individuals have helped to improve Diogenes in some form (e.g. code, testing, traces/logs, knowledge sharing, assets).
Thank you for your contributions.