![]() |
Installationskey auslesen
Hi,
wollte mal fragen ob der Registrierungsschluessel von Windows in der Registry als klartext gespeichert oder verschluesselt. Ich meine aber nicht den Schluessel den man in den System Properties angezeigt bekommt. Es gibt naemlich n Programm was ich gefunden habe Jelly's Magic Keyfinder der den Installationskey ausliest. Aber nur von der Platte von der gebootet wurde. Was ich aber braeuchte ist von einer USB Platte von einem Kunden der seinen Original-Aufkleber zerrissen hat und somit nicht mehr sein Windows installieren kann. Wenn es aber in der Registry abgespeichert ist als Klartext muesste es ja weiterhin moeglich sein ihn noch auszulesen. Danke! |
Re: Installationskey auslesen
Moin ...,
der Windows Reg-Key liegt verschlüsselt in der Registry. Es gibt aber inzwischen genug Keyfinder die den Original Key wieder anzeigen können, frag mich aber nicht wie. Bei Jellys KeyFinder bekommst Du aber mit vielen Antiviren Programmen Schwierigkeiten - wird als Trojaner erkannt und geblockt!! Ps. Ich habe einen auf meiner BartPe CD bei dem man das i386 Verzeichnis zum auslesen selbst bestimmen kann. Werd nacher mal schauen wie das Programm heisst ... LG Mario |
Re: Installationskey auslesen
Hi,
ja den Jelly Keyfinder haben wir auch hier. Waere echt nett wenn du nach dem anderen Programm gucken koenntest. Weist du wie der Algo aussieht um den wieder zurueckzubekommen oder in welchem Reg-Schluessel der steckt? Wir machen damit im Geschaeft nichts illegales. Der Kunde hat wie gesagt sein Windows offiziell gekauft und hat seinen Aufkleber ausversehen verrissen, der arme alte Mann! |
Re: Installationskey auslesen
hier mal ne unit, die ich mal gefunden habe...
Delphi-Quellcode:
aufgerufen wird das Ganze nach dem Einbinden der Unit z.B. per
unit unit2;
{ ************************************************************************************** * Unit MSProdKey v2.2 * * * * Description: Decode and View the Product Key, Product ID and Product Name used to * * install: Windows 2000, XP, Server 2003, Office XP, 2003. * * *Updated* Now works for users with Non-Administrative Rights. * * Code cleanup and changes, Commented. * * * * Usage: Add MSProdKey to your Application's uses clause. * * * * Example 1: * * * * procedure TForm1.Button1Click(Sender: TObject); * * begin * * if not IS_WinVerMin2K then // If the Windows version isn't at least Windows 2000 * * Edit1.Text := 'Windows 2000 or Higher Required!' // Display this message * * else // If the Windows version is at least Windows 2000 * * Edit1.Text := View_Win_Key; // View the Windows Product Key * * Label1.Caption := PN; // View the Windows Product Name * * Label2.Caption := PID; // View the Windows Product ID * * end; * * * * Example 2: * * procedure TForm1.Button2Click(Sender: TObject); * * begin * * if not IS_OXP_Installed then // If Office XP isn't installed * * Edit1.Text := 'Office XP Required!' // Display this message * * else // If Office XP is installed * * Edit1.Text := View_OXP_Key; // View the Office XP Product Key * * Label1.Caption := DN; // View the Office XP Product Name * * Label2.Caption := PID; // View the Office XP Product ID * * end; * * * * Example 3: * * procedure TForm1.Button3Click(Sender: TObject); * * begin * * if not IS_O2K3_Installed then // If Office 2003 isn't installed * * Edit1.Text := 'Office 2003 Required!' // Display this message * * else // If Office 2003 is installed * * Edit1.Text := View_O2K3_Key; // View the Office 2003 Product Key * * Label1.Caption := DN; // View the Office 2003 Product Name * * Label2.Caption := PID; // View the Office 2003 Product ID * * end; * * * ************************************************************************************** } interface uses Registry, Windows, SysUtils, Classes; function IS_WinVerMin2K: Boolean; // Check OS for Win 2000 or higher function View_Win_Key: string; // View the Windows Product Key //function IS_OXP_Installed: Boolean; // Check if Office XP is installed //function View_OXP_Key: string; // View the Office XP Product Key //function IS_O2K3_Installed: Boolean; // Check if Office 2003 is installed //function View_O2K3_Key: string; // View the Office 2003 Product Key function DecodeProductKey(const HexSrc: array of Byte): string; // Decodes the Product Key(s) from the Registry var Reg: TRegistry; binarySize: INTEGER; HexBuf: array[0..28] of BYTE; temp: TStringList; KeyName, KeyName2, SubKeyName, PN, PID, DN: string; implementation function IS_WinVerMin2K: Boolean; var OS: TOSVersionInfo; begin ZeroMemory(@OS, SizeOf(OS)); OS.dwOSVersionInfoSize := SizeOf(OS); GetVersionEx(OS); Result := (OS.dwMajorVersion >= 5) and (OS.dwPlatformId = VER_PLATFORM_WIN32_NT); PN := ''; // Holds the Windows Product Name PID := ''; // Holds the Windows Product ID end; function View_Win_Key: string; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) then begin if Reg.GetDataType('DigitalProductId') = rdBinary then begin PN := (Reg.ReadString('ProductName')); PID := (Reg.ReadString('ProductID')); binarySize := Reg.GetDataSize('DigitalProductId'); //SetLength(HexBuf, binarySize); if binarySize > 0 then begin Reg.ReadBinaryData('DigitalProductId', HexBuf[0], binarySize); end; end; end; finally Reg.Free; Reg:=nil; end; Result := ''; Result := DecodeProductKey(HexBuf); end; function DecodeProductKey(const HexSrc: array of Byte): string; const StartOffset: Integer = $34; { //Offset 34 = Array[52] } EndOffset: Integer = $34 + 15; { //Offset 34 + 15(Bytes) = Array[64] } Digits: array[0..23] of CHAR = ('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9'); dLen: Integer = 29; { //Length of Decoded Product Key } sLen: Integer = 15; { //Length of Encoded Product Key in Bytes (An total of 30 in chars) } var HexDigitalPID: array[0..28] of CARDINAL; Des: array[0..28] of CHAR; I, N: INTEGER; HN, Value: CARDINAL; begin //SetLength(HexDigitalPID, dLen); for I := StartOffset to EndOffset do begin HexDigitalPID[I - StartOffSet] := HexSrc[I]; end; //SetLength(Des, dLen + 1); for I := dLen - 1 downto 0 do begin if (((I + 1) mod 6) = 0) then begin Des[I] := '-'; end else begin HN := 0; for N := sLen - 1 downto 0 do begin Value := (HN shl 8) or HexDigitalPID[N]; HexDigitalPID[N] := Value div 24; HN := Value mod 24; end; Des[I] := Digits[HN]; end; end; Des[dLen] := Chr(0); for I := 0 to Length(Des) do begin Result := Result + Des[I]; end; end; end.
Delphi-Quellcode:
HTH Frank
Edit1.Text := View_Win_Key;
|
Re: Installationskey auslesen
Mahlzeit ...,
Zitat:
Ich wollte das Tool nicht unbedingt hier posten, auch wenn es nicht illegal ist :lol: LG Mario |
Re: Installationskey auslesen
Acuh wenn er im Kommentar schreibt, dass er jetzt auch ohne Administratorenrechte ginge, bezweifle ich das doch sehr:
Delphi-Quellcode:
Müsste heißen:
Reg := TRegistry.Create;
try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) then
Delphi-Quellcode:
Reg := TRegistry.Create(KEY_READ); // <== KEY_READ, nur lesend öffnen !!!
try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) then |
Re: Installationskey auslesen
Den Source kann man aber auch noch vereinfachen. Anstelle der ersten Schleife kann man auch gleich "Move" nutzen.
[Edit] ok, hab müll geschrieben. Die entsprechende Stelle geht so nicht zu vereinfachen. Mir ist bei dem testen der Funktion aber auch aufgefallen das ich einen anderen Key zurück bekomme als ich bei der Installations eingegeben hab. [/Edit] |
Re: Installationskey auslesen
Zitat:
Wenn man im Google nach "Unit MSProdKey" sucht, findet man auch die komplette unit. ;-) |
Re: Installationskey auslesen
Kann eigentlich nicht sein. Gibt man bei Create keine Zugriffsrechte an wird er mit Lese- und Schreibrechten geöffnet. Und ein eingeschränkter Benutzer hat in HKLM keine Schreibrechte, weswegen der Zugriff fehlschlagen sollte.
|
Re: Installationskey auslesen
Zitat:
Ich lade Dich genre mal auf einen Kaffe hier im Büro ein. Dann kannst Du es selbst sehen ;-) (Kassel -> FFM ist ja nicht sooo weit) :mrgreen: ps: Vieleicht hat man als nicht Admin dort schreibrechte :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz