import wmi
        
############ 1. 获取硬件信息,输出 macode
#   1.CPU序列号(ID) 2.本地连接 无线局域网 以太网的MAC 3.硬盘序列号(唯一) 4.主板序列号(唯一)

    global s
    s = wmi.WMI()
#cpu 序列号
    def get_CPU_info(self):
        cpu = []
        cp = s.Win32_Processor()
        for u in cp:
            cpu.append(
                {
                    "Name": u.Name,
                    "Serial Number": u.ProcessorId,
                    "CoreNum": u.NumberOfCores
                }
            )
     #   print(":::CPU info:", json.dumps(cpu))
        return cpu
#硬盘序列号  
    def get_disk_info(self):
        disk = []
        for pd in s.Win32_DiskDrive():
            disk.append(
                { 
                    "Serial": s.Win32_PhysicalMedia()[0].SerialNumber.lstrip().rstrip(), # 获取硬盘序列号,调用另外一个win32 API
                    "ID": pd.deviceid,
                    "Caption": pd.Caption,
                    "size": str(int(float(pd.Size)/1024/1024/1024))+"G"
                }
            )
     #   print(":::Disk info:", json.dumps(disk))
        return disk
#mac 地址(包括虚拟机的)
    def get_network_info(self):
        network = []
        for nw in s.Win32_NetworkAdapterConfiguration ():  # IPEnabled=0
            if nw.MACAddress != None:
                network.append(
                    {
                        "MAC": nw.MACAddress,  # 无线局域网适配器 WLAN 物理地址
                        "ip": nw.IPAddress
                    }
                )
    #    print(":::Network info:", json.dumps(network))
        return network
#主板序列号
    def get_mainboard_info(self):
        mainboard=[]
        for board_id in s.Win32_BaseBoard ():
            mainboard.append(board_id.SerialNumber.strip().strip('.'))
        return mainboard    
    
    #  由于机器码太长,故选取机器码字符串部分字符   
#  E0:DB:55:B5:9C:16BFEBFBFF00040651W3P0VKEL6W8T1Z1.CN762063BN00A8
#  1 61 k 8Z   
#     machinecode_str = ""
#     machinecode_str = machinecode_str+a[0]['MAC']+b[0]['Serial Number']+c[0]['Serial']+d[0]
    def getCombinNumber(self):
        a=self.get_network_info()
        b=self.get_CPU_info()
        c=self.get_disk_info()
        d=self.get_mainboard_info()
        machinecode_str = ""
        machinecode_str = machinecode_str+a[0]['MAC']+b[0]['Serial Number']+c[0]['Serial']+d[0]
        selectindex=[15,30,32,38,43,46]
        macode=""
        for i in selectindex:
            macode=macode+machinecode_str[i]
     ###   print(macode)
        return macode
posted on 2020-01-10 16:56  赏孤舟蓑笠  阅读(5209)  评论(1编辑  收藏  举报