import hashlib
import platform
import wmi
defpwd_to_sha256(password, salt:str):"""哈希加密"""
sha = hashlib.sha256()
sha.update(password.encode('utf-8'))
sha.update(salt.encode('gbk'))return sha.hexdigest()classHardware:
machine_code =None@classmethoddef_get_system_info(cls):"""获取系统名称"""
system_info = platform.uname()return system_info.node
@classmethoddef_get_cpu_info(cls):"""获取CPU信息(弃用,耗时过长)"""
c = wmi.WMI()
info =''for cpu in c.Win32_Processor():
res =str(cpu.SerialNumber)
info += res
return info
@classmethoddef_get_board_info(cls):"""获取主板信息"""
c = wmi.WMI()
info =""for board in c.Win32_BaseBoard():
res =str(board.SerialNumber)
info += res
return info
@classmethoddef_get_bios_info(cls):"""获取BIOS信息"""
c = wmi.WMI()
info =""for bios in c.Win32_BIOS():
res =str(bios.SerialNumber)
info += res
return info
@classmethoddef_get_disk_info(cls):"""获取硬盘信息"""
c = wmi.WMI()
info =""for disk in c.Win32_DiskDrive():
res =str(disk.SerialNumber)
info += res
return info
@classmethoddefgenerate_machine_code(cls):"""生成机器码"""if cls.machine_code:returnTrue, cls.machine_code
try:
info_list =[cls._get_system_info(),
cls._get_board_info(),
cls._get_bios_info(),
cls._get_disk_info()]except Exception as e:print(e)returnFalse,None
combined_info ="-".join(info_list)
code_temp = pwd_to_sha256(combined_info,'hahaha')
code = code_temp[::2]
cls.machine_code = code
returnTrue, code
if __name__ =='__main__':print(Hardware.generate_machine_code())print(Hardware.machine_code)