加密授权验证学习之一 ——获取计算机CPUID序列号

最近项目中需要对CPUID、硬盘序列号、网卡物理地址进行加密授权验证,网上这方面的资料代码很多,但很多都有错或者不能正确获取,通过整理与学习,将自己已经正确获得的代码分享出来吧。

code:

#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

string GetCPUID()
{
	std::string strCPUId;
	unsigned long s1, s2;
	char buf[32] = { 0 };
	__asm{
		mov eax, 01h   //eax=1:取CPU序列号
			xor edx, edx
			cpuid
			mov s1, edx
			mov s2, eax
	}
	if (s1) {
		memset(buf, 0, 32);
		sprintf_s(buf, 32, "%08X", s1);
		strCPUId += buf;
	}
	if (s2) {
		memset(buf, 0, 32);
		sprintf_s(buf, 32, "%08X", s2);
		strCPUId += buf;
	}
	__asm{
		mov eax, 03h
			xor ecx, ecx
			xor edx, edx
			cpuid
			mov s1, edx
			mov s2, ecx
	}
	if (s1) {
		memset(buf, 0, 32);
		sprintf_s(buf, 32, "%08X", s1);
		strCPUId += buf;
	}
	if (s2) {
		memset(buf, 0, 32);
		sprintf_s(buf, 32, "%08X", s2);
		strCPUId += buf;
	}
	return strCPUId;
}

int main()
{
	cout << "CPUID:" << GetCPUID() << endl;
	getchar();
	return 0;
}

为了验证获取结果和计算机的是不是一致,可以通过计算机的命令提示符进行查看。

在搜索框内输入cmd,然后输入命令 wmic cpu get ProcessorID 来查看ID信息。

https://blog.csdn.net/zkz10086/article/details/81505254?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242

posted on 2020-09-18 21:45  xihong  阅读(663)  评论(0编辑  收藏  举报

导航