python 批量加密压缩文件
python 批量加密压缩文件
- 0x01 解决的问题
- 0x02 遇到的问题
- 0x03 代码
0x01 解决的问题
当有大批的文件,并且存放在不同的文件夹中,需要你进行加密压缩时,可参照此代码;
在代码中,由于个人需要,提取了各个文件的hash,并以文件的sha256作为最终压缩保存的文件名;
0x02 遇到的问题
1、在网上查找了python自带库,python并没有能进行加密压缩的自带库,能进行压缩的扩zipfile,看大多数网友所说加密并不生效,只能进行压缩,因此这里引用了DOS命令,通过WinRAR进行加密压缩;
2、关于通过CMD运行WinRAR的命令,请自行百度:这里仅提示自己遇到的坑:-ep当不适用该选项时,加密压缩的文件会把源文件的目录信息也包括在内;
3、WinRARpath为:WinRAR的安装路径,找到rar.exe;这里需要rar.rxr的完整路径,刚开始给rar.exe设置了环境变量,但是通过python调用DOS时出现了错误;
0x03 代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/3/25 20:37
# @Author : H
# @File : zipfilev2.pyimport os
import hashlib
import time
from shutil import copyfiledef getfielpath(path, sub):if os.path.isdir(path):# 如果绝对路径下的文件夹for i in os.listdir(path): # i文件名path2 = os.path.join(path, i) # 拼接绝对路径if os.path.isdir(path2): # 判断如果是文件夹,调用本身getfielpath(path2, sub)else:sub.append(path2)elif os.path.isfile(path):# 如果绝对路径下的文件sub.append(path)else:print("File or path doesn\'t exit")def zipFile(filepath, WinRARpath, password, apt=None):oldname = filepath.split('\\')[-1]"""获取文件的hash"""datas = {} # 结果存为json,以便后需f = open(filepath, "rb")rb = f.read()data = {'MD5': hashlib.md5(rb).hexdigest(),'SHA1': hashlib.sha1(rb).hexdigest(),'SHA256': hashlib.sha256(rb).hexdigest()}f.close()"""文件hash由文件名构成词典"""datas[oldname] = data"""以文件的sha256重命名:若不重命名则当文件名中有空格或特殊符号时,启动DOS命令会失败"""newfilename = filepath.replace(oldname, data['SHA256'])"""如果使用sha256命名的文件已存在,说明两个文件的sha256值相同,即文件重复,删除文件;否则重命名"""if os.path.exists(newfilename):os.remove(filepath)return 1else:os.rename(filepath, newfilename)filepath = newfilename"""输出压缩文件的位置,即将压缩文件输出到哪个文件夹中,压缩文件以文件的 SHA256.rar 命名"""if os.path.exists(r'D:\zipsampletemp'):passelse:os.makedirs(r'D:\zipsampletemp')outputpath = f"D:\\zipsampletemp\\{data['SHA256']}""""如果压缩文件已存在,则说明录入重复,删除源文件即可"""if os.path.exists(outputpath + ".rar"):print(f"[-]--->压缩文件已存在:\t{filepath}")os.remove(filepath)return 1"""DOS命令"""cmdzip = f"{WinRARpath} a -ep -p{password} {outputpath} {filepath}"try:# DOS调用WinRAR加密压缩文件os.popen(cmdzip)except Exception as err:print(err)with open("d:\\newsample.txt", "a", encoding="utf-8")as f:if apt:hashs = data['MD5'] + "#" + data['SHA1'] + "#" + data['SHA256'] + "#" + apt + "\n"else:hashs = data['MD5'] + "#" + data['SHA1'] + "#" + data['SHA256'] + "#" + "\n"f.writelines(hashs)def unzipFile(filepath, WinRARpath, password, flag):outputpath = "D:\\TEMPTEMP"cmdunzip = f"{WinRARpath} e -p{password} {filepath} {outputpath}"try:# DOS调用WinRAR加密压缩文件os.popen(cmdunzip)print(f"[+]==>源文件解压成功:\t{filepath}")if flag == 0:# 删除原有文件os.remove(filepath)print(f"[+]==>源文件删除成功:\t{filepath}")elif flag == 1:passexcept Exception as err:print(err)if __name__ == '__main__':WinRARpath = r"D:\WinRAR\Rar.exe"password = "这里是设置的默认压缩密码"path = r"C:\Users\WIN10\Desktop\samples\112\112\Teamspy(45个)\1578467312"# apt = 'unknown'apt = 'TeamSpy Crew'sub = []getfielpath(path, sub)for i in sub:zipFile(i, WinRARpath=WinRARpath, password=password, apt=apt)print(f"[+]===>共计压缩文件个数:\t{len(sub)}")# for i in sub:# unzipFile(i, WinRARpath=WinRARpath, password=password, flag = flag)
python 批量加密压缩文件相关推荐
- Python 创建加密压缩文件
Python 创建加密压缩文件 1. 配置ZLib http://www.winimage.com/zLibDll/minizip.html 下载之后将 zlibwapi.dll 放在 demo/目录 ...
- 使用Python批量修改PPTX文件中文本框格式
问题描述:最近正在整理Python教材的配套PPT,原来的PPT是4:3的,考虑到现在很多屏幕都是宽屏的,于是打算重新整理一下.对于正常的幻灯片,直接在"页面设置"中修改一下就可以 ...
- 用Python创建gzip压缩文件
用Python创建gzip压缩文件 准备把所有文章中的图片链接全部更改到二级域名上.因为数据量比较大,为了方便修改,先将数据库内容导出为数据库脚本文件(后缀名为.sql),直接批量替换后再通过phpM ...
- Python批量设置pptx文件中文本框边框与填充样式(含20分钟视频讲解)
近期会议: 10月30-11月1日 全国高校Python课程高级研修班(苏州) 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清 ...
- Python工具源码,Python批量提取PPT文件中的图片
在办公场景当中,同样也有这样一个需求,那就是快速批量把PPT文件中的图片提取出来,毕竟一个个点击另存为太过于繁琐,以及耗费时间,前面本渣渣分享过如何应用Python批量提取PDF文件中的图片,而这一篇 ...
- python批量pdf转word,python批量实现Word文件转换为PDF文件
本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...
- json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?
本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...
- python读取txt文件代码-python批量处理txt文件的实例代码
通过python对多个txt文件进行处理 读取路径,读取文件 获取文件名,路径名 对响应的文件夹名字进行排序 对txt文件内部的数据相应的某一列/某一行进行均值处理 写入到事先准备好的Excel文件中 ...
- python下载文件并改名_第46p,8行代码,用Python批量重命名文件
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...
最新文章
- 看似简单但容易忽视的编程常识
- html文字超链接不让变色,css不让超链接变色怎么设置?
- MFC中OnCtlColor的用法(改变控件颜色)
- html表ge模板_精选甘特图模板,丰富又好用
- 工作70:验证放在直接父级
- HttpContext HttpRuntime
- iPhone13 系列售价曝光:没有涨价;曝华为P50系列7月29日发布;丁磊称专业比学校更重要:你同意吗?|极客头条...
- 移动web-使一个盒子水平垂直居中的六种方法
- SharePoint 2010 获取列表全部定义方法
- linux删除所有python进程,linux 下python进程查看及关闭
- 【概率密度函数估计】--- 最大似然估计与Parzen窗函数画法
- Windows下C语言多线程函数_beginthread简单入门应用例子
- 感知层在物联网中的重要性
- 5款自动爬取数据的神器!
- 第02章 前馈神经网络
- 谷粒商城P46 gulimall-gateway刷新验证码出现503错误
- 计算机主板提炼金,你知道如何从废旧主板中提炼金子吗?
- 【转载】如何用Python发送Email邮件?
- 贵阳python培训价格
- 未来计算机网络在医学上的发展,论述计算机网络技术在医学技术中的发展和作用.doc...
热门文章
- 【云服务】如何让你写的小程序在多平台(投放到支付宝、淘宝、钉钉、WX、H5等多个平台)上运行?
- git连接远程仓库拉去代码——阿里云
- 逆变器是什么?超全详解智能光伏逆变器的原理及市场前景
- 使用modbus4j通过串口解析modbus协议(java)
- TNT:Transformer in transformer论文精读
- NLP15:使用BiLSTM、BiLSTM-CRF、BiLSTM-Attention、Bert-BiLSTM-CRF进行命名实体识别
- 如何把pdf图片转换成txt
- 沙 棘 叶 中 多 糖 的 初 步 研 究
- OBDII车载诊断仪开发记录之一波三折(-)BlueTooth 3.0
- 2012北邮网研真题C-IP地址