Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ODIS-project-explorer — Dumper/esploratore Python per progetti MCD Runtime usati da ODIS | Kitploit
Strumenti/GitHubGitHub/kartoffelpflanze/odis-project-explorer
Sicurezza Sistemi EmbeddedAnalisi delle VulnerabilitàReverse EngineeringDebuggerRaccolta InformazioniAnalisi di BinariAnalisi del Firmware
GitHubkartoffelpflanze/odis-project-explorer

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

ODIS-project-explorer

Dumper/esploratore Python per progetti MCD Runtime usati da ODIS

Vedi Repository
331011 mesi faRevisionato da Kitploit

Esploratore di progetti ODIS

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


Questo progetto Python serve a estrarre (e utilizzare) i dati memorizzati nei progetti MCD Runtime (noti colloquialmente come "file .db e .key").

Normalmente, questi file vengono usati dal kernel MCD, che a sua volta viene usato da ODIS o iDEX o qualsiasi altra cosa. Ogni installazione di ODIS include un'app MCD-Kernel/VWMCDClient.exe che può essere usata per armeggiare con i progetti a un livello molto più basso.

Per usare questi dati, normalmente si userebbero le librerie da Include_Libs e MCD-Kernel per scrivere una propria applicazione C++/Java che analizzi gli oggetti. Ci sono però alcuni problemi con questo approccio:

  1. Devi capire come calcolare il "MAC segreto" per sbloccare il kernel e poterlo usare, oppure craccare la .dll.
  2. Quasi ogni chiamata di funzione deve essere protetta, poiché vengono lanciate eccezioni quando l'elemento richiesto non è definito.
  3. Alcuni elementi del database non sono direttamente accessibili tramite l'API fornita, o comunque difficili da raggiungere.

Con questo strumento puoi accedere ai database dal livello più basso possibile. Spero che sia utile per lo studio di ODX, J2534, UDS e qualsiasi altra cosa.

Un po' di informazioni

[!NOTE] Non verranno mai forniti progetti/database! Portatevi i vostri :)

Il funzionamento di questi progetti è che le coppie di file .db e .key rappresentano dei "Pool" (e "PoolID" si riferisce al nome del file senza estensione). Ogni pool contiene oggetti.

Ogni oggetto è memorizzato come flusso di dati, i cui byte vengono letti come flag/stringhe/numeri ecc. Ognuno è memorizzato in modo diverso, quindi... è stato dedicato molto tempo a Ghidra e x64dbg. Probabilmente puoi apprezzare il lavoro che è costato dando un'occhiata alla cartella object_loaders.

In nessun caso garantisco di caricare correttamente ogni tipo di oggetto. Al contrario, molti campi sono stati nominati in base a ciò che pensavo rappresentassero. Praticamente ogni classe nella libreria C++ eredita da altre classi e devo ammettere che quando l'ho decompilata non sono riuscito a venirne a capo.

Per iniziare

Per la traduzione dei testi è necessario HSQLDB, che può essere utilizzato solo tramite Java. Pertanto, sarà necessario installare JPype:

root@kitploit:~
pip install jpype1

Per informazioni sull'uso di ogni script, chiamali con l'argomento '-h' (oppure dai un'occhiata al codice sorgente).

Gli script che hanno l'opzione di traduzione dei testi (dumpDTC e parseMWB) necessitano di un database.

  • Dai un'occhiata alla cartella dei dati di ODIS (da qualche parte in C:/ProgramData), dovrebbe esserci una cartella DIDB/db.
  • Deve contenere un file .data con nome didb_Base-..., dove '...' è una lingua come 'en_US'.
  • Quindi, fornisci agli script il percorso di quella cartella e il suffisso della lingua.

Se non fornisci un database del genere, per dumpDTC non avrai la "descrizione più dettagliata", e per parseMWB tutto userà il suo LONG-NAME predefinito da ODX.

Informazioni sugli script

dumpProject / dumpAllProjects

Questi moduli esportano ogni oggetto da ogni pool (da ogni progetto). Tieni presente che esportare tutti i progetti richiederà alcune decine di gigabyte e un paio d'ore. Personalmente ho lavorato con una partizione separata che potevo formattare per eliminare rapidamente tutti i file.

Nello stato attuale, tutti i miei progetti vengono esportati senza errori. Ho provato progetti del 2020 e del 2022. È possibile che progetti più vecchi o più nuovi non vengano esportati per vari motivi, molto probabilmente tipi di oggetto non gestiti, o campi non gestiti in tipi di oggetto gestiti (che ho hardcodato dato che erano gli stessi in tutti i progetti).

[!TIP]

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

dumpECUVariantPatterns

Questo script esporta i "modelli di corrispondenza ECU-VARIANT", necessari per la procedura di "identificazione della variante" (selezione del file appropriato per una centralina).

[!TIP]

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

dumpDTC

Questo script esporta le "definizioni DTC". Esporta solo gli oggetti necessari per i DTC (= codici di guasto diagnostici) - servizio 0x19.

[!TIP]

root@kitploit:~
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
root@kitploit:~
python dumpDTC.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/DTCs" "C:/ProgramData/OE/DIDB/db" en_US
root@kitploit:~
python dumpDTC.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/DTCs" "C:/ProgramData/OE/DIDB/db" en_US

dumpFreezeFrames

Questo script esporta le "definizioni dei Freeze Frame". Esporta solo gli oggetti necessari per i record di dati estesi dei DTC - servizio 0x19, modalità 0x06.

[!TIP]

root@kitploit:~
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
root@kitploit:~
python dumpFreezeFrames.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/FFs" "C:/ProgramData/OE/DIDB/db" en_US
root@kitploit:~
python dumpFreezeFrames.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/FFs" "C:/ProgramData/OE/DIDB/db" en_US

dumpAdaptations

Questo script esporta le "definizioni di adattamento". Esporta solo gli oggetti necessari per la scrittura dei dati di calibrazione (= valori che puoi modificare nella centralina) - servizio 0x2E.

[!TIP]

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

dumpCoding

Questo script esporta le "definizioni di codifica". Esporta solo gli oggetti necessari per la codifica delle varianti (Variant Coding) - servizio 0x2E, DID 0x0600.

[!TIP]

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

dumpMWB

Questo script esporta le "definizioni MWB". Esporta solo gli oggetti necessari per gli MWB (= Messwertblöcke - blocchi di misura) - servizio 0x22.

Questa è di gran lunga la parte più importante e non standardizzata della diagnostica UDS, uno degli scopi principali di questo progetto.

[!TIP]

root@kitploit:~
python dumpMWB.py basevariant "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_DashBoardUDS.bv" "O:/MWBs"
root@kitploit:~
python dumpMWB.py project "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "O:/MWBs"
root@kitploit:~
python dumpMWB.py projects "C:/ProgramData/OE/MCD-Projects-E/VWMCD" "O:/MWBs"

parseMWB

Questo script prende una risposta del servizio UDS 0x22 e la analizza in modo simile al kernel MCD. Probabilmente è quello che ha richiesto più lavoro, a parte gli object loader.

[!TIP]

root@kitploit:~
python parseMWB.py "C:/ProgramData/OE/MCD-Projects-E/VWMCD/AU21X" "0.0.0@BV_EnginContrModul1UDS.bv" "EV_ECM25TFS0118U0907404C_001" 0xF40C C0E4 "C:/ProgramData/OE/DIDB/db" en_US

Qualche altro esempio è fornito in docs/mwb_examples.txt.

dumpHSQLDB

Questo script esporta il contenuto di tutte le tabelle di un database HSQLDB. Nome utente e password sono hardcoded, ma non credo che cambieranno mai. Se incontri problemi, dai un'occhiata al capitolo seguente.

[!TIP]

root@kitploit:~
python dumpHSQLDB.py "C:/ProgramData/OE/DIDB/db" "didb_Base-en_US" "O:\HSQLDB"

HSQLDB

Il file bin/hsqldb.jar incluso è una release non modificata da SourceForge, versione 1.8.0.

Se incontri problemi come "user does not exist" quando fornisci un database di traduzione, puoi rinominare hsqldb.jar in qualcos'altro e rinominare hsqldb_mod.jar in hsqldb.jar. Quest'ultimo è stato modificato per esportare automaticamente tutti gli utenti e le password di un database all'avvio.

[!NOTE] L'errore "user does not exist" potrebbe essere mostrato anche se il database è stato caricato in modo errato. Assicurati di aver fornito il percorso corretto.

Il .jar modificato scriverà qualcosa del genere sull'output standard:

root@kitploit:~
Name: PUBLIC, password: null
Name: _SYSTEM, password: null
Name: SA, password: ENMGZIRN
Name: VAUDASISTSUPER, password: ENMGZIRN

Come effetto collaterale, questo verrà sempre stampato quando HSQLDB viene utilizzato da uno degli script che lo richiedono.

[!TIP] Se desideri avviare un server da un database (per i tuoi esperimenti), esegui questo comando dalla cartella bin:

root@kitploit:~
java -cp hsqldb.jar org.hsqldb.Server -database.0 file:"C:/ProgramData/OE/DIDB/db/didb_Base-en_US" -dbname.0 testdb

Ti collegherai ad esso usando l'URL jdbc:hsqldb:hsql://localhost/testdb.

Contribuire

Se qualcun altro è abbastanza dedicato/annoiato, è il benvenuto a contribuire a questo progetto, anche solo aprendo una issue.

Se vuoi aggiungere funzionalità (come esportare altra roba importante), sei libero di guardare come le cose vengono esportate attualmente, ad esempio MWB o DTC, poi usa dumpProject e cerca con un editor di testi nomi di oggetti, campi e simili.

Altre informazioni

In docs/MCD-2D.md puoi trovare la documentazione utilizzata per la validazione dei dati, ben formattata.

La bin/pbl.dll inclusa è semplicemente compilata dalla libreria PBL di Mission-Base. È necessaria per accedere ai file .key.


Nessuna IA è stata danneggiata nella creazione di questo spreco di risorse. Solo un piccolo aiuto per il modulo LongNameTranslation. Non avevo voglia di capire da solo l'integrazione tra Java e SQL.

Scarica lo strumento