Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ODIS-project-explorer — مُفرغ/مستكشف بلغة بايثون لمشاريع MCD Runtime المستخدمة بواسطة ODIS | Kitploit
أدوات/GitHubGitHub/kartoffelpflanze/odis-project-explorer
أمان الأنظمة المدمجةتحليل الثغرات الأمنيةالهندسة العكسيةمصممي الأخطاءجمع المعلوماتتحليل الملفات الثنائيةتحليل البرامج الثابتة
GitHubkartoffelpflanze/odis-project-explorer

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

ODIS-project-explorer

مُفرغ/مستكشف بلغة بايثون لمشاريع MCD Runtime المستخدمة بواسطة ODIS

عرض المستودع
3310منذ 11 أشهرتمت المراجعة من قبل Kitploit

مستكشف مشروع ODIS

موضوع منتدى Nefarious Motorsports: http://nefariousmotorsports.com/forum/index.php?topic=23836.0


مشروع Python هذا مصمم لفك (والاستفادة من) البيانات المخزنة في مشاريع MCD Runtime (المعروفة شعبياً باسم "ملفات .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 تمثل 'Pools' (و 'PoolID' يشير إلى اسم الملف بدون امتداد). كل pool يحتوي على كائنات.

أي كائن يُخزن كتيار بيانات، تُقرأ بايتاته كأعلام/سلاسل/أرقام إلخ. كل واحد يُخزن بشكل مختلف، لذلك... تم إنفاق الكثير من الوقت على Ghidra و x64dbg. ربما يمكنك تقدير العمل الذي استغرقه بإلقاء نظرة داخل مجلد object_loaders.

لا أضمن تحت أي ظرف من الظروف أنني أقوم بتحميل كل نوع كائن بشكل صحيح. على العكس، تمت تسمية العديد من الحقول بناءً على ما شعرت أنه يمثلونه. في الأساس كل فئة في مكتبة C++ ترث من فئات أخرى، ويجب أن أعترف أنني لم أستطع فهمها جيداً عند فك الترجمة.

البدء

لترجمة النصوص، يلزم HSQLDB، والذي لا يمكن استخدامه إلا عبر Java. لذلك، يجب تثبيت JPype:

root@kitploit:~
pip install jpype1

للحصول على معلومات استخدام كل سكريبت، قم باستدعائها مع الوسيطة '-h' (أو فقط انظر إلى الكود المصدري).

السكريبتات التي تحتوي على خيار ترجمة النص (dumpDTC و parseMWB) ستحتاج إلى قاعدة بيانات.

  • ألق نظرة في مجلد بيانات ODIS لديك (في مكان ما حول C:/ProgramData)، يجب أن يكون هناك مجلد DIDB/db.
  • يجب أن يحتوي على ملف .data باسم didb_Base-...، حيث '...' هي لغة مثل 'en_US'.
  • لذلك، قم بتزويد السكريبتات بمسار ذلك المجلد ولاحقة اللغة.

إذا لم توفر مثل قاعدة البيانات هذه، بالنسبة لـ dumpDTC فلن تحصل على 'الوصف الأكثر تفصيلاً'، وبالنسبة لـ parseMWB سيتم استخدام LONG-NAME الافتراضي من ODX.

معلومات السكريبتات

dumpProject / dumpAllProjects

ستقوم هذه الوحدات بتفريغ كل كائن من كل Pool (من كل مشروع). يُرجى الانتباه إلى أن تفريغ جميع المشاريع سيتطلب بضع عشرات من الجيجابايت وسيستغرق بضع ساعات. لقد عملت شخصياً على قسم منفصل يمكنني تهيئته لحذف جميع الملفات بسرعة.

في الحالة الحالية، يتم تفريغ جميع مشاريعي بدون أخطاء. جربت مشاريع من 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'، الضرورية لإجراء 'تحديد المتغير' (اختيار الملف المناسب لوحدة التحكم الإلكترونية).

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

سيقوم هذا السكريبت بتفريغ 'تعريفات Freeze Frame'. سيقوم فقط بتفريغ الكائنات الضرورية لسجلات البيانات الموسعة لـ 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

سيقوم هذا السكريبت بتفريغ 'تعريفات التكيف'. سيقوم فقط بتفريغ الكائنات الضرورية لكتابة بيانات المعايرة (= القيم التي يمكنك تغييرها في وحدة التحكم الإلكترونية) - الخدمة 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

سيقوم هذا السكريبت بتفريغ 'تعريفات الترميز'. سيقوم فقط بتفريغ الكائنات الضرورية للترميز المتغير (Variant Coding) - الخدمة 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'. سيقوم فقط بتفريغ الكائنات الضرورية لـ MWBs (Messwertblöcke - كتل القياس) - الخدمة 0x22.

هذا هو الجزء الأكثر أهمية وغير موحد من تشخيص UDS، وهو أحد الأغراض الرئيسية لهذا المشروع.

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

إذا واجهت مشاكل مثل 'user does not exist' عند توفير قاعدة بيانات ترجمة، يمكنك إعادة تسمية hsqldb.jar إلى شيء آخر وإعادة تسمية hsqldb_mod.jar إلى hsqldb.jar. هذا الأخير تم تعديله لتفريغ جميع المستخدمين وكلمات المرور لقاعدة البيانات تلقائياً عند بدء التشغيل.

[!NOTE] قد يظهر خطأ 'user does not exist' أيضاً إذا تم تحميل قاعدة البيانات بشكل غير صحيح. يرجى التأكد من أنك قدمت المسار الصحيح.

سيقوم ملف .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

ستتصل به باستخدام الرابط jdbc:hsqldb:hsql://localhost/testdb.

المساهمة

إذا كان أي شخص آخر متحمساً/متحمّلاً بما فيه الكفاية، فنحن نرحب به للمساهمة في هذا المشروع، حتى مجرد تقديم مشكلة. إذا كنت ترغب في إضافة وظائف (مثل تفريغ أشياء مهمة أخرى)، يمكنك إلقاء نظرة على كيفية تفريغ الأشياء حالياً، مثل MWBs أو DTCs، ثم استخدم dumpProject وابحث باستخدام محرر نصوص عن أسماء الكائنات والحقول وما شابه.

معلومات إضافية

في docs/MCD-2D.md يمكنك العثور على الوثائق المستخدمة للتحقق من صحة البيانات، منسقة بشكل جيد.

ملف bin/pbl.dll المضمن هو ببساطة مترجم من مكتبة PBL بواسطة Mission-Base. إنه ضروري للوصول إلى ملفات .key.


لم يتضرر أي ذكاء اصطناعي أثناء صنع هذا الإهدار للموارد. فقط القليل من المساعدة لوحدة LongNameTranslation. لم أكن على استعداد لمعرفة تكامل Java و SQL بنفسي.

تنزيل الأداة