利用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 相关文章推荐
Python中利用函数装饰器实现备忘功能
Mar 30 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
Python-split()函数实例用法讲解
Dec 18 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
详解Python如何批量采集京东商品数据流程
Jan 22 Python
Python使用永中文档转换服务
May 06 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 similar_text()函数的定义和用法
2016/05/12 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python实现自动上京东抢手机
2018/02/06 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
Python中常见的数制转换有哪些
2020/05/27 Python
python中字典增加和删除使用方法
2020/09/30 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
医学院毕业生自荐信范文
2014/03/06 职场文书
水毁工程实施方案
2014/04/01 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
医生见习报告范文
2014/11/03 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
搞笑结婚保证书
2015/05/08 职场文书
工作报告范文
2019/06/20 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
Python实现byte转integer
2021/06/03 Python
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android