Python根据系统信息生成机器码(Windows)

Python根据系统信息生成机器码(Windows)

import hashlib
import platform

import wmi


def pwd_to_sha256(password, salt: str):
    """哈希加密"""
    sha = hashlib.sha256()
    sha.update(password.encode('utf-8'))
    sha.update(salt.encode('gbk'))
    return sha.hexdigest()


class Hardware:

    machine_code = None

    @classmethod
    def _get_system_info(cls):
        """获取系统名称"""
        system_info = platform.uname()
        return system_info.node

    @classmethod
    def _get_cpu_info(cls):
        """获取CPU信息(弃用,耗时过长)"""
        c = wmi.WMI()
        info = ''
        for cpu in c.Win32_Processor():
            res = str(cpu.SerialNumber)
            info += res
        return info

    @classmethod
    def _get_board_info(cls):
        """获取主板信息"""
        c = wmi.WMI()
        info = ""
        for board in c.Win32_BaseBoard():
            res = str(board.SerialNumber)
            info += res
        return info

    @classmethod
    def _get_bios_info(cls):
        """获取BIOS信息"""
        c = wmi.WMI()
        info = ""
        for bios in c.Win32_BIOS():
            res = str(bios.SerialNumber)
            info += res
        return info

    @classmethod
    def _get_disk_info(cls):
        """获取硬盘信息"""
        c = wmi.WMI()
        info = ""
        for disk in c.Win32_DiskDrive():
            res = str(disk.SerialNumber)
            info += res
        return info

    @classmethod
    def generate_machine_code(cls):
        """生成机器码"""
        if cls.machine_code:
            return True, 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)
            return False, None

        combined_info = "-".join(info_list)
        code_temp = pwd_to_sha256(combined_info, 'hahaha')
        code = code_temp[::2]
        cls.machine_code = code

        return True, code


if __name__ == '__main__':
    print(Hardware.generate_machine_code())
    print(Hardware.machine_code)
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值