小白也可以轻松破解被加密的ZIP口令啦

零基础学黑客,搜索公众号:白帽子左一

作者:掌控安全—暗箭

不管是刚刚接触python,还是没有接触过python的同学,

在浏览本篇文章时应该都不会感觉到费力。(python2.7.6版本以上)

我会尽量详细直白的进行讲解,使得即使是一个没有python编码基础的小白,在阅读完本篇文章后,大脑中也会产生如何去构建一个脚本的思路。

希望这篇文章能够提升你们对python的兴趣,

了解python构建脚本时的基本思维,并且感受一下python语言的魅力所在吧。

你将难以想象,通过Python仅仅需要几十行的代码和一本好用的字典就能够轻松破解被加密的压缩包文件。

言归正传,我们来看一下我们是如何一步步构建脚本框架,修改完善脚本,并最终实现口令破解的吧!!!

开始

我们先创建一个文件,将其命名为“zip1.py”,打开文件后便开始了我们的编程之旅。

在此之前,由于是在实验环境,所以我们还需要创建一个含有口令的压缩包:密码设置为123456 并将其命名为”a.zip”

图片

我们在尝试读取其中文件时,便会要求我们输入响应的口令:

图片

下面我们就要了解,是什么原理让脚本运行起来时能够实现密码的破解呢?

我们打开刚刚创建的“zip1.py”,然后再里面输入以下代码:

import zipfile
zFile = zipfile.ZipFile("a.zip")
zFile.extractall(pwd="123456")

我们首先在第一行调用了python中的zipfile库。

zipfile库简单来说可以让我们实例化压缩文件,并且提供将其破解的函数。

导入库后,用带有口令保护的zip文件的文件名,实例化一个新的ZipFile类。

要解压这个ZIP文件 我们需要用的zipfile库中的“extractall()”函数

pwd就是压缩包的密码

来运行一下脚本,我们发现脚本会将破解后的文件解压,并且存放在我们的根目录下。

图片

现在我们已经了解了破解流程,接下来就可以打造属于我们自己的工具了!

我们在破解的时候当然不可能逐一去输入账号密码,这样太费劲了!

所以我们需要拥有一本属于自己zip爆破字典(1.txt)

有了字典之后,我们将字典中的密码遍历到password变量中并对之前的代码进行一下修改:

#coding=utf-8
import zipfile

zFile = zipfile.ZipFile("a.zip") #破解的目标ZIP文件
passFile=open("1.txt") #这是我们的字典

for line in passFile:
 password=line.strip("\n")
 zFile.extractall(pwd=password
ziperello zip 密码 破解有一种破解方法叫做Known plaintext attack。市面上的密码破解软件几乎都带有这个功能。操作方法就是找到加密压缩包中的任意一个文件,用同样的压缩软件同样的压缩方式压缩成一个不加密的包,然后把这两个压缩包进行比较,这样就能把整个加密压缩包全部还原成未加密的形式。 原理是这样的:你输入的密码,首先被转换成3个32bit的key,所以可能的key 的组合是2^96,这是个天文数字,如果用暴力穷举的方式是不太可能的,除非你的密码比较短或者有个厉害的字典。压缩软件用这3个key加密所有包中的文件,这也就是说,所有文件的key是一样的,如果我们能够找到这个key,就能解开所有的文件。如果我们找到加密压缩包中的任意一个文件,这个文件和压缩包里的文件是一样的,我们把这个文件用同样的压缩软件同样的压缩方式进行无密码的压缩,得到的文件就是我们的Known plaintext。用这个无密码压缩包和有密码压缩包进行比较,分析两个包中相同的那个文件,抽取出两个文件的不同点,就是那3个key了,如此就能得到key。两个相同文件在压缩包中的字节数应该相差12个byte,就是那3个key了。虽然我们还是无法通过这个key还原出密码,但是我们已经可以用这个key解开所有的文件,所以已经满足我的要求了,而且要以前的密码也没什么用呀,我只要文件。 其实很简单,只要你能找到一个相同的文件,就万事大吉了! 所以我用Advanced ZIP Password Recovery(Crack了的)选择Known plaintext attack。用了2分钟就找到了key,然后用了20分钟把我的那个700M的压缩包解开,搞定!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值