利用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代码检查工具pylint 让你的python更规范
Sep 05 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
利用aardio给python编写图形界面
Aug 21 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
对pandas中to_dict的用法详解
Jun 05 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
python plotly画柱状图代码实例
Dec 13 Python
NumPy排序的实现
Jan 21 Python
Python 图片添加美颜效果
Apr 28 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
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
PHP学习之数组值的操作
2011/04/17 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php统计文章排行示例
2014/03/04 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
JavaScript中this用法学习笔记
2019/03/17 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
Python正则表达式经典入门教程
2017/05/22 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
Python devel安装失败问题解决方案
2020/06/09 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
初中政治教学工作总结
2015/08/13 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript