AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Installationskey auslesen

Ein Thema von Mackhack · begonnen am 22. Nov 2006 · letzter Beitrag vom 1. Dez 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

Installationskey auslesen

  Alt 22. Nov 2006, 21:28
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!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#2

Re: Installationskey auslesen

  Alt 23. Nov 2006, 00:51
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
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Installationskey auslesen

  Alt 23. Nov 2006, 01:24
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!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#4

Re: Installationskey auslesen

  Alt 23. Nov 2006, 12:40
hier mal ne unit, die ich mal gefunden habe...

Delphi-Quellcode:
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.
aufgerufen wird das Ganze nach dem Einbinden der Unit z.B. per
Edit1.Text := View_Win_Key; HTH Frank
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#5

Re: Installationskey auslesen

  Alt 23. Nov 2006, 13:46
Mahlzeit ...,
Zitat von Mackhack:
Waere echt nett wenn du nach dem anderen Programm gucken koenntest.
Sie haben Post
Ich wollte das Tool nicht unbedingt hier posten, auch wenn es nicht illegal ist

LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Installationskey auslesen

  Alt 23. Nov 2006, 13:58
Acuh wenn er im Kommentar schreibt, dass er jetzt auch ohne Administratorenrechte ginge, bezweifle ich das doch sehr:
Delphi-Quellcode:
Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) then
Müsste heißen:
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
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Installationskey auslesen

  Alt 23. Nov 2006, 14:04
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]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Installationskey auslesen

  Alt 23. Nov 2006, 14:59
Zitat von Luckie:
Acuh wenn er im Kommentar schreibt, dass er jetzt auch ohne Administratorenrechte ginge, bezweifle ich das doch sehr:
Ich habe keine Admin Rechte und es geht auch ohne Deine Änderung

Wenn man im Google nach "Unit MSProdKey" sucht, findet man auch die komplette unit.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Installationskey auslesen

  Alt 23. Nov 2006, 15:03
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Installationskey auslesen

  Alt 23. Nov 2006, 15:13
Zitat von Luckie:
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.
Ist aber definitiv so. Ich habe keine Admin Rechte auf dem PC.
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)

ps: Vieleicht hat man als nicht Admin dort schreibrechte
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz