Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ODIS-project-explorer — Python-Dumper/Explorer für MCD Runtime-Projekte, die von ODIS verwendet werden | Kitploit
Tools/GitHubGitHub/kartoffelpflanze/odis-project-explorer
Embedded-System-SicherheitSchwachstellenanalyseReverse EngineeringDebuggerInformationsbeschaffungBinäranalyseFirmware-Analyse
GitHub

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
kartoffelpflanze/odis-project-explorer

ODIS-project-explorer

Python-Dumper/Explorer für MCD Runtime-Projekte, die von ODIS verwendet werden

Repository anzeigen
331016vor 1 JahrVon Kitploit geprüft

ODIS-Projekt-Explorer

Nefarious Motorsports Forum-Thread: http://nefariousmotorsports.com/forum/index.php?topic=23836.0


Dieses Python-Projekt dient dazu, die in MCD Runtime Projects gespeicherten Daten zu entpacken (und zu nutzen) (umgangssprachlich als "*.db and .key files" bekannt).

Normalerweise werden diese Dateien vom MCD-Kernel verwendet, der dann von ODIS oder iDEX oder ähnlichem genutzt wird. Mit jeder ODIS-Installation wird eine App MCD-Kernel/VWMCDClient.exe bereitgestellt, mit der man auf einer viel niedrigeren Ebene mit den Projekten herumspielen kann.

Um diese Daten zu nutzen, würde man normalerweise die Bibliotheken aus Include_Libs und MCD-Kernel verwenden, um eine eigene C++/Java-App zu schreiben, die die Objekte parst. Es gibt jedoch einige Probleme mit diesem Ansatz:

  1. Man muss entweder herausfinden, wie man den "geheimen MAC" berechnet, um den Kernel zur Nutzung freizuschalten, oder die .dll knacken.
  2. Fast jeder Funktionsaufruf muss abgesichert werden, da Ausnahmen ausgelöst werden, wenn das angeforderte Element nicht definiert ist.
  3. Einige Datenbankelemente sind mit der bereitgestellten API nicht direkt zugänglich oder zumindest schwer erreichbar.

Mit diesem Tool können Sie die Datenbanken von der niedrigstmöglichen Ebene aus angehen. Ich hoffe, es ist für das Studium von ODX, J2534, UDS und was auch immer sonst nützlich.

Ein wenig Info

[!NOTE] Es werden niemals Projekte/Datenbanken bereitgestellt! Bitte bringen Sie Ihre eigenen mit :)

Die Funktionsweise dieser Projekte ist, dass die Paare von .db- und .key-Dateien "Pools" darstellen (und "PoolID" bezieht sich auf den Dateinamen ohne Erweiterung). Jeder Pool enthält Objekte.

Jedes Objekt wird als Datenstrom gespeichert, dessen Bytes als Flags/Zeichenfolgen/Zahlen usw. gelesen werden. Jedes ist anders gespeichert, also... viel Zeit wurde in Ghidra und x64dbg gesteckt. Sie können die geleistete Arbeit wahrscheinlich würdigen, wenn Sie einen Blick in den Ordner object_loaders werfen.

Unter keinen Umständen garantiere ich, dass ich jeden Objekttyp korrekt lade. Im Gegenteil, viele Felder wurden so benannt, wie ich das Gefühl hatte, was sie darstellen. Grundsätzlich erbt jede Klasse in der C++-Bibliothek von anderen Klassen, und ich muss zugeben, dass ich es beim Dekompilieren nicht wirklich verstanden habe.

Erste Schritte

Für die Textübersetzung wird HSQLDB benötigt, das nur über Java verwendet werden kann. Daher muss JPype installiert werden:

pip install jpype1

Für Nutzungsinformationen zu jedem Skript rufen Sie es mit dem Argument '-h' auf (oder schauen Sie einfach in den Quellcode).

Die Skripte, die die Option der Textübersetzung haben (dumpDTC und parseMWB), benötigen eine Datenbank.

  • Schauen Sie in Ihrem ODIS-Datenordner (irgendwo in C:/ProgramData) nach, dort sollte ein DIDB/db-Ordner sein.
  • Er muss eine .data-Datei mit dem Namen didb_Base-... enthalten, wobei '...' eine Sprache wie 'en_US' ist.
  • Geben Sie den Skripten also den Pfad zu diesem Ordner und das Sprachsuffix an.

Wenn Sie keine solche Datenbank angeben, haben Sie bei dumpDTC keine "detailliertere Beschreibung", und bei parseMWB verwendet alles seinen standardmäßigen LONG-NAME aus ODX.

Skriptinformationen

dumpProject / dumpAllProjects

Diese Module werden jedes Objekt aus jedem Pool (aus jedem Projekt) ausgeben. Seien Sie sich bewusst, dass das Ausgeben aller Projekte einige zehn Gigabyte erfordert und ein paar Stunden dauert. Ich persönlich habe mit einer separaten Partition gearbeitet, die ich formatieren konnte, um alle Dateien schnell zu löschen.

Im aktuellen Zustand werden alle meine Projekte fehlerfrei ausgegeben. Ich habe Projekte von 2020 und 2022 getestet. Es ist möglich, dass ältere/neuere Projekte aus verschiedenen Gründen nicht ausgegeben werden können, höchstwahrscheinlich aufgrund nicht behandelter Objekttypen oder nicht behandelter Felder in behandelten Objekttypen (die ich fest codiert habe, da sie in allen Projekten gleich waren).

[!TIP]

python dumpProject.py "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/Projects"
python dumpAllProjects.py "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/Projects"

dumpECUVariantPatterns

Dieses Skript wird "ECU-VARIANT-Abgleichmuster" ausgeben, die für die "Variantenidentifikations"-Prozedur (Auswahl der geeigneten Datei für ein Steuergerät) notwendig sind.

[!TIP]

python dumpECUVariantPatterns.py basevariant "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_DashBoardUDS.bv" "O:/Patterns"
python dumpECUVariantPatterns.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/Patterns"
python dumpECUVariantPatterns.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/Patterns"

dumpDTC

Dieses Skript wird "DTC-Definitionen" ausgeben. Es wird nur die für DTCs (= Diagnose-Fehlercodes) notwendigen Objekte ausgeben - Service 0x19.

[!TIP]

python dumpDTC.py basevariant "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_DashBoardUDS.bv" "O:/DTCs" "C:/ProgramData/OE/DIDB/db" en_US
python dumpDTC.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/DTCs" "C:/ProgramData/OE/DIDB/db" en_US
python dumpDTC.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/DTCs" "C:/ProgramData/OE/DIDB/db" en_US

dumpFreezeFrames

Dieses Skript wird "Freeze Frame-Definitionen" ausgeben. Es wird nur die für erweiterte DTC-Datensätze notwendigen Objekte ausgeben - Service 0x19, Modus 0x06.

[!TIP]

python dumpFreezeFrames.py basevariant "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_DashBoardUDS.bv" "O:/FFs" "C:/ProgramData/OE/DIDB/db" en_US
python dumpFreezeFrames.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/FFs" "C:/ProgramData/OE/DIDB/db" en_US
python dumpFreezeFrames.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/FFs" "C:/ProgramData/OE/DIDB/db" en_US

dumpAdaptations

Dieses Skript wird "Adaptionsdefinitionen" ausgeben. Es wird nur die für das Schreiben von Kalibrierdaten (= Werte, die Sie im Steuergerät ändern können) notwendigen Objekte ausgeben - Service 0x2E.

[!TIP]

python dumpAdaptations.py basevariant "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_DashBoardUDS.bv" "O:/ADPs"
python dumpAdaptations.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/ADPs"
python dumpAdaptations.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/ADPs"

dumpCoding

Dieses Skript wird "Coding-Definitionen" ausgeben. Es wird nur die für das Varianten-Coding notwendigen Objekte ausgeben - Service 0x2E, DID 0x0600.

[!TIP]

python dumpCoding.py basevariant "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_DashBoardUDS.bv" "O:/VRCs"
python dumpCoding.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/VRCs"
python dumpCoding.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/VRCs"

dumpMWB

Dieses Skript wird "MWB-Definitionen" ausgeben. Es wird nur die für MWBs (= Messwertblöcke) notwendigen Objekte ausgeben - Service 0x22.

Dies ist mit Abstand der wichtigste und nicht standardisierte Teil der UDS-Diagnose, einer der Hauptzwecke dieses Projekts.

Tool herunterladen