Python编程:局域网U盘/硬盘连接记录系统

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盘/硬盘连接记录。

系统架构

  1. 服务器端:接收并存储所有客户端的USB连接记录

  2. 客户端:监控本地USB设备变化并上报服务器

  3. 管理界面:PyQt实现的GUI,用于查看和分析记录

完整代码实现

1. 服务器端 (带PyQt界面)

# server_gui.py
import sys
import socket
import sqlite3
from datetime im
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值