Odczytanie klucz Windows z rejestru

Opublikowano przez w Księga InfoMagii, Porady techniczne.

Print Friendly, PDF & Email

Klucz produktu Windows od wersji XP jest zakodowany w kluczu rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion w wartości binarnej DigitalProductId w 30 cyfr w notacji heksadecymalnym po grupowanych w pary liczb (15 par).

Zakodowano klucz jest zapisany od 35 pary liczb w całej wartości DigitalProductId:

W moim przypadku to: “FE 04 00 E8 44 28 31 EE C4 5F F4 F7 92 69 09” (zakodowany klucz Windows 8  Cconsumer Preview)

Następnie ciąg 15 par liczb oddzielone spacją musimy zdekodować

https://dreamiteam.pl/DekoderDigitalProductID.htm

 

Przykładowy wynik działania dekodera:

Algorytm dekodujący klucz Windows jest ogólnie dostępny  – przykład w języku C#:

//Digital Product ID: FE 04 00 E8 44 28 31 EE C4 5F F4 F7 92 69 09
Char[] ZnakiDozwoloneWKluczuWindows = { ‘B’, ‘C’, ‘D’, ‘F’, ‘G’, ‘H’, ‘J’, ‘K’, ‘M’, ‘P’, ‘Q’, ‘R’, ‘T’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘2’, ‘3’, ‘4’, ‘6’, ‘7’, ‘8’, ‘9’  };
Char[] KluczWidnowsa = new Char[25];
System.Byte[] ZakodowanyKlucz = {0xFE, 0x04, 0x00, 0xE8, 0x44, 0x28, 0x31, 0xEE, 0xC4, 0x5F, 0xF4, 0xF7, 0x92, 0x69, 0x09};
int i, j, k;
for (i = KluczWidnowsa.Length – 1; i >= 0; i–)
{
k = 0;
for (j = ZakodowanyKlucz.Length – 1; j >= 0; j–)
{
k = (k << 8) + ZakodowanyKlucz[j];
ZakodowanyKlucz[j] = (System.Byte)(k / 24);
k = k % 24;
}
KluczWidnowsa[i] = ZnakiDozwoloneWKluczuWindows[k];
}

Programy typu Windows Product Key Viewer korzystają z tych samych metod i algorytmu.

wróć