mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
53 lines
4.3 KiB
Markdown
53 lines
4.3 KiB
Markdown
# Hardware Hacking
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## JTAG
|
|
|
|
JTAG consente di eseguire una scansione dei confini. La scansione dei confini analizza alcuni circuiti, inclusi i circuiti integrati di scansione e i registri incorporati per ogni pin.
|
|
|
|
Lo standard JTAG definisce **comandi specifici per condurre scansioni dei confini**, inclusi i seguenti:
|
|
|
|
- **BYPASS** consente di testare un chip specifico senza il sovraccarico di passare attraverso altri chip.
|
|
- **SAMPLE/PRELOAD** prende un campione dei dati che entrano ed escono dal dispositivo quando è nella sua modalità di funzionamento normale.
|
|
- **EXTEST** imposta e legge gli stati dei pin.
|
|
|
|
Può anche supportare altri comandi come:
|
|
|
|
- **IDCODE** per identificare un dispositivo
|
|
- **INTEST** per il test interno del dispositivo
|
|
|
|
Potresti imbatterti in queste istruzioni quando utilizzi uno strumento come il JTAGulator.
|
|
|
|
### The Test Access Port
|
|
|
|
Le scansioni dei confini includono test del **Test Access Port (TAP)** a quattro fili, una porta di uso generale che fornisce **accesso alle funzioni di supporto ai test JTAG** integrate in un componente. TAP utilizza i seguenti cinque segnali:
|
|
|
|
- Test clock input (**TCK**) Il TCK è il **clock** che definisce quanto spesso il controller TAP eseguirà un'azione singola (in altre parole, salterà al prossimo stato nella macchina a stati).
|
|
- Test mode select (**TMS**) input TMS controlla la **macchina a stati finiti**. Ad ogni battito del clock, il controller TAP JTAG del dispositivo controlla la tensione sul pin TMS. Se la tensione è al di sotto di una certa soglia, il segnale è considerato basso e interpretato come 0, mentre se la tensione è al di sopra di una certa soglia, il segnale è considerato alto e interpretato come 1.
|
|
- Test data input (**TDI**) TDI è il pin che invia **dati nel chip attraverso le celle di scansione**. Ogni fornitore è responsabile della definizione del protocollo di comunicazione su questo pin, poiché JTAG non lo definisce.
|
|
- Test data output (**TDO**) TDO è il pin che invia **dati fuori dal chip**.
|
|
- Test reset (**TRST**) input Il TRST opzionale ripristina la macchina a stati finiti **a uno stato noto buono**. In alternativa, se il TMS è mantenuto a 1 per cinque cicli di clock consecutivi, invoca un ripristino, nello stesso modo in cui farebbe il pin TRST, motivo per cui TRST è opzionale.
|
|
|
|
A volte sarai in grado di trovare quei pin contrassegnati nel PCB. In altre occasioni potresti dover **trovarli**.
|
|
|
|
### Identifying JTAG pins
|
|
|
|
Il modo più veloce ma più costoso per rilevare le porte JTAG è utilizzare il **JTAGulator**, un dispositivo creato specificamente per questo scopo (anche se può **rilevare anche i pin UART**).
|
|
|
|
Ha **24 canali** che puoi collegare ai pin delle schede. Poi esegue un **attacco BF** di tutte le possibili combinazioni inviando comandi di scansione dei confini **IDCODE** e **BYPASS**. Se riceve una risposta, visualizza il canale corrispondente a ciascun segnale JTAG.
|
|
|
|
Un modo più economico ma molto più lento per identificare i pin JTAG è utilizzare il [**JTAGenum**](https://github.com/cyphunk/JTAGenum/) caricato su un microcontrollore compatibile con Arduino.
|
|
|
|
Utilizzando **JTAGenum**, dovresti prima **definire i pin del dispositivo di sondaggio** che utilizzerai per l'enumerazione. Dovresti fare riferimento al diagramma dei pin del dispositivo e poi collegare questi pin ai punti di test sul tuo dispositivo target.
|
|
|
|
Un **terzo modo** per identificare i pin JTAG è **ispezionare il PCB** per uno dei pinout. In alcuni casi, i PCB potrebbero fornire convenientemente l'**interfaccia Tag-Connect**, che è un chiaro indicatore che la scheda ha anche un connettore JTAG. Puoi vedere come appare quell'interfaccia su [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Inoltre, ispezionare i **datasheet dei chip sul PCB** potrebbe rivelare diagrammi dei pin che indicano interfacce JTAG.
|
|
|
|
## SDW
|
|
|
|
SWD è un protocollo specifico per ARM progettato per il debug.
|
|
|
|
L'interfaccia SWD richiede **due pin**: un segnale bidirezionale **SWDIO**, che è l'equivalente dei pin **TDI e TDO di JTAG** e un clock, e **SWCLK**, che è l'equivalente di **TCK** in JTAG. Molti dispositivi supportano il **Serial Wire o JTAG Debug Port (SWJ-DP)**, un'interfaccia combinata JTAG e SWD che ti consente di collegare un sondino SWD o JTAG al target.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|