車のOBDコネクタを介してできること

現代の車では、すべてのシステムがさまざまな電子機器で詰まっていることは周知の事実です。単純なウィンドウレギュレータでさえ、独自のマイクロコントローラと共有ネットワーク上のアドレスを持っています。 興味のある所有者として、OBDコネクタにアクセスするだけで何ができるのかと思っていました。



この記事に記載されているものはすべて2008年の車(三菱ランサー)を指しますが、実践が示すように、10年後もメーカーは何も変更せず、すべての機能が引き続き使用され、現代の車で機能します。



車内のネットワーク構造を図に示します。



画像



車には3つのCANバス(高速モーターバス500 kbps、低速キャビン83.3 kbps、診断)と1つのLINバスがあります。 それらの間の接続リンクはETACS(Electronic Total Automobile Control System)ブロックであり、これは「ゲートウェイ」として機能し、特定のルールに従って1つのバスから別のバスにメッセージを送信し、それらの一部も処理します。 CANバスで何ができますか? たとえば、ブロックとチャットしたり、何かを変更したりできます。 ブロックとの対話を開始するには、そのアドレスと、サポートされている機能(PID)を知っておく必要があります。サポートされている機能は、処理して回答を提供できます。



パブリックドメインには、MUT IIIと呼ばれるディーラー向けのソフトウェアがあります。 それからデータベースを調べたら、興味のあるすべての情報を見つけることができます。



CANネットワークのアドレス(リクエスト/レスポンス)について:



画像



リクエストのPID、すべてのブロックからのレスポンスの完全な復号化、レスポンス内のバイトの位置(1つのフレームで複数の値が送信される場合)および単位の要因を含む:



画像



たとえば、ステアリング角度を知りたい。 これを行うには、コマンド2102をESPコントロールユニットに送信します。応答として、メッセージ6102 FFEA000008FFF302が到着します



表を見ると、バイト2と3が必要であることがわかります。



画像



int16の値。 0xFFEA = -22、0.04375の係数を掛けると、ステアリング角度は-0.9625度になります。



したがって、コントロールユニットから、ラジオの再生時間とラジオにロードされたディスクの数まで、多くの情報を要求したり、すべてのノードで診断チェックを実行したりできます(たとえば、ダッシュボードの異なるライトをオンにして矢印を引くことができます)。



画像





まあ、私たちが欲しかったのは学んだことだけでしたが、それは何が良いのでしょうか? さて、何かを変更/有効化/無効化すると...



簡単な例。 自動変速機制御ユニットには、オイルエージングレベルのソフトウェアカウンターがあり、特定のしきい値が蓄積されると、bk画面にトランスミッションの修理が必要であることを示すメッセージが表示されます。 オイルは変更され、メッセージは引き続き画面に表示されます。これは、誰もカウンターをリセットしておらず、MUT-IIIディーラースキャナーのみをリセットできるためです(約1000ドルの費用がかかりますが、誰もが購入できるわけではありません)。 すべて同じ表で、CLEAR_CVT_oil_degradation_level_Startというわかりやすい名前でチームを見つけることができます。 ODに向かって悪意を持って笑い、この不運なカウンターを自分でリセットできます。 コマンド31 03をCVTブロックに送信すると... 7F 31 33が返されます。



小さな余談。 ほとんどすべての車両は、診断とメンテナンスにUDSメカニズム(別名ISO 14229)を使用します。



自動車診断スキャナーの開発者の生活を簡素化し、すべての自動車メーカー向けに統一されています(ただし、一部のメーカーが独自のアドオンを開発できないという意味ではありません)。



その結果、バリエーターからの復号化された応答があります。7F-要求は拒否され、31は送信したPID、 負の応答コード 33、つまりセキュリティアクセス拒否です。 つまり、この機能を変更または要求する権利はありません。 彼女は誰ですか?



余談2. UDSは、通常の診断セッション、拡張セッション、プログラミングセッションなど、いくつかのレベルへのアクセスを制限するメカニズムを使用します。 各セッションには、できることとできないことを決定するアクセスレベルがあります。 それらにアクセスするには、ブロックからいわゆるシードを要求し、特定のアルゴリズムでそれを処理し、(Key)ブロックに送り返す必要があります。 詳細はこちら



シードをリクエストしてみましょう。 コマンド2701をECUに送信し、応答6701 6A43FD3Cを取得します。

応答で4バイト値( 27 02 DEADBEEF)を送信すると、7F 27 35が返されます。35は無効なキー(無効なキー)です。 「天井から」という値が送信されました。 主要な計算アルゴリズムを探すには? コントロールユニットのファームウェアには他に何もありません。 取得するのは簡単です(ただし、すべてのブロックではなく、使用するマイクロコントローラーによって異なります)。最初にCAN受信ハンドラーを見つけ、次に処理関数PID 0x27を見つけます。



画像



ファームウェアからのアルゴリズムとシードキーの交換を繰り返すと、応答6702 34が返されます。34は「アクセスが許可されています」です。 その後、オイル劣化レベルをリセットするコマンドは正常に実行され、否定応答コードではなく、7103 01の肯定応答とカウンターが正常にリセットされます。



したがって、OBDコネクタを介して、車でほとんど何でも行うことができます:ブロック内のVIN番号を変更し、エンコード(構成)を構成し、1秒以内にイモビライザーをオフにし、エラーに関する情報をクリアし、任意のものをロードできるときにブロックをブート状態にしますコードを作成して実行します。 日本のセキュリティシステムはやや不十分です。



ビデオの構成変更の例:





この記事は情報提供のみを目的として書かれています。 車の電子制御ユニットへの介入は、彼らにとって最後かもしれません。 みなさん、良い一日を!



All Articles