利用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实现的几个常用排序算法实例
Jun 16 Python
Python实现的飞速中文网小说下载脚本
Apr 23 Python
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
pandas DataFrame创建方法的方式
Aug 02 Python
分享PyCharm的几个使用技巧
Nov 10 Python
python爬取招聘要求等信息实例
Nov 20 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 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
SONY SRF-40W电路分析
2021/03/02 无线电
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
理解javascript闭包
2015/12/15 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
python根据出生日期返回年龄的方法
2015/03/26 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python微信公众号开发平台
2018/01/25 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
中文系师范生自荐信
2013/10/01 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
成绩报告单家长评语
2014/12/30 职场文书
个人优缺点总结
2015/02/28 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS