利用python生成破解字典

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

利用 itertools生成字典,而后使用zipfile模块,进行解密操做。spa

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)+"\n")

dic.close()

打开dictionary这个文件,能够看到生成的密码。code

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

下面进行解压操做:ip

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

# 压缩文件的路径
path = r'D:\py\test\1.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('\n')
        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)

由于是加密文件,因此用生成的密码文件  逐行读取,尝试密码,最后解压成功。utf-8

 

现实状况中,对于密码的组成可能没有任何线索,因此须要对各类状况去尝试。get

相关文章
相关标签/搜索