暴力破解zip加密压缩包

最近恰好有个压缩包要解密,所以稍微研究了一下该怎么去破解加密的压缩包(zip,rar在道理上是一样的)。由于现有的方法中没想到高级的破解方式,所以只有暴力破解压缩包了。
暴力破解压缩包的原理很简单,就是先制作一个密码字典,这个字典是暴力破解的核心,首先就来讲讲如何制作这样一个密码字典,对于一个加密压缩包,我们首先需要猜测的是真实密码会是哪种类型,比如说有纯数字类型(0-9)、纯字母类型(a-z,A-Z)、特殊符号(*&……%…¥)、各种类型相互夹杂的特殊类型。
下面直接上干货(以纯数字为例):

import itertools 
import string
import time
paswd_candidate_dict=list(itertools.permutations(['0','1','2','3','4','5','6','7','8','9',],4))
paswd_dict=[]
start=time.clock()
for k in paswd_candidate_dict:
    list_i=list(k)
    paswd_candidate=''.join(list_i)
    file=open('C:/Users/Admin/Desktop/i.txt','r+')
    file.read()
    file.write('\n'+paswd_candidate)
    file.close()
end=time.clock()
print("time :",round(((end-start)/60),2),"min")

上述代码中,可以看到是假设密码是由纯数字构成的,并且密码只有四位数,paswd_candidate_dict这个就是从0-9之中排列出四个数字的全排列,很明显排列出来的数字都是各不相同的,如果密码中有叠字(1111)这种的话,就需要将上述列表复制4次后再放到列表中候选,也就是说为了一次成功就要看真实密码是多少位数字,0-9就需要多少遍。OK,到这里就已经制作好了需要的密码字典。

接下来就是不断的迭代过程了,从i.txt中不断的读取每一行候选密码,送到压缩包去尝试,直到最终破解出密码。至于具体过程已经有了一位同学写出来了[密码破解]

上面的版本很容易看出,所选数字是没有重复的,所以下面是加强版的秘钥字典:

candidate_list = ['0','1','2','3','4','5','6','7','8','9']
file=open('C:/Users/Admin/Desktop/i.txt','r+')
for i in candidate_list:
    for j in candidate_list:
        for z in candidate_list:
            for k in candidate_list:
                key = i+j+z+k
                file.read()
                file.write('\n'+key)
file.close()

代码中的循环次数由密码位数决定!比如密码有四位的话,那么就有四层循环,如果是5位密码的话,那么只需要在此例上再添加一个循环即可。
candidate_list中的字符由密码字符决定,此例中假设密码由纯数字组成,如果有字幕的话,那么:candidate_list = ['0','1','2','3','4','5','6','7','8','9,'a’,'b','c',...,'z']
文中的file=open('C:/Users/Admin/Desktop/i.txt','r+')中使用的TXT需要先创建好,输入对应的绝对路径即可。
(https://blog.csdn.net/hhhhh_51/article/details/87118028)
本例仅供学习科研,千万不可用于非法途径!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值