在python中获取计算机的主板序列号、bios序列号、CPU序列号、硬盘序列号、网卡网址等硬件信息

本文介绍了如何使用Python通过WMI和UUID库获取计算机的主板序列号、BIOS序列号、CPU序列号、硬盘序列号以及网卡MAC地址,包括无线和有线地址,旨在帮助开发者进行软件保护和设备识别。
摘要由CSDN通过智能技术生成

一、为何创作

在写python程序的过程中,有时需要获取计算机的主板序列号、bios序列号、CPU序列号、硬盘序列号、网卡网址等硬件信息,这方面的资料比较多,经查阅相关前辈资料,我将其进行了整合,供有需要者使用。

计算机的主板序列号、bios序列号、CPU序列号、硬盘序列号、网卡网址等硬件信息,可以用在软件保护中,如生成注册码、限制程序在特定授权机器上运行等。

二、程序说明

程序中调用了 wmi 和 uuid  两个库,如果这两个库没有安装,需在运行前安装,安装方法:(在命令行状态下运行)

pip install wmi
pip install uuid
wmi介绍

 WMI的全称是Windows Management Instrumentation,即Windows管理规范。它是Windows操作系统上管理数据和操作的基础设施。我们可以使用WMI脚本或者应用自动化管理任务等。

在本文中,主要用于获取相关硬件序号等信息。

详细内容参考:https://blog.csdn.net/jgw2008/article/details/79095096

uuid 介绍 

UUID (Universally Unique Identifier,通用唯一标识)是一个128位的用于计算机系统中以识别信息的数目,虽然生成UUID的概率不为零,但是无限接近零,因此可以忽略不记,如此一来,每个人都可以建立不与其他人冲突的UUID。

在本文中,主要获取网卡MAC地址信息。

详细内容参考:https://www.jb51.net/article/248285.htm

三、完整代码

写了一个class,可以调用其中一个或多个过程。直接运行get_all(),结果用print输出,结果如下:

    可调用的程序如下:

    主板序列号   get_board_id

    bios序列号   get_bios_id

    CPU序列号    get_cpu_id

    硬盘序列号   get_physical_disk_id

    所有网卡地址 get_all_mac

    其中无线地址 get_MACAddress

    其中有线地址 get_pc_mac_address (感觉有时不准确,希望有大侠可以纠正!谢谢啦!)

    获得所有硬件信息 get_all

    所有返回信息中的英文均大写。

完整代码如下:(复制后可以直接运行)

# encoding:utf-8
# Copyright (C) 2021-2024 Liu Qinghao
__author__ = 'Liu Qinghao'

import wmi   # 硬件信息
import uuid  # 网卡MAC地址用

class GetHardwareInformation:
    '''
    获取当前电脑 self.硬件信息,包括:
    主板序列号   get_board_id
    bios序列号   get_bios_id
    CPU序列号    get_cpu_id
    硬盘序列号   get_physical_disk_id
    所有网卡地址 get_all_mac
    其中无线地址 get_MACAddress
    其中有线地址 get_pc_mac_address (不准确)
    获得所有硬件信息 get_all
    所有返回信息中的英文均大写
    '''
    def __init__(self) -> None:
        self.硬件信息 = wmi.WMI()

    def get_all_mac(self):
        # mac地址
        result=''
        for mac in self.硬件信息.Win32_NetworkAdapter():
            if mac.MACAddress is not  None:
                result += mac.MACAddress+' '
        return result.strip().upper()

    def get_MACAddress(self):
        '''
        获取无线网络MAC地址 返回大写地址,如:A8-8A-D2-7D-03-CD
        '''
        MACAddress = ''
        for nw in self.硬件信息.Win32_NetworkAdapterConfiguration(IPEnabled=1):
            MACAddress += nw.MACAddress +' '
        return MACAddress.strip().upper()

    def get_pc_mac_address(self):
        """
        获取PC的Mac地址,返回大写地址,如:F8-A2-D6-CC-BB-AA
        """
        mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
        MACAddress = ":".join([mac[e:e + 2] for e in range(0, 11, 2)]).upper()
        return MACAddress

    def get_physical_disk_id(self):
        # # 硬盘序列号 
        result=''
        for physical_disk in self.硬件信息.Win32_DiskDrive():
            result += physical_disk.SerialNumber+' '
        return result.strip().upper()

    def get_cpu_id(self):
        # CPU序列号 获取费时间
        result=''
        for cpu in self.硬件信息.Win32_Processor():
            result += cpu.ProcessorId.strip()+' '
        return result.strip().upper()

    def get_board_id(self):
        # 主板序列号 获取速度快
        result=''
        for board_id in self.硬件信息.Win32_BaseBoard():
            result += board_id.SerialNumber+' '
        return result.strip().upper()

    def get_bios_id(self):
        # bios序列号 获取速度快
        result=''
        for bios_id in self.硬件信息.Win32_BIOS():
            result += bios_id.SerialNumber+' '
        return result.strip().upper()

    def get_all(self):
        # 列出所有硬件信息
        result=(f'主板序列号:{self.get_board_id()}\nbios序列号:{self.get_bios_id()}\nCPU序列号:{self.get_cpu_id()}\n硬盘序列号:{self.get_physical_disk_id()}\n所有网卡网址:{self.get_all_mac()}\n其中无线网址:{self.get_MACAddress()}\n其中有线网址:{self.get_pc_mac_address()}')
        print (result)
        return result

if __name__ == '__main__':
    a=GetHardwareInformation().get_all()

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Python,可以使用`wmi`模块来获取硬盘序列号。`wmi`是一个用于访问Windows管理信息Python扩展模块。 首先,需要使用`pip`命令安装`wmi`模块: ``` pip install wmi ``` 然后,可以使用以下代码获取硬盘序列号: ```python import wmi def get_disk_serial_number(): c = wmi.WMI() for disk in c.Win32_DiskDrive(): return disk.SerialNumber.strip() serial_number = get_disk_serial_number() print("硬盘序列号:", serial_number) ``` 在这个例子,我们使用`wmi.WMI()`创建了一个WMI()对象,通过遍历`Win32_DiskDrive()`获取硬盘序列号,并将其作为字符串返回。最后,打印出获得的硬盘序列号。 需要注意的是,`wmi`模块在Windows系统上可用,如果在其他操作系统上运行,可能需要使用其他的方法来获取硬盘序列号。 ### 回答2: 要获取硬盘序列号,可以使用Python的`wmi`模块。`wmi`模块可以用于访问Windows管理接口,从而获取系统硬件信息。 首先,需要使用命令`pip install wmi`来安装`wmi`模块。 下面是一个获取硬盘序列号的示例代码: ```python import wmi def get_disk_serial(): c = wmi.WMI() disks = c.Win32_DiskDrive() serial_numbers = [] for disk in disks: serial_numbers.append(disk.SerialNumber) return serial_numbers disk_serials = get_disk_serial() for serial_number in disk_serials: print("硬盘序列号: " + serial_number) ``` 在上述代码,我们首先导入`wmi`模块,然后定义一个名为`get_disk_serial()`的函数,用于获取硬盘序列号。在函数内部,我们使用`wmi.WMI()`创建了一个WMI对象,然后使用`c.Win32_DiskDrive()`获取所有硬盘信息。 接下来,我们使用一个循环遍历所有硬盘,并获取它们的序列号,将这些序列号保存在一个列表。最后,我们返回这个列表。 在主程序,我们调用`get_disk_serial()`函数来获取硬盘序列号,并使用一个循环打印每个硬盘序列号。 请注意,这段代码只适用于Windows系统。对于其他操作系统,获取硬盘序列号的方法可能会有所不同。 ### 回答3: 在Python,可以使用`psutil`库来获取硬盘序列号。 `psutil`是一个跨平台库,它允许我们获取系统相关信息,包括CPU、内存、磁盘、网络等。 首先,我们需要确保已经安装了`psutil`库。可以使用以下命令来安装它: ``` pip install psutil ``` 接下来,我们可以使用如下代码来获取硬盘序列号: ```python import psutil def get_disk_serial(): partitions = psutil.disk_partitions() for partition in partitions: try: disk = psutil.disk_usage(partition.mountpoint) disk_serial = disk.serial_number if disk_serial: return disk_serial except Exception: pass return None serial_number = get_disk_serial() if serial_number: print("硬盘序列号为:", serial_number) else: print("未能获取硬盘序列号") ``` 上述代码,`psutil.disk_partitions()`函数用于获取系统的分区信息。然后,我们遍历每个分区并使用`psutil.disk_usage()`函数来获取磁盘的使用情况。`disk.serial_number`属性可用于获取磁盘的序列号。如果找到了有效的序列号,则返回它。 需要注意的是,对于某些操作系统或系统配置,获取硬盘序列号可能受到限制或不可行。在这种情况下,上述代码可能返回`None`。 上述代码可以在Windows、Linux和Mac操作系统上运行,并返回硬盘序列号(如果可获取)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘庆豪2007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值