Python 获取 USB 设备信息
在 Python 中,有几种方法可以获取连接到计算机的 USB 设备信息。以下是几种常用的方法:
方法一:使用 pyusb 库
import usb.core
import usb.util
# 列出所有 USB 设备
devices = usb.core.find(find_all=True)
for device in devices:
print(f"设备: {device}")
print(f"ID: {hex(device.idVendor)}:{hex(device.idProduct)}")
print(f"制造商: {usb.util.get_string(device, device.iManufacturer)}")
print(f"产品: {usb.util.get_string(device, device.iProduct)}")
print("-" * 40)
安装 pyusb:
pip install pyusb
方法二:使用 psutil 库(跨平台)
import psutil
# 获取所有 USB 设备
usb_devices = [d for d in psutil.disk_partitions() if 'removable' in d.opts]
for device in usb_devices:
print(f"设备: {device.device}")
print(f"挂载点: {device.mountpoint}")
print(f"文件系统类型: {device.fstype}")
print(f"选项: {device.opts}")
print("-" * 40)
安装 psutil:
pip install psutil
方法三:在 Windows 上使用 WMI
import wmi
c = wmi.WMI()
# 获取 USB 设备
for device in c.Win32_USBControllerDevice():
print(f"设备ID: {device.Dependent.PNPDeviceID}")
print(f"描述: {device.Dependent.Description}")
print(f"状态: {device.Dependent.Status}")
print("-" * 40)
安装 WMI:
pip install wmi
方法四:在 Linux 上使用 lsusb 命令
import subprocess
result = subprocess.run(['lsusb'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
方法五:使用 platform-specific 方法
Windows 版本
import winreg
def get_usb_devices():
devices = []
reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
key = winreg.OpenKey(reg, r"SYSTEM\CurrentControlSet\Enum\USB")
for i in range(winreg.QueryInfoKey(key)[0]):
subkey_name = winreg.EnumKey(key, i)
subkey = winreg.OpenKey(key, subkey_name)
for j in range(winreg.QueryInfoKey(subkey)[0]):
subsubkey_name = winreg.EnumKey(subkey, j)
devices.append(f"{subkey_name}\\{subsubkey_name}")
return devices
usb_devices = get_usb_devices()
for device in usb_devices:
print(device)
Linux 版本
import os
def get_usb_devices():
return [d for d in os.listdir('/dev') if d.startswith('sd')]
usb_devices = get_usb_devices()
print("连接的USB存储设备:", usb_devices)
方法六:使用 pyudev (Linux)
import pyudev
context = pyudev.Context()
for device in context.list_devices(subsystem='usb'):
print(f"设备: {device.device_node}")
print(f"厂商ID: {device.get('ID_VENDOR_ID')}")
print(f"产品ID: {device.get('ID_MODEL_ID')}")
print(f"厂商: {device.get('ID_VENDOR')}")
print(f"产品: {device.get('ID_MODEL')}")
print("-" * 40)
安装 pyudev:
pip install pyudev
局域网U盘/硬盘连接记录系统
下面提供一个完整的解决方案,包含PyQt图形界面、客户端和服务器功能。这个系统将允许用户通过图形界面查看所有局域网内主机的U盘/硬盘连接记录。
系统架构
-
服务器端:接收并存储所有客户端的USB连接记录
-
客户端:监控本地USB设备变化并上报服务器
-
管理界面:PyQt实现的GUI,用于查看和分析记录
完整代码实现
1. 服务器端 (带PyQt界面)
# server_gui.py
import sys
import socket
import sqlite3
from datetime im

最低0.47元/天 解锁文章
2731

被折叠的 条评论
为什么被折叠?



