如何使用Python破解ZIP或RAR压缩文件密码


Posted in Python onJanuary 09, 2020

这篇文章主要介绍了如何使用Python破解ZIP或RAR压缩文件密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用。想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道。本文将会利用 Python 破解压缩包的密码,这里以 ZIP/RAR 为例。

破解原理

其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile和 rarfile,这两个库提供的解压缩方法 extractall() 可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩则表示密码正确。

  • zipfile:Python 标准库,使用时直接导入即可
  • rarfile:Python 第三方库,使用时需要安装,API 文档(https://rarfile.readthedocs.io/en/latest/api.html)

利用 Pipenv 安装 rarfile 

pipenv install rarfile

最后,再将一个带有密码的压缩包放入实验环境中即可。

编码

知道原理后,编码就会非常简单了

准备密码本

「密码本」其实就是一个包含了所有可能密码的文件,用户可以手动录入,也可以用程序录入。文末还会有一个介绍。

读取压缩文件

如何使用Python破解ZIP或RAR压缩文件密码

尝试解压

先尝试不用密码解压缩,如果成功则表示压缩文件没有密码

 如何使用Python破解ZIP或RAR压缩文件密码

暴力破解

如何使用Python破解ZIP或RAR压缩文件密码

程序入口

如何使用Python破解ZIP或RAR压缩文件密码

使用

如果想要使用上述代码,我们只需在命令行执行 python main.py<filename>即可。例如 python main.py test.zip

运行结果:

如何使用Python破解ZIP或RAR压缩文件密码

扩展密码本如何获取?

看到这里,细心的小伙伴一定会发现,最核心的其实不是代码,而是「密码本」。理论上只要密码本中的密码足够多,就一定能获取到压缩包的密码,这也就是俗称的「撞库」。

如何加速破解过程?

解决了密码本的问题,深入思考的小伙伴的一定又会有新的疑问,密码本既然如此庞大,那如何加速破解的过程呢?这里给出两个思路

多线程(进程)破解

密码本如果很多且密码数量庞大时,我们可以采用多线程(进程)的方式读取密码,一个进程读一个密码本,一个线程分段读密码。当然,如果是在 python 中,建议不要采用多线程,因为 python 中的线程就是鸡肋,有兴趣的可以阅读相关资料。

利用 GPU 加速

我们以上的代码都是运行在 CPU 上的,即使开启多线程(进程)也只是利用到 CPU 的资源,但如果想要加速破解过程,我们其实还可以利用闲置的 GPU 资源。

在介绍为什么可以利用 GPU 加速前,我们需要明确一个观点,两者都为了完成计算任务而设计。

那为什么会想到使用 GPU 加速呢?这是就要说到两者的不同了:CPU 虽然有多核,但总数没有超过两位数,并且每个核的运算能力极其强大。而 GPU 的核数远超 CPU,但每个核的运算能力与 CPU 的核相比就相差甚远了。

我们可以简单的举个例子,解一道题,CPU 就是博士生,GPU 就是小学生,CPU 负责理解题目并且整理出解题的步骤以及解法,而 GPU 负责其中很简单但是数量又很大的简单运算就行了。

因此理论上在破解密码的过程中,我们完全可以使用 GPU 来加速这一过程。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现类继承实例
Jul 04 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
举例讲解Python中is和id的用法
Apr 03 Python
Python中的XML库4Suite Server的介绍
Apr 14 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Python多进程写入同一文件的方法
Jan 14 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
Python图像处理模块ndimage用法实例分析
Sep 05 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 #Python
Flask 上传自定义头像的实例详解
Jan 09 #Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 #Python
python中如何使用insert函数
Jan 09 #Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 #Python
python 解决flask 图片在线浏览或者直接下载的问题
Jan 09 #Python
Django密码存储策略分析
Jan 09 #Python
You might like
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
Python交互环境下实现输入代码
2018/06/22 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
文员自我评价怎么写
2013/09/19 职场文书
中学生在校期间的自我评价分享
2013/11/13 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
便利店投资创业计划书
2014/02/08 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
投标承诺书怎么写
2014/05/24 职场文书
建筑结构施工求职信
2014/07/11 职场文书
师德师风自查总结
2014/10/14 职场文书
个人债务授权委托书
2014/10/17 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
git stash(储藏)的用法总结
2022/06/25 Servers