Windows Product Key auslesen



  • Microsoft versucht scheinbar, den aktuellen Key geheim zu halten. Ich hatte einige Programme, die den Key unter Windows XP auslesen konnten, diese funktionieren seit SP2 alle nicht mehr. Gibt aber schon ein neues Tool, das das kann(Keyfinder). Also eine einfache Funktion dafür gibt es keinesfalls und ich habe auch keine Ahnung, wie man nach SP2 an den Key kommt.



  • Yo, das scheint ein größeres Problem darzustellen. Ich habe schon mehrere Foren danach umgegraben, bin aber nicht so richtig fündig geworden.



  • Ich wollte mal mit Apispy schauen, was der keyfinder macht, um an den Key zu kommen, das ist mir aber nicht gelungen, da dieser ständig einen Childprozess gestartet und wieder beendet hat und dadurch Apispy gar nichts aufzeichnen konnte. 😕



  • Du könntest auch mal mit Dependency Walker die Anwendung untersuchen - vielleicht kannst du damit was rausfinden 🙂



  • und, schon was rausgefunden, würd mich nämlich auch interessieren... 😃



  • Hallo,

    der Produkt Key steht in folgenden Registryschlüssel:

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId

    und zwar in den Bytes 52 bis 66.

    Allerdings ist er codiert und zwar mit Base24.
    Ich weiß leider nicht wie man diesen Code encodet.

    Base24 scheint so wie Base64 zu funktionieren, wird bei EMails verwendet.

    Wenn jemand weis wie es funzt sollte er es hier melden.

    Gruß Anlen



  • anlen schrieb:

    Hallo,

    der Produkt Key steht in folgenden Registryschlüssel:

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId

    und zwar in den Bytes 52 bis 66.

    Wenn jemand weis wie es funzt sollte er es hier melden.

    Das ist (nur) die Product ID. Du meinst wohl HKLM\SOFTWARE\MICROSOFT\Windows NT\Current Version\DigitalProductId. An der Umkodierung arbeite ich bereits, angetrieben vom Forscherdrang 😃



  • #include <iostream> 
    #include <windows.h>
    
    int main () {
    	//Zeichenvorrat Buchstaben,Ziffern ohne AEIOU01 (24)
    	UCHAR digits[] = {'B','C','D','F','G','H','J','K','M','P','Q','R','T','V','W','X','Y','2','3','4','6','7','8','9'};
    	PUCHAR strresult = new UCHAR[26];
    	PUCHAR buf = new UCHAR[200];
    
    	HKEY key = NULL;
    	DWORD datasize = 200;
    	DWORD dwRet = 0;
    
    	ZeroMemory((PVOID)strresult,26);
    
    	dwRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",0,KEY_READ,&key);                       
    	dwRet = RegQueryValueEx(key,"DigitalProductID",NULL,NULL,(LPBYTE)buf,&datasize);
    
    	if (dwRet != ERROR_SUCCESS) {
    		return -1;
    	}
    
    	RegCloseKey(key);
    
    	for (int i=24;i>=0;i--) {
    		int x=0;
    
    		for (int j=14;j>=0;j--) {
    			x = (x<<8) + (buf+0x34)[j];
    			(buf+0x34)[j] = x / 24;
    			x = x % 24;
    		}
    		strresult[i]=digits[x];
    	}
    
    	std::cout << strresult;
    
    	std::cin.get();
        return 0; 
    }
    

    Habe es jetzt hinbekommen 😉



  • Könnte man ja auch eigentlich mal in die FAQ stellen, oder?



  • @firefox:

    hast du es hinbekommen oder planet-source-code.com???



  • Hy Leute, wie müsste ich diesen Queltext verändern, damit er mich vorher noch nach einer IP fragt? Also im klar Text ich möchte eine IP eingeben und dann soll er auf die registry der ip zugreifen und mir den Product key aussgeben. Das ich auf dem Rechner Administratorrechte besitze ist natürlich vorrausgesetzt und auch gegeben. Und funktioniert das ganze auch mit Office? Wenn ja wie? Ich hoffe ihr könnt mir weiter helfen.



  • Da gabs doch mal son ganz tolles HAcker-Tool, was einem alle Windows-Schlüssel in einem Netzwerk auflistet, auch wenn man keine Adminrechte hat... zumindest ging das in einem Win2K-Netzwerk mit diesem Tool, unter WinXP hab ich das nicht getestet und ich hab das Tool nichtmehr, sonst würde ich wissen wie es heißt... kennt das einer? - Würd's ganz gerne wieder mal herunterladen... ist nämlich ganz witzig ^^



  • Das ist nicht nur witzig sondern sehr nützlich um einen guten Überblick über verwendete Lizenzen zu behalten. Genau so ein tool suche ich, es soll das netzwerk unter windows xp nach den Windows XP und Office (2000 und 2003 und XP) nach product keys durchsuchen und zusammen mit dem Rechnernamen auflisten. Ich hoffe ihr kennt da was und könnt mir da weiter helfen.

    Edit:

    Eigentlich meine ich von der Sache her dieses Teil: RockXP3
    Download: http://www.korben.tk/
    Allerdings halt nur das es netzwerk fähig ist, weil ich keine Lust habe zu jedem Rechner einzeln hinzulaufen.



  • Muh-Kuh schrieb:

    @firefox:

    hast du es hinbekommen oder planet-source-code.com???

    Ja, ich :p

    Hinweise auf den verwendeten Zeichenvorrat hatte ich durch googlen gefunden.



  • Hast Du auch eine Lösung für C# parat? Mit C++ kenn ich mich ned so aus.



  • DaFreez schrieb:

    Hast Du auch eine Lösung für C# parat? Mit C++ kenn ich mich ned so aus.

    ,

    sorry, ich meinte @masterofx32 damit. Ich suche einen Base24 Decoder für (in) C#.

    Danke nochmal



  • Na unter C# sähe das natürlich auch nicht stark anders aus. Dort hat man unter Anderem aber noch die Möglichkeit, den Registrierungsschlüssel von Remoterechnern abzufragen ohne sich mit WMI rumzuschlagen.

    private char[] digits = {'B','C','D','F','G','H','J','K','M','P','Q','R','T','V','W','X','Y','2','3','4','6','7','8','9'};
    
    public string QueryRemoteKey(string remotehost) {
        try {
    
            RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine,remotehost);
            RegistryKey subkey = key.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
    
            byte[] data = (byte[])subkey.GetValue("DigitalProductID");
            string result = "";
    
            for (int i=24;i>=0;i--) {
                int x=0;
    
                for (int j=14;j>=0;j--) {	
                    x = (x<<8) + data[0x34+j];
                    data[0x34+j] =(byte)(x/24);
                    x = x%24;
                }
    
                result = result.Insert(0,digits[x].ToString());
    
                if ( ((i%5)==0) && (i!=0) ) {
                    result = result.Insert(0,('-').ToString());
                }
            }
    
            return result;
    
        } catch(Exception ex) {
            System.Windows.Forms.MessageBox.Show(ex.Message);
        }
    
        return String.Empty;
    }
    

    EDIT: digits vergessen



  • Hallo zusammen, leider bin ich nirgends fündig geworden, also dacht ich frag ich mal hier...gibt's diesen/einen ähnlichen Eintrag in der Registry für alle Windoof Versionen..und..Was dann noch viel wichtiger ist, ist der Key dann auch genau so codiert? 😕

    Grüße Chris



  • Hallo????

    Also, entweder hat hier keiner verstanden was ich wissen möchte oder meine Frage ist die Antwort nicht Wert...! :o/ In beiden Fällen, bitte eine kurze Reaktion!
    Irgendwie kann ich nämlich nicht recht glauben, dass es hier im Forum nur XP user gibt. Kann bitte mal ein Win9x user in seine Registry gucken, ob der Key da genauso exsistiert? Bidde!!!
    Ich will doch nix böses damit machen...will für's eigene Proggi einen Lizensgenerator bauen und mich an die Win-Lizens dranhängen! Natürlich wird die vorher bis zur unkenntlichkeit verstümmelt und mit anderen Systemspezzifieschen Werten verwurschtelt, so dass ein Rückschluss selbst im Lizens Generator völlig ausgeschlossen ist!

    Gruß Chris



  • 95A ➡ HKLM\Software\Microsoft\Windows\CurrentVersion\ProductId
    98SE ➡ HKLM\Software\Microsoft\Windows\CurrentVersion\ProductKey

    Beide liegen dort im Klartext vor. Das Verfahren bei 2000 scheint wie bei XP zu funktionieren, das konnte ich aber nicht überprüfen.

    so dass ein Rückschluss selbst im Lizens Generator völlig ausgeschlossen ist!

    ➡ Lizenzgenerator


Anmelden zum Antworten