import console;
import crypt;
import com.wmi;
import inet.adapterInfo;
// 获取cpuID
function getCpuID(){
var cpuTable = com.wmi.getTable("SELECT ProcessorId FROM Win32_Processor");
if(#cpuTable){
return cpuTable[1].ProcessorId;
}
return "";
}
// 获取第一个物理硬盘的序列号
function getFirstDiskSerial() {
var drive = com.wmi.get("SELECT SerialNumber FROM Win32_DiskDrive WHERE Index=0");
if(drive && drive.SerialNumber) {
return string.trim(drive.SerialNumber);
}
return "";
}
// 常见虚拟化厂商的 MAC 地址前缀(OUI)
var virtualOUI = {
"00-05-69" = "VMware",
"00-0C-29" = "VMware",
"00-50-56" = "VMware",
"00-1C-42" = "Parallels",
"00-03-FF" = "Microsoft Hyper-V",
"00-15-5D" = "Microsoft Hyper-V",
"08-00-27" = "VirtualBox",
"0A-00-27" = "VirtualBox",
"00-FF" = "虚拟网卡(常见)"
};
// // 检查前6个字符(OUI)
function isVirtualByMAC(mac) {
for prefix in virtualOUI {
if(string.find(mac, prefix)) {
return true;
}
}
return false;
}
// 获取第一个物理网卡MAC地址
function getFirstMac(){
for adapter in inet.adapterInfo.each() {
if(adapter.operStatusUp and adapter.mac){
if(not isVirtualByMAC(adapter.mac)){
return adapter.mac;
}
}
}
return "";
}
var cpu_id = getCpuID();
console.success("CPUID", cpu_id);
var serial = getFirstDiskSerial();
console.success("硬盘序列号", serial);
var mac_info = getFirstMac();
console.success("MAC", mac_info);
content = string.join({cpu_id, serial, mac_info}, "-");
var sha1 = crypt.sha1(content, false);
console.success("机器码", string.left(sha1, 8));
console.pause();