mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
53 lines
7.1 KiB
Markdown
53 lines
7.1 KiB
Markdown
# Хардварне Хакерство
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## JTAG
|
||
|
||
JTAG дозволяє виконувати сканування меж. Сканування меж аналізує певні електронні схеми, включаючи вбудовані клітини та регістри сканування для кожного контакту.
|
||
|
||
Стандарт JTAG визначає **конкретні команди для проведення сканування меж**, включаючи наступні:
|
||
|
||
- **BYPASS** дозволяє тестувати конкретний чіп без накладних витрат на проходження через інші чіпи.
|
||
- **SAMPLE/PRELOAD** бере зразок даних, що входять і виходять з пристрою, коли він працює в нормальному режимі.
|
||
- **EXTEST** встановлює та читає стани контактів.
|
||
|
||
Він також може підтримувати інші команди, такі як:
|
||
|
||
- **IDCODE** для ідентифікації пристрою
|
||
- **INTEST** для внутрішнього тестування пристрою
|
||
|
||
Ви можете натрапити на ці інструкції, коли використовуєте інструмент, такий як JTAGulator.
|
||
|
||
### Порт доступу до тестування
|
||
|
||
Сканування меж включає тести чотирьохпровідного **Порту доступу до тестування (TAP)**, загального призначення, який забезпечує **доступ до функцій підтримки тестування JTAG**, вбудованих у компонент. TAP використовує наступні п'ять сигналів:
|
||
|
||
- Вхід тактового сигналу тестування (**TCK**) TCK є **тактовим сигналом**, який визначає, як часто контролер TAP буде виконувати одну дію (іншими словами, переходити до наступного стану в автоматі станів).
|
||
- Вхід вибору режиму тестування (**TMS**) TMS контролює **кінцевий автомат станів**. На кожному тактовому імпульсі контролер JTAG TAP пристрою перевіряє напругу на контакті TMS. Якщо напруга нижча за певний поріг, сигнал вважається низьким і інтерпретується як 0, тоді як якщо напруга вища за певний поріг, сигнал вважається високим і інтерпретується як 1.
|
||
- Вхід даних тестування (**TDI**) TDI є контактом, який надсилає **дані в чіп через клітини сканування**. Кожен виробник відповідає за визначення протоколу зв'язку через цей контакт, оскільки JTAG цього не визначає.
|
||
- Вихід даних тестування (**TDO**) TDO є контактом, який надсилає **дані з чіпа**.
|
||
- Вхід скидання тестування (**TRST**) Додатковий TRST скидає кінцевий автомат станів **в відомий хороший стан**. Альтернативно, якщо TMS утримується на 1 протягом п'яти послідовних тактових циклів, це викликає скидання, так само, як і контакт TRST, тому TRST є необов'язковим.
|
||
|
||
Іноді ви зможете знайти ці контакти, позначені на PCB. В інших випадках вам може знадобитися **знайти їх**.
|
||
|
||
### Ідентифікація контактів JTAG
|
||
|
||
Найшвидший, але найдорожчий спосіб виявлення портів JTAG - це використання **JTAGulator**, пристрою, створеного спеціально для цієї мети (хоча він **також може виявляти UART виводи**).
|
||
|
||
Він має **24 канали**, які ви можете підключити до контактів плат. Потім він виконує **BF-атаку** всіх можливих комбінацій, надсилаючи команди сканування меж **IDCODE** та **BYPASS**. Якщо він отримує відповідь, він відображає канал, що відповідає кожному сигналу JTAG.
|
||
|
||
Дешевший, але набагато повільніший спосіб ідентифікації виводів JTAG - це використання [**JTAGenum**](https://github.com/cyphunk/JTAGenum/), завантаженого на мікроконтролер, сумісний з Arduino.
|
||
|
||
Використовуючи **JTAGenum**, спочатку вам потрібно **визначити контакти пристрою для проби**, які ви будете використовувати для перерахунку. Вам потрібно буде посилатися на діаграму виводів пристрою, а потім підключити ці контакти до тестових точок на вашому цільовому пристрої.
|
||
|
||
**Третій спосіб** ідентифікації контактів JTAG - це **огляд PCB** на наявність одного з виводів. У деяких випадках PCB можуть зручно надавати **інтерфейс Tag-Connect**, що є чітким показником того, що плата також має роз'єм JTAG. Ви можете побачити, як виглядає цей інтерфейс на [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Крім того, огляд **технічних характеристик чіпсетів на PCB** може виявити діаграми виводів, які вказують на інтерфейси JTAG.
|
||
|
||
## SDW
|
||
|
||
SWD - це специфічний для ARM протокол, призначений для налагодження.
|
||
|
||
Інтерфейс SWD вимагає **два контакти**: двонаправлений **SWDIO** сигнал, який є еквівалентом контактів JTAG **TDI та TDO**, та тактовий сигнал **SWCLK**, який є еквівалентом **TCK** в JTAG. Багато пристроїв підтримують **Порт налагодження серійного проводу або JTAG (SWJ-DP)**, комбінований інтерфейс JTAG та SWD, який дозволяє підключати або SWD, або JTAG зонд до цілі.
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|