You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python获取USB设备的硬件序列号(非卷序列号)?

Python 3.6 下获取USB设备唯一硬件序列号解决方案

你遇到的NoBackendError报错是pyusb依赖的libusb动态库未在系统中安装导致的,这类需要额外后端的方案不适合给普通客户部署,优先推荐以下依赖更少的实现方案:

方案1:调用系统原生API(无额外后端依赖)

Windows 平台实现

使用兼容Python 3.6的pywin32模块调用WMI接口获取,无需安装其他系统组件:

  1. 安装对应版本依赖
    pip install pywin32==228
  2. 代码示例:
import win32com.client

def get_removable_usb_serial():
    """仅获取可移动USB存储设备的硬件序列号"""
    wmi = win32com.client.GetObject("winmgmts:")
    disk_list = wmi.InstancesOf("Win32_DiskDrive")
    usb_serials = []
    for disk in disk_list:
        if disk.InterfaceType == "USB" and disk.MediaType == "Removable Media":
            serial = disk.SerialNumber
            if serial:
                usb_serials.append(serial.strip())
    return usb_serials

# 测试调用
if __name__ == "__main__":
    print(get_removable_usb_serial())

Linux 平台实现

直接读取系统sysfs文件系统即可获取,无需安装第三方依赖:

import os

def get_removable_usb_serial():
    usb_serials = []
    usb_dev_root = "/sys/bus/usb/devices/"
    for dev_name in os.listdir(usb_dev_root):
        # 校验是否为可移动存储设备
        removable_path = os.path.join(usb_dev_root, dev_name, "removable")
        serial_path = os.path.join(usb_dev_root, dev_name, "serial")
        if os.path.exists(removable_path) and os.path.exists(serial_path):
            with open(removable_path, "r") as f:
                if f.read().strip() != "1":
                    continue
            with open(serial_path, "r") as f:
                serial = f.read().strip()
                if serial:
                    usb_serials.append(serial)
    return usb_serials

方案2:C/C++封装后Cython调用

如果需要更高的兼容性和防破解能力,可以用C++分别实现各平台的USB序列号获取逻辑,编译为动态库后通过Cython封装供Python调用,该方案的校验逻辑更难被逆向破解,适合商业软件授权场景。

授权校验优化建议

  • 不要仅校验硬件序列号,可结合U盘的VID、PID、实际容量做多维度校验,降低序列号被伪造的风险
  • 校验逻辑建议做代码混淆,避免被逆向工程直接跳过校验步骤
  • 随售的U盘建议提前批量测试,部分低质U盘可能存在硬件序列号重复或者为空的问题

内容的提问来源于stack exchange,提问作者user13441977

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:24:06