Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/kartoffelpflanze/odis-project-explorer
Segurança de Sistemas EmbarcadosAnálise de VulnerabilidadesEngenharia ReversaDepuradoresColeta de InformaçõesAnálise de BináriosAnálise de Firmware
GitHub

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
kartoffelpflanze/odis-project-explorer

ODIS-project-explorer

Python dumper/explorer para MCD Runtime Projects usados pela ODIS

Ver Repositório
331016há 1 anoRevisado pelo Kitploit

Explorador de projetos ODIS

Tópico do fórum Nefarious Motorsports: http://nefariousmotorsports.com/forum/index.php?topic=23836.0


Este projeto Python tem como objetivo desempacotar (e utilizar) os dados armazenados em MCD Runtime Projects (conhecidos coloquialmente como ".db e .key files").

Normalmente, esses arquivos são usados pelo MCD Kernel, que por sua vez é usado pelo ODIS ou iDEX ou algo assim. Em cada instalação do ODIS, há um aplicativo MCD-Kernel/VWMCDClient.exe que pode ser usado para mexer nos projetos em um nível muito mais baixo.

Para usar esses dados, normalmente se usam as bibliotecas de Include_Libs e MCD-Kernel para escrever seu próprio aplicativo C++/Java que analisa os objetos. No entanto, há alguns problemas com essa abordagem:

  1. Você precisa descobrir como calcular o "MAC secreto" para desbloquear o kernel para uso, ou quebrar o .dll.
  2. Quase todas as chamadas de função devem ser protegidas, pois exceções são lançadas quando o elemento solicitado não está definido.
  3. Alguns elementos do banco de dados não são diretamente acessíveis usando a API fornecida, ou pelo menos difíceis de alcançar.

Com esta ferramenta, você pode abordar os bancos de dados a partir do nível mais baixo possível. Espero que seja útil para o estudo de ODX, J2534, UDS e o que mais vier.

Um pouco de informação

[!NOTE] Nenhum projeto/banco de dados será fornecido! Por favor, traga os seus :)

A forma como esses projetos funcionam é que os pares de arquivos .db e .key representam "Pools" (e "PoolID" se refere ao nome do arquivo sem extensão). Cada pool contém Objetos.

Qualquer objeto é armazenado como um fluxo de dados, cujos bytes serão lidos como flags/strings/números etc. Cada um é armazenado de forma diferente, então... muito tempo foi dedicado ao Ghidra e x64dbg. Você provavelmente pode apreciar o trabalho que isso deu dando uma olhada dentro da pasta object_loaders.

Sob nenhuma circunstância garanto que estou carregando todos os tipos de objeto corretamente. Pelo contrário, muitos campos foram nomeados conforme o que eu sentia que representavam. Basicamente, toda classe na biblioteca C++ herda de outras classes e tenho que admitir que não consegui realmente entender isso quando descompilado.

Primeiros passos

Para tradução de texto, é necessário o HSQLDB, que só pode ser usado através do Java. Portanto, o JPype precisará ser instalado:

pip install jpype1

Para informações de uso de cada script, chame-os com o argumento '-h' (ou apenas veja o código-fonte).

Os scripts que têm a opção de tradução de texto (dumpDTC e parseMWB) precisarão de um banco de dados.

  • Dê uma olhada na sua pasta de dados do ODIS (por volta de C:/ProgramData), deve haver uma pasta DIDB/db.
  • Deve conter um arquivo .data com nome didb_Base-..., onde '...' é um idioma como 'en_US'.
  • Então, forneça aos scripts o caminho dessa pasta e o sufixo do idioma.

Se você não fornecer esse banco de dados, para dumpDTC você não terá a "descrição mais detalhada", e para parseMWB tudo usará seu LONG-NAME padrão do ODX.

Informações dos scripts

dumpProject / dumpAllProjects

Esses módulos despejarão todos os Objetos de cada Pool (de cada Projeto). Esteja ciente de que despejar todos os projetos exigirá algumas dezenas de gigabytes e levará algumas horas. Pessoalmente, trabalhei com uma partição separada que poderia formatar para excluir rapidamente todos os arquivos.

No estado atual, todos os meus projetos são despejados sem erros. Tentei projetos de 2020 e 2022. É possível que projetos mais antigos/novos falhem ao despejar por vários motivos, muito provavelmente tipos de objeto não tratados, ou campos não tratados em tipos de objeto tratados (que eu codifiquei manualmente, já que eram os mesmos em todos os projetos).

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

Este script despejará "padrões de correspondência ECU-VARIANT", necessários para o procedimento de "identificação de variante" (selecionar o arquivo apropriado para uma 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

Este script despejará "definições de DTC". Ele despejará apenas os objetos necessários para DTCs (= diagnostic trouble codes) - serviço 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

Este script despejará "definições de Freeze Frame". Ele despejará apenas os objetos necessários para registros de dados estendidos de DTC - serviço 0x19, modo 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

Este script despejará "definições de Adaptação". Ele despejará apenas os objetos necessários para Gravação de Dados de Calibração (= valores que você pode alterar na ECU) - serviço 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

Este script despejará "definições de Codificação". Ele despejará apenas os objetos necessários para Codificação de Variante - serviço 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

Este script despejará "definições de MWB". Ele despejará apenas os objetos necessários para MWBs (= Messwertblöcke - Blocos de medição) - serviço 0x22.

Esta é de longe a parte mais importante e não padronizada do diagnóstico UDS, um dos principais propósitos deste projeto.

[!TIP]

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

parseMWB

Baixar ferramenta