如何生成与产品序列号(CPU-ID)相关的确认密钥以复制保护我自己的软件

时间:2015-12-06 15:06:08

标签: encryption cpuid

我已经编写了一个软件,我将在其中读取CPU-ID,然后我将CPU-ID作为软件序列密钥显示给用户,它将请求确认密钥以登录软件。用户必须向我发送CPU-ID(串行密钥),以便我必须生成确认密钥并将其发送回用户进行登录。

我正在使用Linux和C

以下是我用来获取CPU ID的代码

示例CPU-ID如下所示:0103-06A9-0123-0100-8974-4587

如果有人帮我生成一个简单的加密序列号并生成确认密钥,我将感激不尽。谢谢。

注意:如果密钥以可读格式显示,那么它会更好......即没有特殊字符......

char CPU[30]; //24 Hex digits, PROCESS_SERIAL_NUM
int varEAX, varEBX, varECX, varEDX;
char str[9];
__asm__ __volatile__ ("cpuid"   : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (1));
sprintf(str, "%08X", varEAX); //i.e. XXXX-XXXX-xxxx-xxxx-xxxx-xxxx
sprintf(CPU, "%C%C%C%C-%C%C%C%C", str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
__asm__ __volatile__ ("cpuid"   : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (3));
sprintf(str, "%08X", varEDX); //i.e. xxxx-xxxx-XXXX-XXXX-xxxx-xxxx
sprintf(CPU, "%s-%C%C%C%C-%C%C%C%C", CPU, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
sprintf(str, "%08X", varECX); //i.e. xxxx-xxxx-xxxx-xxxx-XXXX-XXXX
sprintf(CPU, "%s-%C%C%C%C-%C%C%C%C", CPU, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);

printf("%s\n", CPU); //compare with: lshw | grep serial:

0 个答案:

没有答案