Hardware Hacking

HackTricksをサポートする

JTAG

JTAGは境界スキャンを実行することを可能にします。境界スキャンは、埋め込まれた境界スキャンセルや各ピンのレジスタを含む特定の回路を分析します。

JTAG標準は、以下を含む境界スキャンを実施するための特定のコマンドを定義しています:

  • BYPASSは、他のチップを通過するオーバーヘッドなしで特定のチップをテストすることを可能にします。

  • SAMPLE/PRELOADは、デバイスが通常の動作モードにあるときに出入りするデータのサンプルを取得します。

  • EXTESTは、ピンの状態を設定および読み取ります。

他にも以下のようなコマンドをサポートしています:

  • IDCODEはデバイスを識別するためのもの

  • INTESTはデバイスの内部テスト用

JTAGulatorのようなツールを使用すると、これらの命令に出くわすことがあります。

テストアクセスポート

境界スキャンには、一般的なポートであるテストアクセスポート(TAP)の4線テストが含まれ、コンポーネントに組み込まれたJTAGテストサポート機能へのアクセスを提供します。TAPは以下の5つの信号を使用します:

  • テストクロック入力(TCK)TCKは、TAPコントローラーが単一のアクションを実行する頻度を定義するクロックです(言い換えれば、状態マシンの次の状態にジャンプします)。

  • テストモード選択(TMS)入力TMSは有限状態機械を制御します。クロックの各ビートで、デバイスのJTAG TAPコントローラーはTMSピンの電圧をチェックします。電圧が特定の閾値を下回ると、信号は低と見なされ0として解釈され、電圧が特定の閾値を上回ると、信号は高と見なされ1として解釈されます。

  • テストデータ入力(TDI)TDIは、スキャンセルを通じてチップにデータを送信するピンです。JTAGはこのピンを介した通信プロトコルを定義していないため、各ベンダーがこのピンの通信プロトコルを定義する責任があります。

  • テストデータ出力(TDO)TDOは、チップからデータを送信するピンです。

  • テストリセット(TRST)入力オプションのTRSTは、有限状態機械を既知の良好な状態にリセットします。あるいは、TMSが5回連続して1に保持されると、TRSTピンと同様にリセットが呼び出されるため、TRSTはオプションです。

時には、PCBにマークされたこれらのピンを見つけることができるでしょう。他の場合には、それらを見つける必要があるかもしれません

JTAGピンの特定

JTAGポートを検出する最も速いが最も高価な方法は、JTAGulatorを使用することです。このデバイスはこの目的のために特別に作成されました(ただし、UARTピンアウトも検出できます)。

それは24チャンネルを持ち、ボードのピンに接続できます。その後、すべての可能な組み合わせのBF攻撃を実行し、IDCODEおよびBYPASS境界スキャンコマンドを送信します。応答を受け取ると、各JTAG信号に対応するチャンネルを表示します。

JTAGピンアウトを特定するためのより安価だがはるかに遅い方法は、Arduino互換のマイクロコントローラーにロードされたJTAGenumを使用することです。

JTAGenumを使用する場合、最初に列挙に使用するプロービングデバイスのピンを定義する必要があります。デバイスのピンアウト図を参照し、これらのピンをターゲットデバイスのテストポイントに接続する必要があります。

JTAGピンを特定する第三の方法は、PCBを検査してピンアウトの1つを探すことです。場合によっては、PCBが便利にTag-Connectインターフェースを提供していることがあり、これはボードにJTAGコネクタがある明確な兆候です。そのインターフェースがどのように見えるかはhttps://www.tag-connect.com/info/で確認できます。さらに、PCB上のチップセットのデータシートを検査することで、JTAGインターフェースを指し示すピンアウト図が明らかになるかもしれません。

SDW

SWDはデバッグ用に設計されたARM特有のプロトコルです。

SWDインターフェースは2つのピンを必要とします:双方向のSWDIO信号、これはJTAGのTDIおよびTDOピンに相当し、クロックであるSWCLK、これはJTAGのTCKに相当します。多くのデバイスは、ターゲットにSWDまたはJTAGプローブを接続できる**シリアルワイヤまたはJTAGデバッグポート(SWJ-DP)**をサポートしています。

HackTricksをサポートする

Last updated