有时你出门在外,却需要别人在你的电脑上拷东西。如何看到哪些U盘插过你的电脑?里面有什么东西?拷走了你什么东西?现在用Python写一个监控,做成一个后台服务就知道了~

  1. 首先导入需要的包

psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。

如果没有psutil这个包可以在cmd(win+R,输入cmd)中使用pip install psutil安装

import psutil
import sys
import os
import time
from datetime import datetime
  1. 获取插入U盘的信息
mobile = ""  # 移动设备盘符

# 储存当前盘的盘符
def updata():
    global mobile_letter
    try:
        part = psutil.disk_partitions()
    except:
        sys.exit(-1)
    else:
        # 驱动器分类
        for i in range(len(part)):
            tmplist = part[i].opts.split(",")
            if "fixed" in tmplist:  # 本地设备
                pass
            elif "cdrom" in tmplist:  # CD设备
                pass
            else:
                # U盘
                mobile = part[i].device[:2]
                break
  1. 这里是读取U盘的文件名,放在一个txt中,命名用当前时间,可以通过U盘内容名字的分析和两次间隔的内容变化判断出U盘的所属和拷走的文件(当然也可以拷走U盘内的文件,但是会让使用者使用起来感觉出明显的卡顿(也可能我机子撇))
# 读取U盘并复制到指定位置
def copy_file_to_disk_hidden(USB_path):
    # U盘的盘符
    usb_path = USB_path + "/"
    # 要复制到的路径
    mkdir("E:/usb_io/")
    save_path = "E:/usb_io/" + datetime.now().strftime("%Y%m%d_%H%M%S") + ".txt"
    f = open(save_path, "w", encoding='utf-8')
    # 复制U盘的内容名称
    while True:
        if os.path.exists(usb_path): 
            filelist=[]
            filenames = os.listdir(USB_path)
            for fn in filenames:
                fullfilename = os.path.join(USB_path, fn)     
                filelist.append(fullfilename)
            for j in filelist:
                f.write(str(j) + '\n')
            break
        else:
            time.sleep(1)
    f.close()
   
#创建指定位置    
def mkdir(path):
    isExists=os.path.exists(path)
    #判断结果
    if not isExists:
        #创建目录操作函数
        os.makedirs(path)
        return True
    else:
        #如果目录存在则不创建
        return False
  1. 执行(时间间隔可以根据需要自己设定)
if __name__ == "__main__":
    #读取驱动器信息
    while True:
        updata()
        if mobile != "":
            copy_file_to_disk_hidden(mobile)
            time.sleep(60)
        else:
            time.sleep(5)
  1. 完了保存为一个.py文件,然后用pyinstaller打个包为exe,如果没有pyinstaller可以在cmd中使用pip install pyinstaller安装。打包的过程是进入cmd中使用cd命令到这个.py文件的文件夹中,使用pyinstaller -F Uget.py就可在当前目录下生成.exe的可执行文件py(Uget是我的py的名字,换成自己的就行了)

PyInstaller 是一个用来将 Python 程序打包成一个独立可执行软件包,支持 Windows、Linux 和 Mac OS X

  1. 下载这两个东东:instsrv.exe和srvany.exe,将这两个工具放在C:\Windows\SysWOW64中(如果是32位的就是在System32)

链接:https://pan.baidu.com/s/1HQWMWG7TaNt8kNKYw_YYaQ 密码:2617

  1. 进入cmd,输入C:\WINDOWS\SysWOW64\instsrv.exe Uget C:\WINDOWS\SysWOW64\srvany.exe;Uget就是服务的名称,爱叫什么都可以
  2. win+r,输入regedit进入注册表,到这个路径去HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Uget,建立Parameters项目,然后到Parameters项,新建以下几个字符串值

    ----------------------Application 是服务运行的程序地址
    ----------------------AppDirectory 是程序所在文件夹路径
    (上图是我的位置)
  3. 接下来在cmd中输入shutdown -r就OK了(开玩笑的,重启就行了)。开机后打开任务管理器,就能看到这个服务了
  4. 现在插入U盘,进入我的存放目录看看

    里面就是这样的