利用Python暴力破解zip文件口令的方法详解


Posted in Python onDecember 21, 2017

前言

通过Python内置的zipfile模块实现对zip文件的解压,加点料完成口令破解

zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。

比如要读取一个Python zipfile 模块,这里假设filename是一个文件的路径:

import zipfile 
z = zipfile.ZipFile(filename, 'r') 
for i in z.infolist(): 
print i.file_size, i.header_offset

这里使用了z.infolist(), 它返回的就是压缩包内所有文件的信息,就是一个ZipInfo的列表。一个ZipInfo对象中包含了压缩包内一个文件的信息,其中比较常用的是 filename, file_size, header_offset, 分别为文件名,文件大小,文件数据在压缩包中的偏移。

准备阶段

首先你需要一个压缩文件,并且给它加上密码,样子长成这样

利用Python暴力破解zip文件口令的方法详解

利用Python暴力破解zip文件口令的方法详解

然后你就成功Get了一个自带密码的压缩文件,好了,这就结束了

暴力破解

首先我们先知道下什么是暴力破解,其实简单粗暴点来说,就是通过轮循的方式比对,我们一定都知道MD5加密,那么MD5是不可逆的,那网上那些所谓的MD5解密的网站是怎么做到的,其实也是暴力破解的方式。

举个栗子,你通过MD5加密了一段字符串 str="abc" 加密后的结果为 "3cd24fb0d6963f7d" 这么一长串别人肯定看不懂,MD5解密网站怎么做的,他们自己没事干的时候开始瞎试,把aa/cc/bb/abc 啥的都开始用MD5加密一遍,存到自己的数据库里,当你去查询的时候,他们会根据你提供的 "3cd24fb0d6963f7d" 在数据库里面比对,如果巧合的话就能找不到,大部分情况你的加密字符串稍微复杂点都找不到,这就是所谓的MD5解密,也就是暴力破解了

上代码

import zipfile #导入模块,它是做压缩和解压缩的
password="123" #我们设定的口令
zfile = zipfile.ZipFile("test.zip") #要解压缩的压缩包
zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8'))
#进行解压缩操作,path为输出的路径

我们运行一下上面的代码(当然你的加密口令要为123),会发现在桌面上已经把test.zip解压出来了,完美ending,不对还差一个暴力破解呢,自己知道密码还要破解啥有用,别着急,继续往下看

import zipfile 
zfile = zipfile.ZipFile("test.zip")
passFile=open('pwd.txt') #读取你设定的密码文件
for line in passFile.readlines():
  try:
    password = line.strip('\n')
    zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8'))
    break
  except:
    print("又错了")

pwd.txt里面内容如下

1223
abc
aaa
123

好了,这就完成了zip文件口令的暴力破解,其实只是很巧妙的利用了try except异常机制,当解压正常的时候就正常密码正常,解压失败会报出异常,动手试试

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
详解django三种文件下载方式
Apr 06 Python
python保存数据到本地文件的方法
Jun 23 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
Django 外键的使用方法详解
Jul 19 Python
python实现登录密码重置简易操作代码
Aug 14 Python
对Tensorflow中Device实例的生成和管理详解
Feb 04 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
详解Pymongo常用查询方法总结
Jan 29 Python
Python人脸识别初探
Dec 21 #Python
python中判断文件编码的chardet(实例讲解)
Dec 21 #Python
python 设置文件编码格式的实现方法
Dec 21 #Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 #Python
Python 查看文件的编码格式方法
Dec 21 #Python
python利用OpenCV2实现人脸检测
Apr 16 #Python
Python判断文件和字符串编码类型的实例
Dec 21 #Python
You might like
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
js select常用操作控制代码
2010/03/16 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
vuex的简单使用教程
2018/02/02 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python循环语句中else的用法总结
2016/09/11 Python
python如何制作缩略图
2019/04/30 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
将python安装信息加入注册表的示例
2019/11/20 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python Pexpect模块的使用
2020/12/25 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
物业电工岗位职责
2013/11/20 职场文书
运动会广播稿60字
2014/01/15 职场文书
医学生个人求职信范文
2014/02/07 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
销售团队获奖感言
2014/08/14 职场文书
2014年科技工作总结
2014/11/26 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL