zipfile模塊與線程

zipfile庫

ZipFile.extract(member[,path[,pwd]])
將zip文檔內的指定文件解壓到當前目錄。參數member指定要解壓的文件名稱或對應的ZipInfo對象;參數path指定了解析文件保存的文件夾;參數pwd爲解壓密碼。

在這裏插入圖片描述
在這裏插入圖片描述

#!/usr/bin/env python
#Author:Rouzi Date:2019/12/23
import zipfile
def extractFile(zFile,password):
    try:
        zFile.extractall(pwd=password)
        return password
    except:
        return
def main():
    zFile = zipfile.ZipFile('evil.zip')
    passFiel = open('dictionary.txt')
    for line in passFiel.readlines():
        password = line.strip('\n')
        guess = extractFile(zFile,password)
        if guess:
            print ("[+]password="+password+'\n')
            exit(0)
if __name__=='__main__':
    main()
         

在這裏插入圖片描述

線程

在線程可以同時測試多個口令,而不是逐個測試,提高腳本性能。

#!/usr/bin/python
#Author:Rouzi Date:2019/12/23
import zipfile
import optparse
from threading import Thread
def extractFile(zFile,password):
    try:
        zFile.extractall(pwd=password)
        print ("[+]Found password="+password)
    except:
        pass
def main():
    parser = optparse.OptionParser("usage%prog "+"-f <zipfile> -d <dictionary>")
    parser.add_option('-f', dest='zname',type='string',help='specify dictionary file')
    parser.add_option('-d', dest='dname',type='string',help='specify dictionary file')
    (options,args)=parser.parse_args()
    if (options.zname == None) | (options.dname == None):
        print (parser.usage)
        exit(0)
    else:
        zname = options.zname
        dname = options.dname
    zFile = zipfile.ZipFile(zname)
    passFile = open(dname)
    for line in passFile.readlines():
        password = line.strip('\n')
        t = Thread(target=extractFile,args=(zFile,password))
        t.start()
if __name__ == '__main__':
    main()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章