有时你出门在外,却需要别人在你的电脑上拷东西。如何看到哪些U盘插过你的电脑?里面有什么东西?拷走了你什么东西?现在用Python写一个监控,做成一个后台服务就知道了~
- 首先导入需要的包
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。
如果没有psutil
这个包可以在cmd(win+R,输入cmd)中使用pip install psutil
安装
import psutil
import sys
import os
import time
from datetime import datetime
- 获取插入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
- 这里是读取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
- 执行(时间间隔可以根据需要自己设定)
if __name__ == "__main__":
#读取驱动器信息
while True:
updata()
if mobile != "":
copy_file_to_disk_hidden(mobile)
time.sleep(60)
else:
time.sleep(5)
- 完了保存为一个.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
- 下载这两个东东:instsrv.exe和srvany.exe,将这两个工具放在C:\Windows\SysWOW64中(如果是32位的就是在System32)
- 进入cmd,输入
C:\WINDOWS\SysWOW64\instsrv.exe Uget
C:\WINDOWS\SysWOW64\srvany.exe
;Uget就是服务的名称,爱叫什么都可以 - win+r,输入
regedit
进入注册表,到这个路径去HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Uget
,建立Parameters项目,然后到Parameters项,新建以下几个字符串值
----------------------Application 是服务运行的程序地址
----------------------AppDirectory 是程序所在文件夹路径
(上图是我的位置) - 接下来在cmd中输入
shutdown -r
就OK了(开玩笑的,重启就行了)。开机后打开任务管理器,就能看到这个服务了 - 现在插入U盘,进入我的存放目录看看
里面就是这样的