利用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实现linux服务器批量修改密码并生成execl
Apr 22 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
Python读写zip压缩文件的方法
Aug 29 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
Python版中国省市经纬度
Feb 11 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
构建高效的python requests长连接池详解
May 02 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
python boto和boto3操作bucket的示例
Oct 30 Python
python爬虫请求头的使用
Dec 01 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 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使HTML标签自动补全闭合函数代码
2012/10/04 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
JS高级笔记
2011/07/13 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
vue debug 二种方法
2018/09/16 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python os.access()用法实例
2019/02/18 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
python os模块在系统管理中的应用
2020/06/22 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
工作会议方案
2014/05/21 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
业务员辞职信范文
2015/03/02 职场文书
房屋质量投诉书
2015/07/02 职场文书
护士业务学习心得体会
2016/01/25 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python