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

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\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)

因為是加密文件,所以用生成的密碼文件  逐行讀取,嘗試密碼,最后解壓成功。

 

現實情況中,對於密碼的組成可能沒有任何線索,所以需要對各種情況去嘗試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM