Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ODIS-project-explorer — ODISによって使用されるMCDランタイムプロジェクトのためのPythonダンパー/エクスプローラ | Kitploit
ツール/GitHubGitHub/kartoffelpflanze/odis-project-explorer
組み込みシステムセキュリティ脆弱性分析リバースエンジニアリングデバッガ情報収集バイナリ解析ファームウェア解析
GitHubkartoffelpflanze/odis-project-explorer

ODIS-project-explorer

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ODISによって使用されるMCDランタイムプロジェクトのためのPythonダンパー/エクスプローラ

リポジトリを見る
3310211ヶ月前Kitploit レビュー済み

ODIS project explorer

Nefarious Motorsports フォーラムスレッド:http://nefariousmotorsports.com/forum/index.php?topic=23836.0


このPythonプロジェクトは、MCD Runtime Projects(通称「*.db および .key ファイル」)に格納されたデータを展開(および活用)するためのものです。

通常、これらのファイルはMCDカーネルによって使用され、そのカーネルが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 ファイルのペアが「プール」(「PoolID」は拡張子を除いたファイル名)を表していることです。 各プールにはオブジェクトが含まれています。

すべてのオブジェクトはデータストリームとして保存され、そのバイトはフラグ/文字列/数値などとして読み取られます。 各オブジェクトは異なる方法で保存されているため、Ghidra と x64dbg に多くの時間を費やしました。 object_loaders フォルダの中を見れば、その作業の大変さがおわかりいただけると思います。

すべてのオブジェクトタイプを正しくロードしているとは決して保証しません。 それどころか、多くのフィールドは私がそう感じたままに名前を付けています。 基本的に、C++ライブラリのすべてのクラスは他のクラスを継承しており、逆コンパイルしたときには、正直なところ頭が追いつきませんでした。

はじめに

テキスト翻訳には、Java経由でしか使用できないHSQLDBが必要です。 そのため、JPypeをインストールする必要があります:

root@kitploit:~
pip install jpype1

各スクリプトの使用法については、引数「-h」を指定して呼び出してください(またはソースコードをご覧ください)。

テキスト翻訳オプションがあるスクリプト(dumpDTC と parseMWB)にはデータベースが必要です。

  • ODISデータフォルダ(だいたい C:/ProgramData あたり)を確認してください。そこに DIDB/db フォルダがあるはずです。
  • その中には、didb_Base-... という名前の.dataファイルが含まれている必要があります。ここで、「...」は「en_US」のような言語です。
  • したがって、スクリプトにそのフォルダのパスと言語サフィックスを指定してください。

そのようなデータベースを指定しない場合、dumpDTC では「より詳細な説明」が得られず、 parseMWB ではすべての項目にODXのデフォルトのLONG-NAMEが使用されます。

スクリプト情報

dumpProject / dumpAllProjects

これらのモジュールは、すべてのプロジェクトのすべてのプールからすべてのオブジェクトをダンプします。 すべてのプロジェクトをダンプするには、数十ギガバイトの容量が必要で、数時間かかることに注意してください。 私は個人的に、すべてのファイルをすばやく削除するためにフォーマットできる別のパーティションを使用しました。

現在の状態では、すべてのプロジェクトがエラーなしでダンプされます。 2020年と2022年のプロジェクトを試しました。 古い/新しいプロジェクトでは、さまざまな理由(おそらく未処理のオブジェクトタイプ、または処理済みのオブジェクトタイプ内の未処理のフィールド(すべてのプロジェクトで同じだったためハードコーディングしました))でダンプに失敗する可能性があります。

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

このスクリプトは、「ECU-VARIANT マッチングパターン」をダンプします。これは、「バリアント識別」手順(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

このスクリプトは、「DTC定義」をダンプします。 DTC(診断トラブルコード)に必要なオブジェクトのみをダンプします - サービス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

このスクリプトは、「フリーズフレーム定義」をダンプします。 DTC拡張データレコードに必要なオブジェクトのみをダンプします - サービス0x19、モード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

このスクリプトは、「適合定義」をダンプします。 キャリブレーションデータ書き込み(ECUで変更可能な値)に必要なオブジェクトのみをダンプします - サービス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

このスクリプトは、「コーディング定義」をダンプします。 バリアントコーディングに必要なオブジェクトのみをダンプします - サービス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

このスクリプトは、「MWB定義」をダンプします。 MWB(Messwertblöcke - 測定ブロック)に必要なオブジェクトのみをダンプします - サービス0x22。

これは、UDS診断の中で最も重要かつ標準化されていない部分であり、このプロジェクトの主な目的の1つです。

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

このスクリプトは、UDSサービス0x22の応答を受け取り、MCDカーネルと同様に解析します。 おそらく、オブジェクトローダー以外で最も多くの作業が必要でした。

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

さらにいくつかの例が docs/mwb_examples.txt に提供されています。

dumpHSQLDB

このスクリプトは、HSQLDBデータベースのすべてのテーブルの内容をダンプします。 ユーザー名とパスワードはハードコードされていますが、変更されることはないでしょう。 問題が発生した場合は、次の章を参照してください。

[!TIP]

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

HSQLDB

付属の bin/hsqldb.jar は、SourceForge からの未変更のリリース(バージョン 1.8.0)です。

翻訳データベースを指定したときに「ユーザーが存在しません」のような問題が発生した場合は、 hsqldb.jar を別の名前に変更し、hsqldb_mod.jar を hsqldb.jar にリネームしてください。 変更後のjarは、起動時にデータベースのすべてのユーザーとパスワードを自動的にダンプするように変更されています。

[!NOTE] 「ユーザーが存在しません」エラーは、データベースが何らかの理由で正しくロードされなかった場合にも表示されることがあります。 正しいパスを指定したことを確認してください。

変更された .jar は、標準出力に次のような内容を出力します:

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

副作用として、これを必要とするスクリプトのいずれかからHSQLDBが使用されると、常にこれが出力されます。

[!TIP] データベースからサーバーを起動したい場合(独自の実験用)、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

接続にはURL jdbc:hsqldb:hsql://localhost/testdb を使用します。

コントリビューション

もし他の方が十分に熱心/退屈であれば、このプロジェクトへの貢献を大歓迎します。Issueを提出するだけでも構いません。

他の重要なもののダンプなど、機能を追加したい場合は、現在のMWBやDTCなどのダンプ方法を確認し、dumpProject を使用してテキストエディタでオブジェクト名やフィールドなどを検索してみてください。

補足情報

docs/MCD-2D.md には、データの検証に使用したドキュメントがきれいにフォーマットされています。

付属の bin/pbl.dll は、Mission-Base のPBLライブラリから単純にコンパイルされたものです。 .keyファイルにアクセスするために必要です。


このリソースの無駄遣いの作成において、AIは一切傷つけられていません。LongNameTranslation モジュールについては少しだけ助けがありました。JavaとSQLの統合を自分で理解する気にはなれませんでした。

ツールをダウンロード