利用python生成破解字典

有一个加密的zip文件需要解压,目前知道密码为0-9的三位数的密码

利用 itertools生成字典,然后使用zipfile模块,进行解密操作。

import itertools as its
words = "1234567890"
r = its.product(words,repeat=3)
dic = open("dictionary.txt",'a')
for i in r:
    dic.write("".join(i)+"
")

dic.close()

打开dictionary这个文件,可以看到生成的密码。

its.product(words, repeat=6)是这段代码最主要的部分,从给定的字母表中返回选择的列表。由于本例中密码长度为3位,所以此处设定了重复3次(repeat=3)

下面进行解压操作:

# coding=utf-8
import zipfile
import os
from threading import Thread
import time

# 压缩文件的路径
path = r'D:py	est1.zip'


# password='1234'

def pojie_zip(path, password):
    if path[-4:] == '.zip':
        # path = dir+ '\' +file
        # print path
        zip = zipfile.ZipFile(path, "r", zipfile.zlib.DEFLATED)
        # print zip.namelist()
        try:
            # 若解压成功,则返回True,和密码
            zip.extractall(path='D:\py\test\', members=zip.namelist(), pwd=password)
            print ' ----success!,The password is %s' % password
            zip.close()
            return True
        except:
            pass  # 如果发生异常,不报错
        print 'error'


def get_pass():
    # 密码字典的路径
    passPath = 'D:\py\test\dictionary.txt'
    passFile = open(passPath, 'r')
    for line in passFile.readlines():
        password = line.strip('
')
        print 'Try the password %s' % password
        if pojie_zip(path, password):
            break
    passFile.close()


if __name__ == '__main__':
    start = time.clock()
    get_pass()
    print "done (%.2f seconds)" % (time.clock() - start)

因为是加密文件,所以用生成的密码文件  逐行读取,尝试密码,最后解压成功。

现实情况中,对于密码的组成可能没有任何线索,所以需要对各种情况去尝试。

原文地址:https://www.cnblogs.com/jinjidedale/p/7083589.html