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;
    }
  • 相关阅读:
    MapReduce之多个Job串联的案例
    MapReduce之MapJoin案例
    MapReduce之ReduceJoin案例
    PPP协议实现透明传输的2种方法
    Mcal使用记录
    RTA-OS使用记录
    RLM的license管理工具的特点
    对license要求比较严格的软件
    自己的文件上传到npm
    Tomcat服务器安装SSL证书>安装PFX格式证书
  • 原文地址:https://www.cnblogs.com/ahuo/p/2538518.html
Copyright © 2011-2022 走看看