تعلم اللغة الفرنسية أو كيفية الحصول على محول عالمي من ماسح تشخيصي PSA

لمنع انخفاض معدل الذكاء أثناء العزلة الذاتية ، كانت هناك رغبة في القيام بشيء مفيد لأنفسهم ، وإذا كنت محظوظًا - ليس فقط. عند قطع الدائرة التاسعة حول الشقة ، تم التقاط عيني على ماسح ضوئي للسيارات ، أخذته من صديق لمزيد من الدراسة ، وهو Lexia 3 ، المعروف أيضًا باسم Actia XS Evolution. إليكم أحدها:
صورة
كان عيبها الضخم هو أن برنامج DiagBox فقط المصمم لتشخيص سيارات بيجو / سيتروين يمكنه العمل معه. كان من المستحيل تحمل هذا الأخير (s) ، لذلك نشأت فكرة أنه إذا تم إجبار هذا الماسح الضوئي على إرسال واستقبال رسائل عشوائية إلى حافلة CAN للسيارة ، وبالتالي تحويلها إلى محول عالمي.

إذن ، خطة العمل:

  1. اجمع اتصال USB بين الكمبيوتر الشخصي والمريض.
  2. افهم كيف يحدث الاتصال بين برنامج تشغيل المحول والبرنامج.
  3. كرر التبادل وأشعر أنني بحالة جيدة (المفسد: تبين أنه أكثر تعقيدًا قليلاً).

1. الصرف


يقوم مجمع برامج DiagBox بتصفح الإنترنت بحرية ، لذلك لم تكن هناك صعوبات في الخطوة 1 ، خاصة أنه يأتي مع أداة صغيرة لتحديد المحول ، الأمر الذي يبسط المهمة إلى حد ما من الخطوة 2. عند تلقي التبادل عبر USB ، ساعدت نسخة تجريبية من USBLyzer .
نحن ذاهبون إلى النجاح. في الصورة ، حزمة البيانات المرسلة ، ونوع الجهاز في المرسل ، والأداة المساعدة نفسها.

صورة

بالنظر إلى IRPs عند فتح الجهاز والتبادل معه ، يمكننا أن نستنتج أن العمل يتم من خلال آلية Windows I / O القياسية ، وهي فتح الملف الظاهري للجهاز ، ووظيفة CreateFile وللتبادل ، DeviceIOControl.

صورة

2. استخلاص المعلومات


يتم جمع البيانات ، ويتم استلام معرف IOCTL والأعلام ، ويظل الأمر صغيرًا ، وفتح جهاز الملف وإرسال حزمة من البايتات هناك. فقط افتحه؟ لم يعط البحث من خلال WinObj أي نتائج ، عند توصيله ، لا يكون للمحول اسم دقيق ، فقط ارتباط ضمني بمعرف متغير باستمرار ، أي ببساطة فتح جهاز مثل منفذ COM لن يعمل

CreateFile("\\\\.\\COM1", ...)

لقد أوضحت دراسة ملفات البرنامج ، أن كل شيء أصبح بسيطًا جدًا - يحتوي المحول على GUID الفريد الخاص به ، والذي يُطلب من نظام التشغيل الحصول على قائمة بجميع الأجهزة التي تحتوي على GUID وإذا كانت موجودة ، فسوف نحصل على رابط للجهاز ،
\\?\USB#VID_103A&PID_F000#6&268bff9b&0&7#{75a835f4-d77d-4402-8585-c42247f25b76}\vcommusb0والذي سيتم فتحه بنجاح.

دالة تقوم بإرجاع المسار بدلاً من GUID:

CM_Get_Device_Interface_List(InterfaceClassGuid, pDeviceID, Buffer, BufferLen, ulFlags);

يتم فتح "الملف" بنجاح ، لا تنس العلامات التي تم الحصول عليها عبر USBLyzer

Device = CreateFile(DeviceName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

3. النهائي


نرسل حزمة من البايت ، واستجابة - الصمت ...

bStatus = DeviceIoControl(Device, 0x220003, send_buf, send_len, out_buf, max_out_len, &returned_len, NULL);

لفترة طويلة جلست ونظرت إلى الشاشة ، وهنا نفس التبادل ، وهنا الاستجابات من الجهاز ، وهنا الأعلام ، تمامًا كما كررت ، ولكن لا شيء يأتي منها.

صورة

بعد أن فقدت كل أمل في النجاح ، كان لدي شيء أخير - المدفعية الثقيلة على شكل قرص من مجلة Hacker مع برنامج OllyDbg. نبدأ ، نعلق على العملية ، ونضع نقطة التوقف على وظائف DeviceIoControl وما نراه.

صورة

الملك ليس حقيقيا. رمز IOCTL مختلف تمامًا ، البيانات ليست على الإطلاق مثل تلك التي يتم رؤيتها من خلال USBLyzer.

ما تم ارساله للجهاز:

<b>00 FA</b> <i>AA</i> BA 7C 15 00 00 00 00 00 00

وذلك عبر USB:

40 05 15 C0 <b>00 FA</b> 00 00 <i>AA</i> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41

كان التلميح باسم الجهاز مرئيًا في مدير المهام. لقد وجدت مقالاً على موقع Microsoft على الويب حول ماهية برنامج تشغيل UMDF USB. مسح مخطط كتلة:

صورة

اتضح أن ما نراه في USBLyzer هو طبقة النقل لنقل بيانات العميل ، والتي يتم تنفيذها في برنامج تشغيل UMDF (الاتجاه 7 في الصورة) ، بينما نقوم بنقل البيانات إلى الجهاز (الاتجاه 2 في الصورة) ، الذي سيذهب أولاً إلى السائق ، ثم يذهب إلى ناقل USB. آمل أن أوضحت بشكل واضح.

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

صورة

ووفقا له ، في الرسالة أعلاه ، تم طلب إصدار البرامج الثابتة (00 FA) ، والذي تم تلقي استجابة به مع الخط APPLI_XS_Fuji_ P106138A V4.3.0ACTIA 02.01.12.

الكل. نقوم بتكوين CAN ، وإرسال عناوين استجابة الطلب للاتصال باستخدام بروتوكول ISO-TP والحصول على محول يعمل بشكل كامل مع السيارة. لسهولة الاستخدام ، تمت كتابة غلاف يتوافق ، قدر الإمكان ، مع معيار PassThru J2534 ، بحيث يمكن استخدام هذا المحول مع برامج السيارات المختلفة ، بما في ذلك تصميمه الخاص.

فيديو العمل (يتم إخراج stdout إلى وحدة التحكم لتسهيل عملية التصحيح):


يمكن العثور على مصادر هنا

All Articles