Drücke "Enter", um den Text zu überspringen.

Lenovo ThinkPad (T400) Supervisor Passwort

Spaßeshalber habe ich einen T400 über eBay erworben, der als defekt beschrieben war, da das Supervisor Passwort dem Besitzer nicht mehr bekannt war.
Dennoch möchte ich noch einmal ausschließlich darauf hinweisen:
Die hier angewandte Prozedur, sowie das erlernbare Wissen dient nur für die Verwendung am Eigentum. Die Manipulation von Geräten die nicht Ihr Eigentum sind, ist Strafbar.


Die Bootkonfiguration erlaubte lediglich das starten über Festplatte oder Netzwerk, also habe ich zu erst versucht einfach über HirensbootCD und der Option zum entfernen des Bios Passworts zu regeln. Ich weiß nicht ob ich das Programm einfach falsch verwendet habe, aber auf jedenfall hatte ich hierbei absolut kein brauchbares Ergebnis erzielt.

Aus Enttäuschung heraus wollte ich das ThinkPad einfach mal ärgern und habe dem BIOS seine Stromquelle entfernt; unwissentlich der Folgen. Danach musste ich aber lernen das ein ThinkPad ohne eine definierte Zeit garnicht erst hochfährt und mir somit von nun auschließlich die Abfrage für das Supervisor Passwort an den Kopf wirft. Hat vermutlich irgendwas mit Karma oder so zu tun.

Nach ein wenig Sucherei habe ich 2 Seiten gefunden die Geräte anbieten mit denen man den Chip lesen und schreiben kann, welcher allerdings mit um die >100€ ein bisschen hoch angesiedelt war und dieser nur lesen kann wenn die Passphrase nicht aktiv ist, welches hier aber der Fall war. (Das heißt soviel man müsste noch 20€ mehr bezahlen damit das Feature aktiv ist um das Passwort zu entfernen)

Also habe ich mir gedacht, wenn die das können, muss ich das doch auch irgendwie bewerkstelligen können. Durch etwas Sucherei findet man auch heraus welcher EEPROM dafür zuständig ist, von daher gilt es nurnoch den oder ein Equivalent zu finden. (Bei der Suche danach bin ich außerdem auf den Blog von Oliver Calek aus Potsdam gestoßen, welcher übrigens sehr zu empfehlen ist)

  • Ab hier geht der Spaß erst los

Bei der Suche nach dem entsprechenden Speichercontroller (in meinem Fall P24S08) und entsprechenden Datenblättern von Chip[0], Thinkpad und dem Pinout[1] inkl Beispielsketches[2] hat mir der eigentliche Leiter dieser Blogosphere geholfen: Hangman
Von einem älteren Projekt habe ich noch einen Teensy 2.0 umherfliegen, also habe ich mich dafür entschieden auf diesem System aufzubauen.

Beginnen wir also damit das ThinkPad nach und nach in seine Bestandteile[3] zu zerlegen, denn der Chip befindet sich in unserem Fall auf der Unterseite der Platine.

Bevor es weitergeht müssen wir dafür sorgen das der Display funktionsfähig und der Laptop selbst Strom beziehen kann ohne das wir einen Kurzschluss verursachen, denn der Chip kriegt seinen Strom über die Stromversorgung des Laptops, keinesfalls über unsere Externe Quelle, wir brücken lediglich GND, nicht aber VCC.
Mein benutzbares Setup sah schlussendlich so aus, den Laptop habe ich eingeschalten, zugescklappt und dann herumgedreht, damit ich im Laufenden Betrieb an die Pins komme. (Verpackungsmüll und Katzenleckerlies inklusive)
IMG_20150314_221653
Wir müssen SCL und SDA von Teensy und dem EEPROM brücken, damit wir mit dem BUS kommunizieren können, GND vom Teensy sollte an einer der vielzähligen möglichkeiten am ThinkPad angeschlagen werden. (Ich habe die untere Schraube verwendet, die im mittleren Bild zu sehen ist)

Wenn wir das getan haben lassen wir auf dem Teensy das i2c_scanner Sketch zum auslesen der Adressen im I2C-Bus laufen. Natürlich mit aktivem Serial Monitor, damit wir auch sehen was uns wieder gegeben wird. Mein ergebnis daraus lautet wie folgt:

Scanning...
I2C device found at address 0x08 !
I2C device found at address 0x0C !
I2C device found at address 0x44 !
I2C device found at address 0x54 !
I2C device found at address 0x55 !
I2C device found at address 0x56 !
I2C device found at address 0x57 !
I2C device found at address 0x5C !
I2C device found at address 0x61 !
I2C device found at address 0x64 !
done

In der 24C08 Wiring Sketch[2] lässt sich herauslesen, dass der Chip 4 aufeinander folgende Adressen verwendet. Mit diesem wissen bleibt uns in diesem Fall nur eine Gruppe übrig.

I2C device found at address 0x54 !
I2C device found at address 0x55 !
I2C device found at address 0x56 !
I2C device found at address 0x57 !

Nun verwenden wir eine abgewandelte Form des 24C08 Sketches[4] zum Auslesen der Adressen des Chips, unser Ergebnis in meinem Fall lautet:

Setup finished

Reading data...
Chip: 54
53 45 52 23 14 0C 01 D2 1D 00 00 00 00 00 00 00 40 36 33 59 31 31 35 34 5A 56 51 31 30 59 30 32 56 35 58 41 20 B1 53 36 34 37 35 41 31 35 52 38 33 35 31 59 45 00 00 00 38 34 32 54 34 34 32 34 5A 31 5A 46 33 45 30 31 50 34 44 53 08 34 35 4A 38 32 30 39 5A 56 4A 34 35 33 30 33 35 30 52 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Chip: 55
55 53 52 23 10 00 01 D2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Chip: 56
43 4F 4E 23 73 00 02 88 41 00 00 00 00 00 00 00 90 12 76 8D C2 81 50 87 11 CB A1 90 9E 48 5E D8 2C FD AA 03 00 AB 0F 54 68 69 6E 6B 50 61 64 20 54 34 30 30 F0 0B 05 03 10 20 00 00 00 00 00 08 05 02 D4 08 88 06 00 08 00 00 30 03 00 78 1A FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 A8 04 9A 1F 91 08 00 22 68 1D E2 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Chip: 57
B3 26 00 00 00 00 00 00 00 00 00 88 00 60 00 00 00 00 00 00 00 00 00 00 74 01 FF 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 EC 06 45 A2 6F AD D0 31 EC 06 45 A2 6F AD D0 88 C6 FA 03 83 C2 FA 02 00 00 00 00 00 0A A2 76 00 00 00 00 00 00 00 00 00 00 1E 00 00 00 00 00 00 00 00 00 00 00 0C 12 40 20 10 C5 31 FC 40 20 FC FF FF FF 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 6C 20 00 B7 F5 B5 BE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Das mag jetzt auf den ersten Blick etwas Kryptisch wirken, aber betrachtet in einem HEX Editor kommen wir der Sache schon ein wenig näher.

Von links nach rechts: 0x54, 0x55, 0x56

Und schlussendlich unser Ziel, denn wer die Bilder angesehen hat, wird merken das wir bisher nur irgendwelche Seriennummern und Geräteidentifikationen haben. Das einzigste was von hier an komplett kryptisch aussieht, ist der Inhalt von 0x57:

0x57

In den Hilfeforen zu diesen kostenintensiven alternativen welche unter anderem auf einem Speeduino basieren, wo Leute ihren dump als bild eingeschickt haben und dann per direkt E-Mail einen dump zum überschreiben zurück erhielten sollten, für keine Ahnung was für einen weiteren Aufpreis, ist mir aufgefallen das immer eine der Bereich um die 88 c6 fa 03 83 c2 fa 02 (hier die 2. hälfte von Zeile 0x040) relevanz erhielt, nur diese Zeichenkette war identisch und das meiste andere in diesem dump zu kurz um ein chiffriertes Passwort zu sein. Also habe ich einfach mal die vorangehende, sich wiederholende Zeichenkette durch Nullen ersetzt um zu sehen was er wohl davon hält. Unser neuer dump zum beschreiben des Chips lautet:

0x57_nulled

Das Beschreiben des Chips erledigen wir wieder mit einer abgewandelten Form des 24C08 Sketches[5] auschließlich zum Beschreiben des Chips. Den dump habe ich in diesem Sketch ganz primitiv in ein array gepackt welches ich dann auf den Chip schreiben lasse.

Wenn das also erledigt ist, trennen wir alle Verbindungen, klappen unser ThinkPad auf und versuchen uns anzumelden. Beim ersten Druck auf Enter hat er mir den Zugang verweigert, entweder weil er das Passwort vor der eingabe bereits ausließt und zwischenlagert, oder weil ich garnichts eingegeben habe, das ist mir unklar, aber auch irrelevant für mich. Beim 2. mal habe ich einfach Leertaste als Passwort eingegeben und mit Enter bestätigt und schon freut er sich über die Eingabe des Passwortes und lässt uns ins Setup Menü wo wir in den Einstellungen vorfinden, dass das Passwort deaktiviert ist.

  • MfG Arministrator

1 Kommentar

  1. T400Besitzer
    T400Besitzer 20. Dezember 2016

    Danke für diesen klasse Blogeintrag !!! Konnte mithilfe dieser Anleitung mein günstig gekauftes T400 mit unbekanntem Supervisor-Passwort ohne Mainboard-Tausch wieder flott machen.

    Habe das Auslesen und Beschreiben des ICs mit einem Arduino Yun (basierend auf einem Arduino Leonardo) probiert und war erfolgreich. Dazu lediglich SDA des EEPROM mit Pin 2 und SCL des EEPROM mit Pin 3 des Yun/Leonardo verbinden. An den Sketches muss nichts verändert werden, wenn man ein anderes Arduino/Teensy verwendet. Alternative SDA/SCL Pinbelegungen für andere Arduinos habe ich hier gefunden: https://www.arduino.cc/en/Reference/Wire
    Das Auslesen des EEPROMS habe ich mit ausgebautem Bildschirm gemacht, da es so einfacher ist das Mainboard samt Base Cover auf den Kopf zu drehen und den EEPROM zu erreichen. So hat es auch anstandslos funktioniert. Die Tastatur habe ich eingebaut und von unten mit einer Schraube fixiert. Um zu beobachten, ob der Laptop sich trotz ausgebautem Bildschirm richtig einschaltet, kann man die grüne LED des Ethernet-Ports beobachten: Diese sollte nach dem Drücken des Power-Schalters der Tastatur für ca. eine halbe Sekunde aufleuchten. Der Lüfter läuft auch kurz an.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert