Every licence key, you give for Microsoft software, creates a DigitalProductID in the Windows registry. E.g. you find the digital product id for your Microsoft Windows in your registry: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion
The following algorithm shows you howto decode the digital product id to fetch your raw product key. If you loose your product key, this should help you to get it back without spending money. Please use this knowledge only for legal use! This is the onliest limitation to the following algorithm:
/* Digit Array */
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'};
Char[] DecodedKey = new Char[25];
System.Byte[] BinaryKey = {0x7f, 0x6a, 0x51, 0x4c, 0x8e, 0x5a, 0x91, 0x56, 0xea, 0x34, 0x77, 0x1a, 0xb7, 0xf2, 0x02}; // Not really a working key
int StartOffset = 0x34;
int i, j, k;
String Result = "";
for (i = DecodedKey.Length-1; i >= 0; i --)
{
k = 0;
for (j = BinaryKey.Length-1; j >= 0; j--)
{
k = (k <<
+ BinaryKey[j];
BinaryKey[j] = (System.Byte)(k / 24);
k = k % 24;
}
DecodedKey[i] = Digits[k];
}
You got the raw decoded key in the Result variable. After decoding, you have to format the product key e.g. adding “-” after every 5th char and so on. I used Microsoft .NET Framework and C# to access the registry and decode the byte progression.