Hardware Hacking

Підтримати HackTricks

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, завантаженого на мікроконтролер, сумісний з Arduino.

Використовуючи JTAGenum, спочатку вам потрібно визначити контакти пристрою для проби, які ви будете використовувати для перерахунку. Вам потрібно буде звернутися до діаграми контактів пристрою, а потім підключити ці контакти до тестових точок на вашому цільовому пристрої.

Третій спосіб ідентифікації контактів JTAG - це огляд PCB на наявність одного з виходів. У деяких випадках PCB можуть зручно надавати інтерфейс Tag-Connect, що є чітким показником того, що плата також має роз'єм JTAG. Ви можете побачити, як виглядає цей інтерфейс на 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 зонд до цілі.

Підтримати HackTricks

Last updated