Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/kartoffelpflanze/odis-project-explorer
Seguridad de Sistemas EmbebidosAnálisis de VulnerabilidadesIngeniería InversaDepuradoresRecopilación de InformaciónAnálisis de BinariosAnálisis de Firmware
GitHubkartoffelpflanze/odis-project-explorer

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ODIS-project-explorer

Volcador/explorador en Python para proyectos MCD Runtime utilizados por ODIS

Ver Repositorio
33103hace 11 mesesRevisado por Kitploit

Explorador de proyectos ODIS

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


Este proyecto Python está pensado para desempaquetar (y hacer uso de) los datos almacenados en MCD Runtime Projects (coloquialmente conocidos como "archivos *.db y .key").

Normalmente, estos archivos son utilizados por el MCD Kernel, que a su vez es utilizado por ODIS, iDEX o lo que sea. Cada instalación de ODIS incluye una aplicación MCD-Kernel/VWMCDClient.exe que se puede usar para manipular los proyectos a un nivel mucho más bajo.

Para usar estos datos, normalmente se utilizarían las librerías de Include_Libs y MCD-Kernel para escribir tu propia aplicación en C++/Java que analice los objetos. Sin embargo, hay algunos problemas con este enfoque:

  1. Tienes que descubrir cómo calcular la "MAC secreta" para desbloquear el kernel para su uso, o crackear el .dll.
  2. Casi cada llamada a función debe estar protegida, ya que se lanzan excepciones cuando el elemento solicitado no está definido.
  3. Algunos elementos de la base de datos no son accesibles directamente mediante la API proporcionada, o al menos son difíciles de alcanzar.

Con esta herramienta, puedes abordar las bases de datos desde el nivel más bajo posible. Espero que sea útil para el estudio de ODX, J2534, UDS y cualquier otra cosa.

Un poco de información

[!NOTE] ¡Nunca se proporcionarán proyectos/bases de datos! Traiga los suyos propios :)

La forma en que funcionan estos proyectos es que los pares de archivos .db y .key representan "Pools" (y "PoolID" se refiere al nombre del archivo sin extensión). Cada pool contiene Objetos.

Cualquier objeto se almacena como un flujo de datos, cuyos bytes se leerán como banderas/cadenas/números, etc. Cada uno se almacena de manera diferente, así que... se dedicó mucho tiempo a Ghidra y x64dbg. Probablemente puedas apreciar el trabajo que tomó echando un vistazo dentro de la carpeta object_loaders.

Bajo ninguna circunstancia garantizo que esté cargando correctamente todos los tipos de objetos. Por el contrario, muchos campos fueron nombrados según lo que sentí que representaban. Básicamente, cada clase en la biblioteca C++ hereda de otras clases y debo admitir que no pude entenderlo realmente cuando se descompiló.

Primeros pasos

Para la traducción de texto, se necesita HSQLDB, que solo se puede usar a través de Java. Por lo tanto, será necesario instalar JPype:

root@kitploit:~
pip install jpype1

Para obtener información de uso de cada script, llámelos con el argumento '-h' (o simplemente mire el código fuente).

Los scripts que tienen la opción de traducción de texto (dumpDTC y parseMWB) necesitarán una base de datos.

  • Eche un vistazo a su carpeta de datos de ODIS (en algún lugar alrededor de C:/ProgramData), debería haber una carpeta DIDB/db.
  • Debe contener un archivo .data con nombre didb_Base-..., donde '...' es un idioma como 'en_US'.
  • Por lo tanto, proporcione a los scripts la ruta de esa carpeta y el sufijo de idioma.

Si no proporciona dicha base de datos, para dumpDTC no tendrá la "descripción más detallada", y para parseMWB todo usará su LONG-NAME predeterminado de ODX.

Información de scripts

dumpProject / dumpAllProjects

Estos módulos volcarán todos los Objetos de cada Pool (de cada Proyecto). Tenga en cuenta que volcar todos los proyectos requerirá unas decenas de gigabytes y llevará un par de horas. Personalmente trabajé con una partición separada que podía formatear para eliminar rápidamente todos los archivos.

En el estado actual, todos mis proyectos se vuelcan sin errores. Probé proyectos de 2020 y 2022. Es posible que proyectos más antiguos/nuevos fallen al volcar por varias razones, muy probablemente tipos de objetos no manejados, o campos no manejados en tipos de objetos manejados (que codifiqué manualmente ya que eran los mismos en todos los proyectos).

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

Este script volcará los "patrones de coincidencia ECU-VARIANTE", necesarios para el procedimiento de "identificación de variante" (selección del archivo apropiado para una ECU).

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

Este script volcará las "definiciones de DTC". Solo volcará los objetos necesarios para DTCs (= códigos de diagnóstico de problemas) - servicio 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

Este script volcará las "definiciones de Fotogramas Congelados". Solo volcará los objetos necesarios para los registros de datos extendidos de DTC - servicio 0x19, modo 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

Este script volcará las "definiciones de Adaptación". Solo volcará los objetos necesarios para la Escritura de Datos de Calibración (= valores que puedes cambiar en la ECU) - servicio 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

Este script volcará las "definiciones de Codificación". Solo volcará los objetos necesarios para la Codificación de Variantes - servicio 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

Este script volcará las "definiciones de MWB". Solo volcará los objetos necesarios para MWBs (= Messwertblöcke - Bloques de medición) - servicio 0x22.

Esta es, con diferencia, la parte más importante y no estandarizada del diagnóstico UDS, uno de los principales propósitos de este proyecto.

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

Este script tomará una respuesta del servicio UDS 0x22 y la analizará de manera similar al MCD Kernel. Probablemente fue la que más trabajo llevó, aparte de los cargadores de objetos.

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

Se proporcionan algunos ejemplos más en docs/mwb_examples.txt.

dumpHSQLDB

Este script volcará el contenido de todas las tablas de una base de datos HSQLDB. El nombre de usuario y la contraseña están codificados, pero no espero que cambien nunca. Si encuentras problemas, consulta el siguiente capítulo.

[!TIP]

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

HSQLDB

El bin/hsqldb.jar incluido es una versión sin modificar de SourceForge, versión 1.8.0.

Si encuentras problemas como "el usuario no existe" al proporcionar una base de datos de traducción, puedes renombrar hsqldb.jar a otra cosa y renombrar hsqldb_mod.jar a hsqldb.jar. Ese ha sido modificado para volcar automáticamente todos los usuarios y contraseñas de una base de datos al inicio.

[!NOTE] El error "el usuario no existe" también puede mostrarse si la base de datos se cargó incorrectamente. Asegúrate de haber proporcionado la ruta correcta.

El .jar modificado escribirá algo como esto en la salida estándar:

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

Como efecto secundario, esto siempre se imprimirá cuando se use HSQLDB desde uno de los scripts que lo necesitan.

[!TIP] Si deseas iniciar un servidor desde una base de datos (para tus propios experimentos), ejecuta esto desde dentro de la carpeta 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

Te conectarás a él usando la URL jdbc:hsqldb:hsql://localhost/testdb.

Contribuir

Si alguien más está lo suficientemente dedicado/aburrido, es muy bienvenido a contribuir a este proyecto, incluso solo enviando un issue.

Si deseas agregar funcionalidad (como volcar otras cosas importantes), eres libre de mirar cómo se vuelcan las cosas actualmente, como MWBs o DTCs, luego usa dumpProject y busca con un editor de texto nombres de objetos, campos y demás.

Información adicional

En docs/MCD-2D.md puedes encontrar la documentación utilizada para la validación de datos, bien formateada.

El bin/pbl.dll incluido está simplemente compilado de la biblioteca PBL de Mission-Base. Es necesario para acceder a los archivos .key.


No se dañó ninguna IA en la creación de este desperdicio de recursos. Solo un poco de ayuda para el módulo LongNameTranslation. No tuve ganas de descubrir la integración de Java y SQL por mí mismo.

Descargar herramienta