• 暴力破解zip文件


     1 #coding=utf-8
     2 
     3 """
     4 用户输入-z参数指定要破解的zip文件,输入-d参数输入字典文件,即可暴力破解加密的zip文件
     5 """
     6 
     7 import optparse,zipfile,threading
     8 
     9 foundpassword = False   #当密码找到后,将此置为True,避免继续验证字典中的其它word,提高效率
    10 
    11 def extract_zipfile(a_zipfile,password):
    12    global foundpassword
    13    try:
    14       a_zipfile.extractall(pwd=password)  #若密码不对,会返回异常
    15       print('找到密码:',password.decode('utf-8'))
    16       foundpassword = True
    17    except:
    18       pass
    19 
    20 def main():
    21    usage = 'Usage: %prog -z <zipfile> -d <dictionaryfile>'
    22    parser = optparse.OptionParser(usage,version='v1.0')
    23    parser.add_option('-z',dest='zname',
    24                      help='待破解的zip文件')
    25    parser.add_option('-d',dest='dname',
    26                      help='指定字典文件')
    27    (options,args) = parser.parse_args()
    28    if options.zname == None or options.dname == None:
    29       print(parser.usage)
    30       exit(0)
    31    else:
    32       zname = options.zname
    33       dname = options.dname
    34    a_zipfile = zipfile.ZipFile(zname)
    35    dictFile = open(dname,'rb')
    36    for word in dictFile:
    37       password = word.strip(b'
    ')
    38       t = threading.Thread(target=extract_zipfile,args=(a_zipfile,password))
    39       t.start()
    40       if foundpassword == True:
    41          exit(0)
    42 
    43 if __name__ == '__main__':
    44    main()
    45    

    运行后的结果为:

    1 c:Python34python.exe CrackZipfile.py  -z e:Archive.zip -d e:dictionary.txt
    2 找到密码: 1q3e5t
  • 相关阅读:
    Permutation Sequence
    Anagrams
    Unique Binary Search Trees II
    Interleaving String
    Longest Substring Without Repeating Characters
    Sqrt(x)
    Maximum Product Subarray
    Jump Game II
    Container With Most Water
    C结构体的初始化和赋值
  • 原文地址:https://www.cnblogs.com/darkpig/p/5683799.html
Copyright © 2020-2023  润新知