电脑的硬件特征有很多,常见的例如:主板、CPU、硬盘、网卡、BIOS等等,很多人使用WMI来获取。但是,依赖WMI是非常不可靠的,因为WMI可以被禁用,也可以被伪造。

这几年,出于对技术方面的好奇,我测试了十几种硬件特征码的获取,得出了一些测试结果。

一个好的硬件特征判定代码,需要具备以下特点:

1、与是否管理员无关

2、与是否64位操作系统无关

3、硬件特征稳定不变,也不容易伪造。

4、多次运行不影响软件的性能。

5、可以很方便的从硬件检测软件中读取,可以随时核对。

考虑上述几点,我推荐使用System UUID、System SerialNumber、BaseBoard SerialNumber、HDD SerialNumber、CPU SerialNumber 这五项中的某一项或两项作为硬件特征的依据。

其中,System和BaseBoard可以通过API读取主板DMI原始数据自行解析,HDD序列号可以使用API获取,CPU序列号需要Asm代码从底层获取。

获取System相关信息的部分代码示例(解析DMI数据)

3411e590442ff57e24d9f15dff867e11.png

最后,还有个关键问题,代码及算法不能被反编译暴露。此事以后再聊。

下面是软件检测结果,可用于检查核对:

System UUID、SerialNumber

7d0b6dec9b8f59747828d237d7205f98.png

硬盘序列号

53774675252a89611596faad2e715e4a.png

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐