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