利用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爬虫之正则表达式
Feb 17 Python
python实现多线程抓取知乎用户
Dec 12 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
python实现批量图片格式转换
Jun 16 Python
python微信撤回监测代码
Apr 29 Python
python和c语言的主要区别总结
Jul 07 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python支付宝支付示例详解
Aug 22 Python
python学习笔记之多进程
Aug 06 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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/06/09 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
Python的迭代器和生成器
2015/07/29 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
人工神经网络算法知识点总结
2019/06/11 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
美国第一香水网站:Perfume.com
2017/01/23 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
医学专业个人求职自荐信格式
2013/09/23 职场文书
法学专业个人求职信
2013/09/26 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
前处理组长岗位职责
2014/03/01 职场文书
电影地道战观后感
2015/06/04 职场文书
工作态度怎么写
2015/06/25 职场文书
队名及霸气口号大全
2015/12/25 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android
JavaScript文档对象模型DOM
2021/11/20 Javascript
vue 给数组添加新对象并赋值
2022/04/20 Vue.js