node.js程序绑定到硬件

由 夕空 撰写于  2020年4月28日

使用node.js模块来获取主板信息:

//加密 绑定机器
const si = require('systeminformation');

const baseboard=[[],[]];
// console.log(Buffer("180******"))
// console.log("硬件信息", si.getStaticData())
si.baseboard(function (data) {
console.log("data.serial", data.serial);
for(var k in baseboard){
if(data.serial==String.fromCharCode.apply(null, new Uint8Array(baseboard[k]))){
return;
}
}
win.close();

})

最终将js文件用nwjc加密,不过字符串仍然是明文显示,所以这里将主板序列号转为Buffer二进制信息存入baseboard数组里,来对比本机主板序列号。

wmic命令查看硬件信息:

Windows系统下使用wmic命令查看硬件信息

1、查询网卡信息:wmic nicconfig get macaddress

2、查询cpu序列号:wmic cpu get processorid

3、查询主板序列号:wmic baseboard get serialnumber

4、查询BIOS序列号:wmic bios get serialnumber

5、查询硬盘:wmic DISKDRIVE get SerialNumber


部分老机型无法获取主板信息,使用另一个模块制作更稳定:

node-machine-id

var machine= require("node-machine-id");
const thissn = machine.machineIdSync({ original: true });
const comsn=[[硬件的唯一码+自己的key],[硬件的唯一码+自己的key]];//二进制buffer
const suffix=[混入自己二进制key];//二进制buffer
// 判断机器SN合法性
function lawful() {
if(comsn.length==0) return;
for(var k in comsn){
if (thissn+ String.fromCharCode.apply(null, new Uint8Array(suffix)) == String.fromCharCode.apply(null, new Uint8Array(comsn[k]))){
return;
}
}
win.close();
}
lawful();

原理是根据硬件的硬件信息+系统信息+网口信息,来获得固定的唯一码(重装系统可能会导致唯一码产生变化)

为啥comsn数组里是buffer二进制,你肯定不想唯一码在nw.js的.bin文件里明码显示吧,所以先将唯一码转为二进制buffer,nwjc生成的.bin文件里就找不到这些唯一码和key了。

模块来源:https://www.npmjs.com/package/node-machine-id

声明:星耀夕空|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - node.js程序绑定到硬件


欢迎光顾我的小站!