zoukankan      html  css  js  c++  java
  • Windows Product Key还原 CDKey

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 的"digitalProductId" 作为输入 
    void DecodeProductKey(unsigned char * digitalProductId, int dsize)
    {
        // Offset of first byte of encoded product key in 
        // 'DigitalProductIdxxx" REG_BINARY value. Offset = 34H.
        const int keyStartIndex = 52;
        // Offset of last byte of encoded product key in 
        // 'DigitalProductIdxxx" REG_BINARY value. Offset = 43H.
        const int keyEndIndex = keyStartIndex + 15;
        // Possible alpha-numeric characters in product key.
        const char *digits="BCDFGHJKMPQRTVWXY2346789";
        // Length of decoded product key
        const int decodeLength = 29;
        // Length of decoded product key in byte-form.
        // Each byte represents 2 chars.
        const int decodeStringLength = 15;
        // Array of containing the decoded product key.
        unsigned char * decodedChars = new unsigned char[decodeLength+1];
        
        // Extract byte 52 to 67 inclusive.
        unsigned char * hexPid = new unsigned char[15];
        int n=0;
        int i;
        for (i = keyStartIndex; i <= keyEndIndex; i++)
        {
            hexPid[n]=(digitalProductId[i]);
            n++;
        }
        for (i = decodeLength - 1; i >= 0; i--)
        {
            // Every sixth char is a separator.
            if ((i + 1) % 6 == 0)
            {
                decodedChars[i] = '-';
            }
            else
            {
                // Do the actual decoding.
                int digitMapIndex = 0;
                for (int j = decodeStringLength - 1; j >= 0; j--)
                {
                    int byteValue = (digitMapIndex << 8) | (unsigned char)hexPid[j];
                    hexPid[j] = (unsigned char)(byteValue / 24);
                    digitMapIndex = byteValue % 24;
                    decodedChars[i] = digits[digitMapIndex];
                }
                
            }
        }
        //让字符串正常结束
        decodedChars[decodeLength]=NULL;
        printf("Window 密钥:%s/n",decodedChars);
        delete hexPid;
        delete decodedChars;
    }
  • 相关阅读:
    Win10 WSL Ubuntu18.04 编译安装MySQL5.7
    PHP7 深入理解
    php session 测试
    nginx 匹配路由分发php和golang
    composer 库无法提交git
    Win10 1803安装Ubuntu1804子系统
    dhtmlxTreeGrid使用
    win7 64位系统下安装PL/SQL连接Oracle服务器的解决方法
    转载--eclipse快捷键
    JUnit4学习笔记2-Eclipse中使用JUint4进行单元测试
  • 原文地址:https://www.cnblogs.com/ahuo/p/2538518.html
Copyright © 2011-2022 走看看