利用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

相關文章
相關標籤/搜索