Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ODIS-project-explorer — Dumper/explorateur Python pour les projets runtime MCD utilisés par ODIS | Kitploit
Outils/GitHubGitHub/kartoffelpflanze/odis-project-explorer
Sécurité des Systèmes EmbarquésAnalyse des VulnérabilitésRétro-ingénierieDébogueursCollecte d'InformationsAnalyse de BinairesAnalyse de Micrologiciel
GitHub

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
kartoffelpflanze/odis-project-explorer

ODIS-project-explorer

Dumper/explorateur Python pour les projets runtime MCD utilisés par ODIS

Voir le dépôt
331016il y a 1 anVérifié par Kitploit

Explorateur de projets ODIS

Fil de discussion du forum Nefarious Motorsports : http://nefariousmotorsports.com/forum/index.php?topic=23836.0


Ce projet Python a pour but de décompresser (et d'utiliser) les données stockées dans les projets MCD Runtime (communément appelés « fichiers *.db et .key * »).

Normalement, ces fichiers sont utilisés par le noyau MCD, qui est ensuite utilisé par ODIS ou iDEX ou autre.
Chaque installation d'ODIS fournit une application MCD-Kernel/VWMCDClient.exe qui permet de manipuler les projets à un niveau beaucoup plus bas.

Pour utiliser ces données, on utiliserait normalement les bibliothèques de Include_Libs et MCD-Kernel pour écrire sa propre application C++/Java qui analyse les objets.
Cette approche présente cependant quelques problèmes :

  1. Il faut soit trouver comment calculer le « MAC secret » pour déverrouiller le noyau, soit cracker la .dll.
  2. Presque chaque appel de fonction doit être protégé, car des exceptions sont levées lorsque l'élément demandé n'est pas défini.
  3. Certains éléments de la base de données ne sont pas directement accessibles via l'API fournie, ou du moins difficiles à atteindre.

Avec cet outil, vous pouvez aborder les bases de données depuis le niveau le plus bas possible.
J'espère qu'il sera utile pour l'étude d'ODX, J2534, UDS et tout autre chose.

Un peu d'information

[!NOTE] Aucun projet/base de données ne sera jamais fourni !
Veuillez apporter les vôtres :)

Le fonctionnement de ces projets est que les paires de fichiers .db et .key représentent des « Pools » (et « PoolID » fait référence au nom de fichier sans extension).
Chaque pool contient des Objets.

Tout objet est stocké sous forme de flux de données, dont les octets seront lus comme des drapeaux/chaînes/nombres, etc.
Chacun est stocké différemment, donc... beaucoup de temps a été investi dans Ghidra et x64dbg.
Vous pouvez probablement apprécier le travail nécessaire en jetant un coup d'œil dans le dossier object_loaders.

En aucun cas je ne garantis que je charge correctement chaque type d'objet.
Au contraire, de nombreux champs ont été nommés selon ce que je pensais qu'ils représentaient.
En gros, chaque classe de la bibliothèque C++ hérite d'autres classes et je dois admettre que je n'ai pas vraiment pu comprendre le schéma une fois décompilé.

Pour commencer

Pour la traduction de texte, HSQLDB est nécessaire, qui ne peut être utilisé qu'avec Java.
Par conséquent, JPype devra être installé :

pip install jpype1

Pour obtenir des informations d'utilisation sur chaque script, appelez-les avec l'argument '-h' (ou regardez simplement le code source).

Les scripts qui ont l'option de traduction de texte (dumpDTC et parseMWB) auront besoin d'une base de données.

  • Regardez dans votre dossier de données ODIS (quelque part autour de C:/ProgramData), il devrait y avoir un dossier DIDB/db.
  • Il doit contenir un fichier .data nommé didb_Base-..., où '...' est une langue comme 'en_US'.
  • Donc, fournissez aux scripts le chemin de ce dossier et le suffixe de langue.

Si vous ne fournissez pas une telle base de données, pour dumpDTC vous n'aurez pas la « description plus détaillée », et pour parseMWB tout utilisera son LONG-NAME par défaut d'ODX.

Informations sur les scripts

dumpProject / dumpAllProjects

Ces modules vident tous les Objets de chaque Pool (de chaque Projet).
Sachez que vider tous les projets nécessitera quelques dizaines de gigaoctets et prendra quelques heures.
Personnellement, j'ai travaillé avec une partition séparée que je pouvais formater pour supprimer rapidement tous les fichiers.

Dans l'état actuel, tous mes projets sont vidés sans erreur.
J'ai essayé des projets de 2020 et 2022.
Il est possible que des projets plus anciens/plus récents échouent pour diverses raisons, très probablement des types d'objets non gérés, ou des champs non gérés dans des types d'objets gérés (que j'ai codés en dur car ils étaient identiques dans tous les projets).

[!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

Ce script videra les « modèles de correspondance ECU-VARIANT », nécessaires à la procédure d'« identification de variante » (sélection du fichier approprié pour un ECU).

[!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

Ce script videra les « définitions de DTC ».
Il videra uniquement les objets nécessaires aux DTC (= codes de diagnostic) - 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

Ce script videra les « définitions d'images figées ».
Il videra uniquement les objets nécessaires aux enregistrements de données étendus des DTC - service 0x19, mode 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

Ce script videra les « définitions d'adaptation ».
Il videra uniquement les objets nécessaires à l'écriture de données de calibration (= valeurs que vous pouvez modifier dans l'ECU) - 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

Ce script videra les « définitions de codage ».
Il videra uniquement les objets nécessaires au codage de variante - 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

Ce script videra les « définitions MWB ».
Il videra uniquement les objets nécessaires aux MWB (= Messwertblöcke - Blocs de mesure) - service 0x22.
C'est de loin la partie la plus importante et non standardisée du diagnostic UDS, l'un des objectifs principaux de ce projet.

Télécharger l’outil