DigitalProductID Decode Algorithm

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 << 8) + 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.

This entry was posted in Windows. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>