900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 使用python 爆破加密的rar压缩文件

使用python 爆破加密的rar压缩文件

时间:2023-08-29 18:37:24

相关推荐

使用python 爆破加密的rar压缩文件

首先,关于python解压缩文件的详细介绍来自:/zhuminghui/p/11699313.html

解压 zip 文件

import zipfile'''基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]])mode:可选 r,w,a 代表不同的打开文件的方式;r 只读;w 重写;a 添加compression:指出这个 zipfile 用什么压缩方法,默认是 ZIP_STORED,另一种选择是 ZIP_DEFLATED;allowZip64:bool型变量,当设置为True时可以创建大于 2G 的 zip 文件,默认值 True;'''zip_file = zipfile.ZipFile(path)zip_list = zip_file.namelist() # 得到压缩包里所有文件for f in zip_list:zip_file.extract(f, folder_abs) # 循环解压文件到指定目录zip_file.close() # 关闭文件,必须有,释放内存

其他方法

zipfile.is_zipfile('xxx.zip') # 判断文件是否是个有效的zipfilezipfile.namelist('xxx.zip') # 列表,存储zip文件中所有子文件的path(相对于zip文件包而言的)zipfile.infolist('xxx.zip') # 列表,存储每个zip文件中子文件的ZipInfo对象zipfile.printdir() # 打印输出zip文件的目录结构,包括每个文件的path,修改时间和大小zipfile.open(name[,mode[,pwd]]) # 获取一个子文件的文件对象,可以对其进行read,readline,write等操作zipfile.setpassword(psw),为zip文件设置默认密码zipfile.testzip() # 读取zip中的所有文件,验证他们的CRC校验和。返回第一个损坏文件的名称,如果所有文件都是完整的就返回Nonezipfile.write(filename[,arcname[,compression_type]]) # 将zip外的文件filename写入到名为arcname的子文件中(当然arcname也是带有相对zip包的路径的),打开方式为w或azipfile.extract(member, path=None, pwd=None) # 解压一个zip中的文件,path为解压存储路径,pwd为密码zipfile.extractall(path[,pwd]) # 解压zip中的所有文件,path为解压存储路径,pwd为密码

解压 rar 文件

Python 本身不支持 rar 文件的解压,需要先安装相关依赖才可使用

安装 unrar 模块:pip install unrar下载安装 unrar library,网址:/rar/UnRARDLL.exe按照默认安装路径安装将安装后文件夹中的X64 文件夹加入环境变量(默认路径为C:\Program Files (x86)\UnrarDLL\x64)系统变量中新建变量,变量名输入 UNRAR_LIB_PATH,变量值为 C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll(32位系统下的变量值为C:\Program Files (x86)\UnrarDLL\UnRAR.dll)将winrar 的目录下的 unrar.exe 复制到 Python 路径的 Scripts 文件夹下重启PyCharm

基本操作

rf = rarfile.RarFile(_rarfile, mode='r') # mode的值只能为'r'rf_list = rf.namelist() # 得到压缩包里所有的文件print('rar文件内容', rf_list)for f in rf_list:rf.extract(f, folder_abs) # 循环解压,将文件解压到指定路径# 一次性解压所有文件到指定目录# rf.extractall(path) # 不传path,默认为当前目录

下面说一下我解压缩rar文件遇到的问题:

安装的unrar 模块,一直无法使用。即使按照大神讲解的一步一步做好了,程序依然无法正常运行。

山重水复疑无路之时,偶然灵光一闪,unrar.exe 复制到 Python 路径的 Scripts 文件夹下——这句话意味python其实是调用的unrar的命令来解压rar文件的。

于是上网搜索,猜想得证。

于是,在命令行输入unrar 按回车显示命令帮助如下:

(注意:之前已经将winrar程序下载,并且将unrar加到了windows的环境变量PATH中,所以可以直接使用unrar命令)

UNRAR 5.91 x64 免费软件版权所有 (C) 1993- Alexander Roshal用法:unrar <command> -<switch 1> -<switch N> <archive> <files...><@listfiles...> <path_to_extract\><Commands>e 提取文件不带压缩路径l[t[a],b]列出压缩文档内容 [technical[all], bare]p 打印文件到 stdoutt 测试压缩文档的文件v[t[a],b]详细列出压缩文档的内容 [technical[all],bare]x 解压文件带完整路径<Switches>- 停止参数扫描@[+]禁用 [enable] 文件列表ac 压缩或解压后清除压缩文档属性ad 扩展压缩文档名称到目标路径ag[format] 使用当前日期生成压缩文档名称ai 忽略文件属性ap<path>设置压缩文档内部的路径c- 禁用内容显示cfg-禁用读取配置cl 转换名称为小写cu 转换名称为大写dh 打开共享的文件ep 从名称里排除路径ep3 扩展路径为完整路径包括驱动器盘符f 刷新文件id[c,d,p,q] 禁用消息ierr发送所有压缩文档到 stderrinul禁用所有消息ioff[n] 完成一个操作后关闭电脑kb 保留损坏的已解压文件n<file> 额外管理器包含文件n@ 从 stdin 读取额外的过滤器掩码n@<list>从列表文件读取额外的过滤器掩码o[+|-] 设置覆盖模式oc 设置 NTFS 压缩属性ol[a] 将符号链接处理为链接 [absolute paths]or 自动重命名文件ow 保存或恢复文件拥有者和组p[password] 设置密码p- 不要查询密码r 递归子目录ri<P>[:<S>] 设置优先级 (0-默认,1-最小.15-最大) 和休眠时间单位为 mssc<chr>[obj] 指定字符集sl<size>处理小于指定大小的文件sm<size>处理大于指定大小的文件ta[mcao]<d> 处理那些在日期 <d> YYYYMMDDHHMMSS 之后修改过的文件tb[mcao]<d> 处理那些在日期 <d> YYYYMMDDHHMMSS 之前修改过的文件tn[mcao]<t> 处理那些时间比 <t> 更新的文件to[mcao]<t> 处理那些时间比 <t> 更老的文件ts[m,c,a,p] 保存或恢复时间(修改日期,创建日期,访问日期,保留日期)u 更新文件v 列出所有卷ver[n] 文件版本控制vp 每个卷之前暂停x<file> 排除特定文件x@ 读取文件名以便从 stdin 排除x@<list>排除在特定列表文件里列出的文件y 对所有问题回答是

根据,以上帮助,得出rar解压命令如下:

unrarx压缩文件-p密码-ad解压路径

最后,写了一个简单的python脚本,用于爆破rar压缩文件密码:

import subprocessdef unrar(password):p = subprocess.run(r'unrar x D:\Temp\1.rar -p'+ password + r' -ad D:\Temp', shell=True)if ("returncode=11" in str(p)):return Falseelse:return Truedef baopo(filedict=r'D:\Temp\mutou.txt'):with open("log.txt","w",encoding="utf-8") as logf:with open(filedict,"r",encoding="utf-8") as f:for l in f:pwd = l.strip()if unrar(pwd):print("破解完成,密码是:",pwd)with open("password.txt","a",encoding="utf-8") as tmpf:tmpf.write(pwd)breakelse:logf.write(pwd+"\n")if __name__ == '__main__':baopo()

因为本人的rar文件密码很简单,爆破字典不大,故没有必要实现多进程、多线程,大约跑了2个小时就把自己的密码爆出来了。

欢迎大佬们继续完善代码!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。