optparser模块:
为脚本传递命令参数。
初始化:
- 带 Usage 选项(-h 的显示内容 Usage:):
>>> from optparse import OptionParser
>>> usage = "usage %prog -f <zipfile> -d <dictionary>" # %prog为Py文件名
>>> parser=OptionParser(usage) #这里为类添加了参数usage
>>> parser.print_help()
Usage: usage -f <zipfile> -d <dictionary> Options:
-h, --help show this help message and exit
- 不带 Usage 选项:
>>> parser = OptionParser()
添加选项:
add_option:()
- action: 验证输入数据类型是否和type 匹配,并将符合要求的这个参数存储到dest变量中。有以下几个属性:
store 默认值。
store_false 标记 配合下边的那个store_true来进行代码的“标记”,辅助流程控制。
store_true 标记。
- type : 参数数据类型,如-f,-d等的接下来的那个参数的数据类型,有string,int,float等等。
- dest : 保存临时变量,其值可以作为 options 的属性进行访问。存储的内容就是如-f,-d 等紧挨着的那个参数内容。
- default : 给dest的默认值。
- help: 提供用户友好的帮助信息,解释add_option方法的功能。
>>>parser.add_option('-f', '--file', dest='zname', type='string', help='zip file name')
>>>parser.add_option('-d', '--dictionary', dest='dname', type='string', help=' password dictionary')
ZIP爆破脚本:
# -*- coding: utf-8 -*-
import zipfile
import optparse
from threading import Thread def extractFile(zFile, password): #extractFile()函数 寻找与ZIP文件匹配的密码
try:
zFile.extractall(pwd = password)
print '[+] Found password ' + password + '\n'
except:
pass def main():
parser = optparse.OptionParser("usage %prog "+ "-f <zipfile> -d <dictionary>")
parser.add_option('-f', '--file', dest='zname', type='string', help='The zip file which you want to crack')
parser.add_option('-d', '--dictionary', dest='dname', type='string', help='The password dictionary')
(options, args) = parser.parse_args() #调用 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()