私は、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: