🧪JTAG

Joint Test Action Group

Description

Le JTAG est le nom de la norme IEEE 1149.1 intitulée « Standard Test Access Port and Boundary-Scan Architecture », qui été normalisée en 1990. Le terme JTAG, désignant le groupe de travail qui a conçu la norme, est abusivement utilisé au lieu du terme générique Boundary Scan, ou du sigle TAP.

Instructions Boundary Scan

La norme IEEE 1149.1 définis des instructions spécifiques pour les boundary scan incluants notamment les instructions:

  • BYPASS: Permet aux données BST de passer de manière synchrone à travers les appareils cibles vers les appareils adjacents pendant le fonctionnement normal de l'appareil.

  • SAMPLE/PRELOAD:

    • Permet à un modèle de données initial d'être une sortie au niveau des broches de l'appareil.

    • Vous permet de capturer et d'examiner un snapshot des signaux au niveau des broches de l'appareil si l'appareil fonctionne en mode normal.

  • EXTEST:

    • Force le motif de test sur les broches de sortie et capture les résultats du test sur les broches d'entrée.

    • Vous permet de tester les circuits externes et les interconnexions au niveau de la carte.

  • INTEST (Optionnel):

    • Contrairement à l'instruction EXTEST, INTEST force le motif de test sur les broches d'entrées et capture les résultats du test sur les broches de sorties.

  • IDCODE (Optionnel): Permet d'identifier un système.

Les TAP (Test Access Ports)

TAP peut utiliser cinq signaux dont un optionnel:

  • TCK (Test Clock Input)

  • TMS (Test Mode Select)

  • TDI (Test Data Input)

  • TDO (Test Data Output)

  • TRST (Test Reset Input, Optionnel)

Identifier les pins JTAG

Via le JTAGulator

Le JTAGulator est un système créé spécifiquement pour identifier les pins JTAG. l'outil permet de bruteforcer les pins à l'aide des instructions IDCODE et BYPASS vues précédemment puis attend les réponses de ces pins pour les afficher dans l'ordre des pins du système cible.

Via l'utilitaire JTAGenum

JTAGenum est un scanner open source (expérimental) Arduino (JTAGenum.ino)ou RaspbberyPi (JTAGenum.sh). Ce code a été construit avec trois objectifs principaux :

  1. Déterminez quelles sont les lignes JTAG.

  2. Énumérer le registre d'instructions pour trouver des fonctionnalités non documentées.

  3. être facile à construire et à appliquer.

ressource: https://github.com/cyphunk/JTAGenum/

Dernière mise à jour