Стаття присвячена темі Hardware Hacking (злому апаратного забезпечення). Ця стаття є навчальним ресурсом для тих, хто цікавиться апаратним зломом, надаючи докладну інформацію про ключові технології та методики, що використовуються в цій галузі.
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 є необов’язковим.
Іноді ви зможете знайти ці контакти, позначені на друкованій платі. В інших випадках вам може знадобитися їх знайти.
Найшвидший, але найдорожчий спосіб виявлення портів JTAG — це використання JTAGulator , пристрою, створеного спеціально для цієї мети (хоча він також може виявляти розпіновку UART ).
Він має 24 канали, які можна підключити до контактів плати. Потім він виконує BF-атаку з усіх можливих комбінацій, надсилаючи команди IDCODE та BYPASS boundary scan. Якщо він отримує відповідь, він відображає канал, що відповідає кожному сигналу JTAG
Дешевший, але набагато повільніший спосіб ідентифікації контактів JTAG — використання JTAGenum, завантаженого на Arduino-сумісний мікроконтролер.
Використовуючи JTAGenum , ви спочатку визначите контакти вимірювального пристрою, який використовуватимете для перерахування. Вам потрібно буде звернутися до діаграми контактів пристрою, а потім з’єднати ці контакти з тестовими точками на цільовому пристрої.
Третій спосіб ідентифікації контактів JTAG – перевірити друковану плату на наявність одного з контактів. У деяких випадках друковані плати можуть зручно надавати інтерфейс Tag-Connect , що є чітким свідченням того, що плата також має роз’єм JTAG. Ви можете побачити, як виглядає цей інтерфейс, на сторінці https://www.tag-connect.com/info/. Крім того, перевірка таблиць даних чіпсетів на друкованій платі може виявити діаграми контактів, які вказують на інтерфейси JTAG.
SWD — це специфічний протокол ARM, розроблений для налагодження.
Для інтерфейсу SWD потрібні два висновки : двонаправлений сигнал SWDIO , який є еквівалентом контактів TDI і TDO JTAG і годинника , і SWCLK , який є еквівалентом TCK у JTAG. Багато пристроїв підтримують порт налагодження Serial Wire або JTAG (SWJ-DP) , комбінований інтерфейс JTAG і SWD, який дозволяє підключати зонд SWD або JTAG до цілі.