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