Windows Product Key auslesen



  • Hallo Fangemeinde!

    Ich suche eine Möglichkeit den Produc-Key von Windows auszulesen. Gibt es da eine einfache Win32 Funktion dazu?

    F98



  • Ich koennte mir vorstellen, dass der in der Registry zu finden ist. Bring doch einfach mal deinen in Erfahrung und suche nach diesem in der Registry, wenn du fündig wirst haste den entsprechden Pfad zu dem Key in der Registry.

    Gruss,
    DeSoVoDaMu



  • 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


Anmelden zum Antworten