Geräte in Ketten aufreihen
Um die Anschlüsse zu lokalisieren, ist es zunächst nötig, die Funktionsweise von JTAG detaillierter zu verstehen. In aktuellen Geräten finden sich häufig mehrere Chips mit JTAG-Schnittstellen. Dabei genügt ein Anschluss auf der Platine, um alle Interfaces zu bedienen. JTAG fasst die einzelnen Chips zu einer so genannten Scan Chain zusammen. Die Kette entsteht, indem Hersteller den TDO-Ausgang eines Chips mit dem TDI-Eingang des nächsten Chips verbinden. Diese Kaskade lässt sich, wie in Abbildung 1 dargestellt, prinzipiell beliebig um weitere Chips erweitern.
Abbildung 1: Einzelne JTAG-Bausteine lassen sich zu einer Kette zusammenschalten. Dazu verbinden Entwickler jeweils den TDO-Ausgang mit dem TDI-Eingang des nächsten Geräts.
In jedem Chip liegt zwischen TDI und TDO ein Schieberegister, in das Anwender die Daten über TDI mit TCK getaktet hineinschieben. Am gegenüberliegenden Ende des Schieberegisters lässt die Kette die Daten über TDO aus dem Register wieder hinaus. Durch das Verbinden von TDO eines Chips mit TDI des nächsten Chips entsteht daher insgesamt wieder ein längeres Schieberegister, das sich aus den Registern der einzelnen Chips zusammensetzt. Jeder Baustein beinhaltet mehrere dieser Schieberegister. Auf welches davon der Zugriff via TDI und TDO erfolgen soll, kontrolliert der Zustandsautomat aus Abbildung 2.
Die Navigation zwischen den Zuständen erfolgt über TMS. Der für den jeweiligen Zustandsübergang nötige Wert für TMS lässt sich an den entsprechenden Kanten der Abbildung 2 ablesen. Mittels TRST kann der Entwickler den Zustandsautomaten jederzeit in den Zustand »Test-Logic-Reset« versetzen.
Abbildung 2: Ein Zustandsautomat kontrolliert, auf welches Schieberegister Anwender über die Ketten von TDI- und TDO-Anschlüssen Zugriff erhalten.
Bei näherer Betrachtung des Zustandsautomaten stellt sich außerdem heraus, dass sich dieser Zustand ebenfalls aus jedem anderen Zustand erreichen lässt, wenn der Eingang TMS fünf TCK-Takte lang auf »1« liegt. Daher ist der TRST-Pin funktional optional.
Im Zustandsautomaten ähneln sich zwei längere Zustandsfolgen. Sie dienen dem Zugriff auf Instruktionsregister (IR) und Datenregister (DR), beides Schieberegister. Im »Capture«-Zustand lädt der Chip das Schieberegister zunächst mit dem Wert, den der Anwender anschließend in »Shift« ausliest. Für jedes via TDO gelesene Bit schiebt er ein neues Bit in das Schieberegister nach, sodass ein reiner Lesezugriff nicht ohne Weiteres möglich ist. Der Chip übernimmt im »Update«-Zustand den ins Register geschobenen Wert und wertet ihn aus.
Rundreise für Bits
Wer ein Bit über TDI in das Instruktions- oder Datenregister schiebt, erhält es an TDO wieder, nachdem es alle verketteten Schieberegister durchlaufen hat. Die dafür nötige Anzahl an TCK-Takten ist um einen größer als die Länge der verketteten Register. Diese Eigenschaft lässt sich ausnutzen, um die richtige Kontaktbelegung effizient zu ermitteln.
Jede mögliche Kombination aus TCK, TMS und TDI prüfen Interessierte mit folgendem Verfahren: Sie halten zunächst TMS für fünf Takte auf »1«, um in den Test-Logic-Reset-Zustand zu gelangen. Ausgehend davon wechseln sie wieder mittels TMS in den Zustand Shift-IR. Wählen die Hardwaredetektive für TCK und TMS die richtigen Pins, liegt zwischen TDI und TDO jetzt das Instruktions-Schieberegister.
Geräteforscher versuchen nun über einen TDI-Kandidaten Daten zu shiften, die aus mehreren Nullen und Einsen bestehen. Anschließend beobachten sie, ob die Folge nach einigen Takten an einem anderen Pin des Geräts erscheint. Der ist dann TDO - und die korrekte JTAG-Belegung mit hoher Wahrscheinlichkeit ermittelt.
Der JTAG-Finder implementiert das beschriebene Verfahren und ist in der Lage, innerhalb einiger Minuten aus bis zu 30 Pins die richtigen JTAG-Pins zu ermitteln [2]. Zur Kontaktierung der zu testenden Pins nutzen viele den beliebten und universell einsetzbaren ATMega32-AVR-Mikrocontroller, der via RS232 mit einem PC kommuniziert [3]. Auf dem läuft der JTAG-Finder mit seiner grafischen Oberfläche (Abbildung 3). Die unter der GPL stehende Software haben ihre Programmierer als Proof of Concept entwickelt [4]. Sie richtet sich vorwiegend an Anwender mit Elektronik- und Mikrocontroller-Kenntnissen.
Abbildung 3: Der JTAG-Finder hat eine grafische Oberfläche, mit der Anwender prüfen, ob eine in den Pin TDI geschobene Bitfolge an Pin TDO wieder auftaucht.
Das Quellarchiv benötigt das Paket »libglade2-dev« für die GTK-Oberfläche, anschließend baut »make« das Programm. Vor seinem Start erwartet »jtagscan« den Pfad zum seriellen Port, an dem der Mikrocontroller hängt, in der Umgebungsvariablen »JTAGSCAN_DEVICE«. Die Zuordnung von Controllerausgängen zu logischen Pins legt »relocations.avr« Zeile für Zeile fest. Ist alles verdrahtet, probiert ein Klick auf »Scan« die möglichen Permutationen durch und protokolliert die Aktivitäten in einem Fenster.
Meist sehen Hersteller ein- oder zweireihige Stiftleisten mit fünf bis 20 Pins für JTAG-Schnittstellen vor. Allerdings bestücken sie diese aus Kostengründen in der Serienproduktion auf den Platinen oft nicht, sodass handwerklich begabte Bastler selbst eine passende Stiftleiste einlöten (siehe Abbildung 4).
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 4 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





