كيفية اختراق سيارة - دورة تصادم سريعة

مقياس سرعة الدوران المفسد ، المحرك لا يعمل.

الهدف من هذا المقال هو جعلك تبدأ في اختراق السيارات - بسرعة ورخيصة وسهلة. من أجل القيام بذلك ، سنعمل على محاكاة مقياس RPM كمثال.

ما يلي هو بأي حال من الأحوال تعليمي شامل. إنه يهدف بدلاً من ذلك إلى توفير معلومات كافية لتنشيط أعمالك. إذا كنت تريد الحفر بشكل أعمق ، يمكنك الخروج من القراءات التي يجب قراءتها في النهاية.

إذا قررت تنفيذ هذا البرنامج التعليمي في الحياة الواقعية ، فستحتاج إلى كمبيوتر Linux (أو جهاز Linux افتراضي) ، وجهاز CAN-to-USB (الذي سنبحث فيه لاحقًا).

السيارة عبارة عن شبكة

تتكون السيارة من عدة أجهزة كمبيوتر للتحكم في المحرك ، ناقل الحركة ، النوافذ ، الأقفال ، الأنوار ، وما إلى ذلك. تسمى هذه الحواسيب بوحدات التحكم الإلكترونية (ECU) وتتواصل مع بعضها البعض عبر شبكة.

على سبيل المثال ، عندما تضغط على الزر الموجود على عجلة القيادة لزيادة حجم الراديو ، يرسل ECU لعجلة القيادة أمرًا لزيادة مستوى الصوت على الشبكة ، ثم يرى ECU الراديو هذا الأمر ويعمل وفقًا لذلك.

هناك شبكات متعددة في السيارة ، وعمومًا لا يقل عن اثنين:

  • واحد للبيانات الهامة مثل رسائل المحرك ومجموعة نقل الحركة
  • واحد للبيانات الأقل أهمية مثل أقفال الراديو والباب

تستخدم الشبكة المهمة بروتوكولًا سريعًا وموثوقًا ، بينما تستخدم الشبكة غير الضرورية بروتوكولًا أبطأ وأقل موثوقية ولكن أرخص. يعتمد عدد الشبكات وأيضًا شبكات ECU معًا على صناعة الطراز والطراز والسنة. يمكن أيضًا توصيل وحدة التحكم الإلكترونية بشبكات متعددة.

الاتصال بشبكة

يمكن الوصول إلى بعض الشبكات عبر منفذ OBD-II. OBD-II إلزامي على جميع السيارات والشاحنات الخفيفة التي بنيت في الولايات المتحدة بعد عام 1996 وأوروبا بعد عام 2004.

الموصل في أذرع مقعد السائق. قد تحتاج إلى رفع بعض الغطاء البلاستيكي ولكن يمكن الوصول إليه دائمًا بدون أدوات.

موصل OBD-II.

يسمح معيار OBD-II بخمسة بروتوكولات تشوير. الأمر متروك للشركة المصنعة لتقرر أيها تستخدم. CAN هي الأكثر شعبية وما سنناقشه. يمكن الوصول إليها عبر السنين 6 و 14 من موصل OBD-II. إذا كانت سيارتك بها حافلة CAN ، فسترى خيوط معدنية على المسامير كما في الصورة أعلاه.

حافلة CAN عبارة عن حافلة موثوقة وعالية السرعة تُستخدم لإرسال البيانات المهمة. لسوء الحظ ، لم يتم توحيد حزم البيانات على الناقل ، لذا ستحتاج إلى عكس اتجاهها لمعرفة ما تعنيه. يترك معيار OBD-II أيضًا حيزًا للدبابيس المحددة الخاصة بالمورد والتي يمكن استخدامها للبروتوكولات الخاصة بالمورد. هذا يجعل من السهل على الوكيل تشخيص المشكلات.

في سيارتي (GM) ، لدي حافلة CAN قياسية على السنين 6 و 14 ، وحافلة CAN بسلك مفرد منفردة على بائع 1. ناقل CAN القياسي هو بروتوكول موثوق به وعالي السرعة (500 كيلو بت في الثانية) يشار إليه أيضًا باسم CAN عالية السرعة (HS-CAN). يتم استخدامه للبيانات الهامة. ناقل CAN الفردي (SW-CAN) أو GMLAN أبطأ (33.3 كيلو بت في الثانية) وأقل موثوقية ولكنه أرخص لأنه يستخدم سلكًا واحدًا فقط. يستخدم هذا الناقل للبيانات غير الهامة.

إذا كنت ترى رقمًا محددًا للبائع ولا تعرف البروتوكول الذي يتم استخدامه ، فستقوم Google " OBD pinout". هناك أيضًا سرعة منخفضة CAN (LS-CAN) وسرعة متوسطة CAN (MS-CAN). يوجد MS-CAN بشكل عام على السنين 3 و 11 ، ويعمل بسرعة 125 كيلو بت في الثانية على سيارات Ford و Volvo.

أدوات

ستحتاج إلى جهاز قادر على تفسير بيانات CAN وكذلك برنامج لتحليل البيانات

المعدات

من أجل تلقي حزم CAN وإرسالها ، تحتاج إلى جهاز قادر على ذلك. سوف تصادفك غالبًا عبر أجهزة ELM327. في حين أن هذه لها استخدامها ، فهي فظيعة للتسلل. فهي بطيئة للغاية لمراقبة حافلة CAN.

هناك أيضًا أجهزة متطورة مثل Kvaser أو Peak أو EMS Wünsche. هذه سوف تنجز المهمة ولكنها مبالغة ومكلفة للغاية.

تتطلب بعض الأجهزة المتطورة أيضًا شراء البرنامج معه. USB2CAN هي واجهة CAN أصلية لنظام التشغيل Linux توفر قيمة كبيرة مقابل المال.

يمكنك أيضا استخدام Cantact أو CANUSB. ومع ذلك ، فهذه ليست أجهزة CAN أصلية في Linux وتستخدم بروتوكولًا يستند إلى ASCII. هذا يعني أنها أكثر تعقيدًا قليلاً في الإعداد ولديها أداء أقل. من ناحية أخرى ، يتم دعمها بشكل جيد عبر أنظمة تشغيل متعددة.

يمكنني استخدام CANalyze الذي صممته لاحتياجاتي. يشبه USB2CAN من حيث أنه واجهة CAN أصلي ميسورة التكلفة ولكنه يستخدم وحدة تحكم صغيرة أحدث ، وهو مفتوح المصدر ويمكن بناؤه باستخدام أدوات مفتوحة المصدر. يفترض باقي هذا البرنامج التعليمي أنك تستخدم واجهة CAN أصلية.

البرمجيات

للتواصل مع الجهاز ، تحتاج إلى تثبيت حزمة can-utils على جهاز Linux الخاص بك. يمكنك القيام بذلك عن طريق كتابة ما يلي في موجه Linux:

sudo apt-get install can-utils

تعمل Can-utils على تسهيل إرسال حزم CAN واستلامها وتحليلها. هذه هي الأوامر التي سوف نستخدمها.

  • cansniffer عرض فقط الحزم التي تتغير
  • تفريغ candump جميع الحزم المستلمة
  • cansend إرسال حزمة

Linux لديه دعم CAN مدمج في النواة عبر SocketCAN. هذا يجعل من السهل كتابة البرامج الإضافية الخاصة بك. يمكنك التفاعل مع ناقل CAN بنفس الطريقة التي تتفاعل بها مع أي شبكة أخرى ، أي عبر المقابس.

يمكن حافلة

قبل البدء في الانعكاس ، يجب أن يكون لديك بعض الفهم لكيفية عمل حافلة CAN. يتكون من سلكين ويستخدم الإشارة التفاضلية. نظرًا لأنه ناقل ، يمكن توصيل أجهزة متعددة بهذين الأسلاك. عندما يتم إرسال إطار CAN على الحافلة ، يتم استلامه من قِبل جميع وحدات التحكم الإلكترونية ولكن يتم معالجته فقط إذا كان مفيدًا لوحدة التحكم الإلكترونية. إذا تم إرسال إطارات CAN متعددة في نفس الوقت ، فستفوز الإطارات ذات الأولوية العليا. يحتوي إطار CAN على 3 أجزاء ذات صلة بنا.

  • معرف التحكيم معرف الرسالة. تستخدم وحدة التحكم الإلكترونية لتقرير معالجة أو تجاهل الإطار المستلم. كما أنه يمثل أولوية الرسالة. عدد أقل لديه أولوية أعلى. على سبيل المثال ، إذا كنت مهندسًا يصمم الشبكة ، فستعطي الإطار لنشر الوسائد الهوائية أولوية عالية جدًا أو معرف تحكيم منخفض. من ناحية أخرى ، ستعطي أولوية تحكيمية أو معرّف تحكيم أعلى للبيانات المخصصة لأقفال الأبواب.
  • رمز طول البيانات (DLC) يشير إلى طول حقل البيانات بالبايت. يمكن أن يحتوي إطار CAN على 8 بايتات على الأكثر من البيانات.
  • حقل البيانات يحتوي على ما يصل إلى 8 بايت من البيانات.

عكس الحافلة CAN

تتمثل الطريقة العامة لعكس ناقل CAN في إنشاء السلوك الذي تريد تقليده والعثور على الرسالة التي تسبب هذا السلوك. على سبيل المثال ، لنفترض أن نظام مساعدة حفظ الممرات (LKAS) على سيارتك هراء وقمت بصنعه بنفسك.

من أجل أن تتحكم في التوجيه ، تحتاج إلى معرفة الرسائل المراد إرسالها. طريقة معرفة ذلك هي تشغيل LKAS الأصلي ، ومراقبة حافلة CAN والتعرف على الحزم المسؤولة عن قلب عجلة القيادة. بمجرد تحديد هذه الحزم ، يمكنك جعل LKAS الخاص بك يرسل هذه الحزم إلى حافلة CAN للتحكم في عجلة القيادة.

في حالتنا ، نحن نريد محاكاة ساخرة لمقياس سرعة الدوران ، لذلك نحتاج إلى تغيير دورة في الدقيقة من خلال الضغط على الغاز مع وضع السيارة في وضع محايد ثم محاولة العثور على الحزمة المسؤولة عن تغيير دورة في الدقيقة.

اقامة

قم بتوصيل جهاز CAN بمنفذ OBD-II في السيارة ومنفذ USB للكمبيوتر. أظهر واجهة CAN من خلال تشغيل ما يلي في موجه Linux الخاص بك:

sudo ip link set can0 up type يمكن معدل البت 500000

الذي يصل واجهة can0 (دائمًا can0 إذا كان لديك جهاز واحد متصل) بمعدل بت 500 كيلوبت في الثانية ، وهو أمر قياسي.

تحديد

عندما تكون السيارة في وضع إيقاف التشغيل ، عادة ما تكون وحدات التحكم الإلكترونية في وضع السكون ، لذا تحتاج إلى تشغيل السيارة أو وضعها في وضع الملحقات. يمكنك الاطلاع على بيانات CAN الأولية عن طريق تشغيل هذا في موجه Linux الخاص بك:

candump can0

يؤدي ذلك إلى طباعة بيانات CAN على الشاشة بمجرد استلامها. ومع ذلك ، فإن هذا غير منظم للغاية ومن الصعب للغاية معرفة الحزم التي تتوافق مع حدث معين. يمكنك الضغط على ctrl + c لإيقاف البرنامج. لجعل البيانات أكثر قابلية للقراءة ، نستخدم cansniffer الذي يجمع الحزم بمعرف التحكيم ويظهر فقط الحزم التي تتغير. لبدء تشغيله ، قم بتشغيل الأمر في موجه Linux الخاص بك:

cansniffer -c can0

حيث -c تلوين البايتات المتغيرة و can0 هي الواجهة التي تستنشقها. يستغرق بضع ثوان لإزالة الحزم الثابتة.

يجب أن ترى شيئًا مماثلاً للصورة أدناه ، على الرغم من أن الأرقام ستكون مختلفة تمامًا.

Cansniffer مع محرك الخمول.

يعرض العمود الأول (دلتا) المعدل بالثواني التي يتم عندها استلام الحزم التي تحمل معرف التحكيم. يحتوي العمود الثاني (ID) على معرف التحكيم. تحتوي الأعمدة الأبجدية الرقمية (البيانات ...) على وحدات بايت البيانات. إذا كان للبيانات تمثيل ASCII ، فيمكن رؤيتها على اليمين ، وإلا فهي نقطة.

عندما تخطو في دواسة الوقود مع تشغيل المحرك من أجل زيادة عدد الدورات في الدقيقة ، قد تظهر رسائل CAN جديدة تظهر على الشاشة و / أو تتغير الرسائل الحالية.

نحن بحاجة إلى العثور على رسالة CAN حيث ترتبط البايتات المتغيرة بالتغيير في RPM. من المحتمل أن نتوقع أن تزيد القيمة / تنقص القيمة مع زيادة / نقصان RPM.

أول إطار CAN في cansniffer يبدو أنه يختلف مع RPM هو الإطار ذو معرف التحكيم C9. من المحتمل أن تكون هناك عدة حزم محتملة تختلف باختلاف عدد الدورات في الدقيقة ، فهذه هي الحزمة الأولى فقط.

تم اكتشاف حزمة مرتبطة بـ RPM.

هناك 4 بايتات تتغير (حمراء ملونة) في هذه الرسالة ولكن لا تشير جميعها بالضرورة إلى عدد الدورات في الدقيقة. لا يبدو أن الاختلافات في البايتة الثالثة 07 ترتبط بدرجات مختلفة من الدورات في الدقيقة. البايت الأخير 1B يفعل.

ومع ذلك ، بمجرد أن نرفع قدمنا ​​عن دواسة الوقود ، يذهب إلى 00. قد يشير هذا إلى أنه يمثل موضع الخانق وليس RPM.

أخيرًا ، هناك وحدتي بايت 21 C0 التي يبدو أنها تتوافق مع تغيير في RPM. والأكثر من ذلك ، أنه يتغير باعتباره عددًا صحيحًا 16 بايت ، أي عند تجاوزات البايتة الثانية C0 ، يتم زيادة البايتة الأولى 21 بواحدة. كما يبدو أن 21 يتوافق مع حوالي 2000 دورة في الدقيقة. من الجيد ملاحظة متى ستعيد الرسالة.

إعادة

بمجرد حصولك على مرشح ، أرسله إلى حافلة CAN باستخدام الأمر التالي في موجه نظام Linux:

cansend can0 0C9 # 8021C0071B101000

حيث يكون للإطار التنسيق # {data} ويجب استبداله برسالة CAN الخاصة بك.

يمكن تشغيل سيارتك أو في وضع الملحقات لهذا الغرض. تأكد من استخدام الحزمة التي حصلت عليها عندما كان المحرك غير خامل أو لن ترى أي شيء يتغير عند إعادة تشغيله بينما يكون محركك خاملاً.

إذا قمت فقط بإرسال الحزمة مرة واحدة ، فمن المحتمل ألا ترى أي شيء يتغير على مجموعة الأدوات. وذلك لأن الرسالة الأصلية لا تزال تُرسل باستمرار على متن الحافلة بفواصل زمنية تبلغ 0.2 ثانية بواسطة وحدة التحكم الإلكترونية وبالتالي سيتم تجاهل رسالتك.

تذكر أن السعر موضح في العمود الأول من cansniffer. هناك طريقتان للالتفاف حول هذا بجانب فصل وحدة التحكم الإلكترونية التي تنشئ هذه الرسائل. يتمثل أحد الخيارات في إرسال الحزم بتردد أعلى بكثير من الحزم التي يتم إرسالها حاليًا. يمكنك القيام بذلك عن طريق تشغيل ما يلي في موجه Linux الخاص بك:

احيانا صحيح؛ do cansend can0 0C9 # 8021C0071B101000؛ النوم 0.002 ؛ فعله

واستبدال رسالة CAN بالرسالة التي حددتها. اضغط على ctrl + c للتوقف.

هناك خيار آخر هو مراقبة الحافلة ، وفي كل مرة تكتشف فيها الحزمة التي تريد محاكاة ساخرة ، أرسل الحزمة الخاصة بك فورًا بعد ذلك. يمكن القيام بذلك عن طريق تشغيل موجه Linux الخاص بك:

candump can0 | grep "0C9" | أثناء قراءة الخط ؛ do cansend can0 0C9 # 8021C0071B101000؛ فعله

حيث تحتاج إلى استبدال رسالة CAN و 0 C9 برسالة CAN التي حددتها وهي معرف التحكيم على التوالي. يمكنك تجربة كلا النهجين لمعرفة أيهما أفضل.

إذا تغير مقياس سرعة الدوران ، وظيفة جيدة ، وجدت ذلك! إذا لم يكن الأمر كذلك ، حدد الرسالة التالية التي ترتبط بـ RPM ثم أعد تشغيلها.

التضبيب

الآن وبعد أن أصبح لديك إطار CAN الذي يقوم بتعيين RPM على مجموعة الأدوات ، يمكنك اللعب بالبيانات التي ترسلها لمعرفة ما يحدث. لقد لاحظنا أن وحدتي البايتات اللتين تتوافقان مع RPM تتصرفان كعدد صحيح 16bit لذلك من أجل ضبط مقياس سرعة الدوران على 8k RPM ، فإننا نقوم بتشغيل ما يلي في موجه Linux الخاص بك:

احيانا صحيح؛ do cansend can0 0C9 # 0080000000101000؛ النوم 0.002 ؛ فعله

والنتيجة هي ...

RPM المخادعة مع إيقاف تشغيل المحرك.

هذا هو! يمكنك الآن محاولة التحكم في عداد السرعة ، الراديو ، المصابيح ، أقفال الأبواب ، وما إلى ذلك باستخدام نفس الطريقة.

القضايا المحتملة

  • في حين أن حافلة CAN هي الشبكة الأكثر شعبية ، فهي ليست الشبكة الوحيدة. إذا لم تتمكن من العثور على الرسالة التي تبحث عنها في حافلة CAN ، فجرب شبكة مختلفة. من المحتمل أن تكون الرسائل غير الهامة ، مثل الراديو والأضواء وأقفال الأبواب ، موجودة على شبكة مختلفة.
  • كما ذكرنا ، تعتمد البيانات الدقيقة المنقولة عبر CAN على طراز السيارة وطرازها والسنة. تستخدم بعض السيارات عدادًا في رسالة CAN لضمان عدم معالجة الرسالة نفسها عدة مرات. هذا أكثر صعوبة بعض الشيء ولكن يجب أن تكون قادرًا على القيام بذلك باستخدام المعلومات المقدمة. تستخدم بعض السيارات أيضًا المجموع الاختباري لضمان سلامة البيانات. حساب هذا المجموع الاختباري يمكن أن يكون صعبا. إذا كان لديك سيارة تويوتا ، فتحقق من مغامرات شبكات السيارات ووحدات التحكم ، الصفحة 10 ، Checksum-Toyota. الجميع يجب أن تقرأ حقا ورقة كاملة.
  • عند إعادة تشغيل الحزمة المحددة على الحافلة ، قد يدخل جهاز CAN إلى USB في حالة "إيقاف ناقل". هذا جزء من معيار CAN ويحدث عندما يواجه الجهاز الكثير من الأخطاء. يحدث هذا بشكل عام عندما يكون هناك الكثير من حركة المرور على الحافلة. للتغلب على ذلك ، يمكنك اللعب بتأخير وتوقيت ، ربما حاول إعادة تشغيل الرسالة فور وضع السيارة في وضع الملحقات ، حاول الانتظار قليلاً ، جربها مع السيارة ، إلخ. إذا كنت قد حددت ما هي وحدة التحكم الإلكترونية متصل بالحافلة ، يمكنك أيضًا سحب فتيلها لمنعها من إرسال الرسائل وخفض حركة المرور على الحافلة.

يجب أن يقرأ

  • دليل قراصنة السيارة
  • بحث تشارلي ميلر وكريس فالاسيك ، نعم كل ذلك
  • أبحاث جامعة سان دييغو وجامعة واشنطن.

تأكد أيضًا من مراجعة Open Garages ومقاطع الفيديو التابعة لها.