Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ODIS-project-explorer — Дампер/обозреватель на Python для проектов MCD Runtime, используемых ODIS | Kitploit
Инструменты/GitHubGitHub/kartoffelpflanze/odis-project-explorer
Безопасность встроенных системАнализ уязвимостейОбратная инженерияОтладчикиСбор информацииАнализ Бинарных ФайловАнализ Прошивок
GitHub

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
kartoffelpflanze/odis-project-explorer

ODIS-project-explorer

Дампер/обозреватель на Python для проектов MCD Runtime, используемых ODIS

Репозиторий
3310161 год назадПроверено Kitploit

Обозреватель проектов ODIS

Тема форума Nefarious Motorsports: http://nefariousmotorsports.com/forum/index.php?topic=23836.0


Этот проект на Python предназначен для распаковки (и использования) данных, хранящихся в MCD Runtime Projects (в просторечии известных как «файлы .db и .key»).

Обычно эти файлы используются ядром MCD (MCD Kernel), которое затем используется ODIS, iDEX или чем-то ещё. В каждой установке ODIS поставляется приложение MCD-Kernel/VWMCDClient.exe, с помощью которого можно работать с проектами на гораздо более низком уровне.

Чтобы использовать эти данные, обычно нужно задействовать библиотеки из Include_Libs и MCD-Kernel, чтобы написать собственное приложение на C++/Java, которое разбирает объекты. Однако у такого подхода есть несколько проблем:

  1. Нужно либо выяснить, как вычислить «секретный MAC» для разблокировки ядра, либо взломать .dll.
  2. Почти каждый вызов функции нужно оборачивать в проверки, так как при обращении к неопределённому элементу выбрасываются исключения.
  3. Некоторые элементы базы данных недоступны напрямую через предоставляемый API, или до них, по крайней мере, трудно добраться.

С помощью этого инструмента вы можете подойти к базам данных с максимально низкого уровня. Надеюсь, он будет полезен для изучения ODX, J2534, UDS и всего прочего.

Немного информации

[!NOTE] Никакие проекты/базы данных предоставляться не будут! Приносите свои :)

Устройство этих проектов таково: пары файлов .db и .key представляют собой «пулы» (Pools) (а «PoolID» относится к имени файла без расширения). Каждый пул содержит объекты.

Любой объект хранится в виде потока данных, байты которого читаются как флаги/строки/числа и т.п. Каждый объект хранится по-разному, поэтому... в Ghidra и x64dbg было вложено очень много времени. Вы, вероятно, сможете оценить проделанную работу, заглянув в папку object_loaders.

Я никоим образом не гарантирую, что загружаю каждый тип объектов правильно. Напротив, многие поля названы по тому, что, как мне казалось, они обозначают. По сути, каждый класс в библиотеке C++ наследуется от других классов, и, признаться, я не смог как следует разобраться в этом при декомпиляции.

Начало работы

Для перевода текстов нужна HSQLDB, использовать которую можно только через Java. Поэтому потребуется установить JPype:

pip install jpype1

Чтобы получить информацию об использовании каждого скрипта, вызовите его с аргументом '-h' (или просто посмотрите исходный код).

Скриптам, у которых есть возможность перевода текста (dumpDTC и parseMWB), потребуется база данных.

  • Загляните в папку данных ODIS (где-то в районе C:/ProgramData) — там должна быть папка DIDB/db.
  • В ней должен находиться .data-файл с именем didb_Base-..., где '...' — это язык, например 'en_US'.
  • Затем передайте скриптам путь к этой папке и языковой суффикс.

Если такую базу не указать, то для dumpDTC у вас не будет «более подробного описания», а для parseMWB всё будет использовать значение LONG-NAME по умолчанию из ODX.

Информация о скриптах

dumpProject / dumpAllProjects

Эти модули выгружают все объекты из каждого пула (из каждого проекта). Имейте в виду, что выгрузка всех проектов потребует несколько десятков гигабайт и займёт пару часов. Лично я работал с отдельным разделом, который можно было отформатировать, чтобы быстро удалить все файлы.

В текущем состоянии все мои проекты выгружаются без ошибок. Я пробовал проекты 2020 и 2022 годов. Возможно, более старые или новые проекты не выгрузятся по разным причинам, скорее всего, из-за необработанных типов объектов или необработанных полей в обрабатываемых типах объектов (которые я захардкодил, поскольку во всех проектах они одинаковы).

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

Этот скрипт выгружает «шаблоны сопоставления вариантов ЭБУ» (ECU-VARIANT matching patterns), необходимые для процедуры «идентификации варианта» (выбора подходящего файла для ЭБУ).

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

Этот скрипт выгружает «определения DTC». Он выгружает только объекты, необходимые для DTC (диагностических кодов неисправностей) — сервис 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

Этот скрипт выгружает «определения Freeze Frame». Он выгружает только объекты, необходимые для расширенных записей данных DTC — сервис 0x19, режим 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

Этот скрипт выгружает «определения адаптаций». Он выгружает только объекты, необходимые для записи калибровочных данных (значения, которые можно изменять в ЭБУ) — сервис 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

Этот скрипт выгружает «определения кодирования». Он выгружает только объекты, необходимые для кодирования варианта (Variant Coding) — сервис 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

Этот скрипт выгружает «определения MWB». Он выгружает только объекты, необходимые для MWB (= Messwertblöcke — измерительные блоки) — сервис 0x22.

Это, безусловно, самая важная и нестандартизированная часть диагностики UDS, одна из главных целей этого проекта.

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

Этот скрипт принимает ответ сервиса UDS 0x22 и разбирает его аналогично MCD Kernel. На него, пожалуй, было затрачено больше всего работы, не считая загрузчиков объектов.

Скачать инструмент