0

我编写了一个软件,我将在其中读取 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:
4

0 回答 0