磁盘序列号获取之坑

在Windows7环境下,通过命令获取的硬盘序列号并非真实序列号,而是一个40位的HEX字符串。通过对比专业软件获取的真实序列号,发现需要对这个40位字符串进行特定的顺序调整和HEX转ASCII才能得到正确结果。解决方案是编写算法,根据特定规律重新排序字符串,然后进行转换以获得真实的硬盘序列号。
摘要由CSDN通过智能技术生成

场景:

首先场景时发生在自己写的量化交易客户端软件上,券商交易,要求记录用户操作计算机的IP,网卡MAC地址,硬盘序列号信息。其中IP与网卡MAC地址是很容易获取到的,硬盘序列号其实获取也不难,只不过在低版本Windows系统行就有了坑,比如Windows7,通过相关命令获取到的并不是真正的序列号,而是经过 每4位HEX字符经过little endian的总长为40为的字符串 。比如:

命令:wmic diskdrive get serialnumber | wmic path win32_physicalmedia get SerialNumber | wmic path Win32_DiskDrive get SerialNumber
结果:32535554574e4741314134313532204a20202020

而通过专业软件获取到的真实硬盘序列号:S2TUNWAGA11425J

 

解决:

首先用nodejs里的systeminformation组件可以获取到几乎所有硬件信息,当然包括硬盘序列号,但是,Windows7环境下返回的还是如上40位字符串。(Windows10下面是没有任何问题的)

一开始,以为返回的40位字符串『32535554574e4741314134313532204a20202020』为『S2TUNWAGA11425J』的16进制转码。
于是就进行了HEX2ASCII转码,获取到结果:『2SUTWNGA1A4152 J 』。很显然,结果是错误,但是很奇怪的是,字母都是对的,

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值