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 批量加密压缩文件相关推荐

  1. Python 创建加密压缩文件

    Python 创建加密压缩文件 1. 配置ZLib http://www.winimage.com/zLibDll/minizip.html 下载之后将 zlibwapi.dll 放在 demo/目录 ...

  2. 使用Python批量修改PPTX文件中文本框格式

    问题描述:最近正在整理Python教材的配套PPT,原来的PPT是4:3的,考虑到现在很多屏幕都是宽屏的,于是打算重新整理一下.对于正常的幻灯片,直接在"页面设置"中修改一下就可以 ...

  3. 用Python创建gzip压缩文件

    用Python创建gzip压缩文件 准备把所有文章中的图片链接全部更改到二级域名上.因为数据量比较大,为了方便修改,先将数据库内容导出为数据库脚本文件(后缀名为.sql),直接批量替换后再通过phpM ...

  4. Python批量设置pptx文件中文本框边框与填充样式(含20分钟视频讲解)

    近期会议: 10月30-11月1日 全国高校Python课程高级研修班(苏州) 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清 ...

  5. Python工具源码,Python批量提取PPT文件中的图片

    在办公场景当中,同样也有这样一个需求,那就是快速批量把PPT文件中的图片提取出来,毕竟一个个点击另存为太过于繁琐,以及耗费时间,前面本渣渣分享过如何应用Python批量提取PDF文件中的图片,而这一篇 ...

  6. python批量pdf转word,python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

  7. json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?

    本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...

  8. python读取txt文件代码-python批量处理txt文件的实例代码

    通过python对多个txt文件进行处理 读取路径,读取文件 获取文件名,路径名 对响应的文件夹名字进行排序 对txt文件内部的数据相应的某一列/某一行进行均值处理 写入到事先准备好的Excel文件中 ...

  9. python下载文件并改名_第46p,8行代码,用Python批量重命名文件

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...

最新文章

  1. 看似简单但容易忽视的编程常识
  2. html文字超链接不让变色,css不让超链接变色怎么设置?
  3. MFC中OnCtlColor的用法(改变控件颜色)
  4. html表ge模板_精选甘特图模板,丰富又好用
  5. 工作70:验证放在直接父级
  6. HttpContext HttpRuntime
  7. iPhone13 系列售价曝光:没有涨价;曝华为P50系列7月29日发布;丁磊称专业比学校更重要:你同意吗?|极客头条...
  8. 移动web-使一个盒子水平垂直居中的六种方法
  9. SharePoint 2010 获取列表全部定义方法
  10. linux删除所有python进程,linux 下python进程查看及关闭
  11. 【概率密度函数估计】--- 最大似然估计与Parzen窗函数画法
  12. Windows下C语言多线程函数_beginthread简单入门应用例子
  13. 感知层在物联网中的重要性
  14. 5款自动爬取数据的神器!
  15. 第02章 前馈神经网络
  16. 谷粒商城P46 gulimall-gateway刷新验证码出现503错误
  17. 计算机主板提炼金,你知道如何从废旧主板中提炼金子吗?
  18. 【转载】如何用Python发送Email邮件?
  19. 贵阳python培训价格
  20. 未来计算机网络在医学上的发展,论述计算机网络技术在医学技术中的发展和作用.doc...

热门文章

  1. 【云服务】如何让你写的小程序在多平台(投放到支付宝、淘宝、钉钉、WX、H5等多个平台)上运行?
  2. git连接远程仓库拉去代码——阿里云
  3. 逆变器是什么?超全详解智能光伏逆变器的原理及市场前景
  4. 使用modbus4j通过串口解析modbus协议(java)
  5. TNT:Transformer in transformer论文精读
  6. NLP15:使用BiLSTM、BiLSTM-CRF、BiLSTM-Attention、Bert-BiLSTM-CRF进行命名实体识别
  7. 如何把pdf图片转换成txt
  8. 沙 棘 叶 中 多 糖 的 初 步 研 究
  9. OBDII车载诊断仪开发记录之一波三折(-)BlueTooth 3.0
  10. 2012北邮网研真题C-IP地址