.

 

 

 

 

 

 


.

Die Schwierigkeiten mit dem CD-Key in Windows

 

Zurück zum Index

Nicht selten, sofern man an verschiedenen und fremden Maschinen zu arbeiten hat, taucht die Frage nach dem CD-Key auf. Sei es, weil der Sticker verschwunden ist und ohne dem eine Neuinstallation nicht geht, oder andere Probleme.

Als Supporter steht man vor einem System, das dringend repariert werden müsste weil startunfähig, die CD ist vorhanden, nur der Aufkleber mit dem wichtigen Key ist schlicht weg.


Oder das System hat sich völlig zerlegt, bootet nicht, zeigt einen Festplattenschaden... kurz - auslesen der Registry oder den Hive importieren ist nicht mehr möglich, der nötige Key zur Neuinstallation - siehe oben, wohl aber die Original CD mit Windows ist vorhanden.

Auch nicht selten kommt es vor, in kleineren Firmen ist die Aufzeichnung nicht perfekt organisiert.
Hier gibt es eine Schublade mit CD's, und den zugehörigen Keys in loser Folge. Die Zuordnung der CD ließe sich noch klären, aber die wild herumfliegenden Sticker halt nicht mehr. Auch hier kann die Zuordnung wieder hergestellt werden, was sich bei "toten" Systemen leicht als nützlich erweisen kann. Es ist eine Frage der Zeit, bevor man das passende Pärchen auf herkömmliche Weise identifiziert hat.


Wer zum Support eine Bart-CD hat, der kann zwar die Fremdregistry, bzw den passenden Hive (Software) laden,
nur Tools um den Key, der sich normal unter 
HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductID
befindet, kann man nicht aus einem völlig toten System, gegebenenfalls zweiter Festplatte auslesen. Massenweise Keyfinder und wie sich die alle nennen, agieren nur auf dem lokalen System, nicht aber der Importierten Registry, bzw. dem Zweig davon. Übrigens hat eine PE, oder Bart-CD keinen DigitalProductID-Key - also nicht wundern.


Die Registry befindet sich auf der entsprechenden Festplatte des unwilligen Systems unter 
C:\Windows\System32\Config
Hat hier, oder in diesem Teil der Festplatte der Fehlerteufel zugeschlagen, dann gibt es ein Exemplar welches direkt bei der Installation von XP (oder W2K= C:\Winnt\Repair) angelegt wird, auch noch hier
C:\Windows\Repair

Die gesuchte Datei ist jeweils "Software" ohne jegliche Dateierweiterung.
Hängt man die Festplatte als weitere in ein vorhandenes System, so ist der Laufwerksbuchstabe natürlich nicht mehr C:, sondern eben ein anderer und von der Konfiguration des Host-Windows abhängig.


Hat man sich als Supporter angewöhnt, einen fremden Hive unter dem angefordertem Schlüssel "Test" zu laden, so ergibt sich der endgültige Zweig der zu durchforsten ist mit: HKLM\Test\Microsoft\Windows NT\CurrentVersion\DigitalProductID
was von cd-key.exe als Standard berücksichtigt wird und auch Grund der Eigenentwicklung war.

Ein erster spielerischer Ansatz, das mit VB6  zu erledigen, war von Erfolg gekrönt, für die lokale Registry.
Der nächste Schritt, einen importierten Hive zu lesen war nun nur ein Mausklick entfernt, ebenfalls in VB6.

Ein defekter Hive allerdings, und natürlich auch abgeschaltete Systemwiederherstellung oder Einwirkung von Schadsoftware die Keys verfremdet, schon klappt genau das nicht mehr. Unter der Bart-CD, die leider kein Scripting ermöglicht, musste also eine andere Lösung her.
Als schnelle Lösung, ohne aufwendige bunte Interfaces und schmucklos, entstand cd-key.exe in VB6 erstellt, die dazu nötige DLL - MSVBM60.DLL hat man schnell in die Bart-CD aus seinem Windows integriert, mehr ist nicht notwendig. Es würde auch ein USB-Stick reichen, auf dem alles abgelegt ist.

Wer nun auf eine derartige Installation trifft, aber der Hive Software sich wegen eines Defektes nicht mehr als Struktur laden lässt, der stand bisher ebenso chancenlos da, immer aus dem Blickwinkel des Supporters
Jetzt nicht mehr, vorrausgesetzt, man kann mit einem Hexeditor umgehen und so die für den Regedit nicht mehr 
ladbare Struktur, oder halt Teile davon, eben anders zu durchforsten, was beispielsweise mit WinHex kein Problem ist.

Mit dem Wissen, wo der Key steht, der Länge und dem Vorspann zumindest in Win2000, XP und Windows2003, der kann den sogenannten RAW Key auslesen und den in das genannte cd-key.exe kopieren, decodieren und .. schon steht der CD Key im Klartext bereit. 

Den sogenannten Rawkey bekommt man zu Gesicht, klickt man auf den Wert DigitalProductID.

Hier steht der heiß gesuchte Key

In 0000 steht die Länge des anzulegendes Arrays in Bytes für den kompletten Schlüssel.
Ab dem Eintrag 52 Dezimal für 30 Bytes! befindet sich der Schlüssel, den es zu dekodieren gilt.

Ist der Registrypart defekt und läßt sich nur mit Hex-Editoren einlesen, dann wird es schwieriger.
Tipp: suchen nach dem Produktkey sowie Arraylänge (A4) und ein wenig Intuition.
Auch einer völlig maroden Festplatte oder Installation, sofern noch etwas willig, lässt sich dieser Key auch aus Sektordaten mit etwas Glück noch entnehmen, bekommt man die richtige Stelle zu fassen.

Es sei hier noch angemerkt, der Produktkey ist etwas anderes als der CD-Key (DigitalProductID), was vielerorts gerne verwürfelt wird.

Als Spielerei, geht oder auch nicht - wurde versucht den Code auch in VBS (Wshell) abzubilden, es geht beides, sowohl den Key aus der Reg, oder importiert auslesen, als auch den Raw Key in einen richtigen CD.Key umwandeln, eigentlich sogar recht einfach, wobei aus einem String paarweise Bytes generiert werden.

Etwas bedenklich mag den aufmerksamen Leser stimmen, wenn es so einfach ist, via Scripting tief im System zu lesen, dann kann das Schadsoftware sicher auch, früher oder später ;) und solche Daten in die Weltgeschichte schicken. 

prdkey.vbs  liest wahlweise den lokalen oder eingebundenen Key aus, angenommen wird der Name TEST ( gross / klein ist egal), unter dem die fremde Registry zu finden ist.
cscript prdkey.vbs = lokaler DigitalKey - Beispiel

prdrawkey.vbs (nicht downloadbar) liest aus der Eingabeaufforderung den 30-stelligen Key aus und gibt....... :)

cscript prdrawkey.vbs fb5b............ = CD-Key als Ergebnis.
Die Scripts wurden direkt aus der CMD gestartet.

Als Erweiterung für cd-key.exe könnte man, ohne allzu großen Aufwand auch die Registry eines im Netzwerk befindlichen PC's auslesen - wird eventuell nachgereicht wenn mal wieder Zeit frei ist.
Die verfügbare, bugbereinigte Version (2.01.0008) zeigt den decodierten Key aus dem Raw-Key  
nun vollständig an und zählt die Eingabe der Zeichen unterstützend mit.


MD5: 6E496BB838A46D01206FA641D219AD93 der ausführbaren Datei


Möglicherweise wird noch die Unterstützung zum Lesen und durchsuchen des Hives 
direkt von der HD mit eingebaut, was das leidige Abzählen erheblich erleichtern würde.

Funktioniert übrigens auch problemlos unter Vista und unter Windows 7 - Beta und RC.

Nachtrag vom 22.11.07
Besonders bei neueren XP-Installationen wird der Key nicht korrekt entschlüsselt.
Der Grund hierfür liegt darin begründet das Microsoft eine Version XP inklusive Servicepack2 ( genauer SP2c) wegen Keymangels released hat welches den Schlüssel erweitert. Damit sind nun mehr Buchstaben möglich was das vorliegende Programm nicht berücksichtigt, die Art der Generierung hingegen hat sich nicht geändert wie auch zumindest unter Vista inkl. Servicepack1 Beta bisher nicht.
Erkennbar sind derartige Versionen ( betrifft XP) an englischsprachigen Meldungen beim Runterfahren / Start.

Ob das mal programmtechnisch eingepflegt wird ist ungewiss.

Top