博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
optparser模块 与 ZIP爆破(Python)
阅读量:5872 次
发布时间:2019-06-19

本文共 2236 字,大约阅读时间需要 7 分钟。

optparser模块:

  为脚本传递命令参数。

初始化:

  • 带 Usage 选项(-h 的显示内容 Usage:):
>>> from optparse import OptionParser>>> usage = "usage %prog -f 
-d
" # %prog为Py文件名 >>> parser=OptionParser(usage) #这里为类添加了参数usage>>> parser.print_help()Usage: usage -f
-d
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爆破脚本:

1 # -*- coding: utf-8 -*- 2 import zipfile 3 import optparse 4 from threading import Thread 5  6  7 def extractFile(zFile, password):    #extractFile()函数 寻找与ZIP文件匹配的密码 8     try: 9         zFile.extractall(pwd = password)10         print '[+] Found password ' + password + '\n'11     except:12         pass13 14 15 def main():16     parser = optparse.OptionParser("usage %prog "+ "-f 
-d
")17 parser.add_option('-f', '--file', dest='zname', type='string', help='The zip file which you want to crack')18 parser.add_option('-d', '--dictionary', dest='dname', type='string', help='The password dictionary')19 (options, args) = parser.parse_args() #调用 parse_args() 来解析程序的命令行20 if (options.zname == None) | (options.dname == None):21 print parser.usage22 exit(0)23 else:24 zname = options.zname25 dname = options.dname26 27 zFile = zipfile.ZipFile(zname)28 passFile = open(dname)29 30 for line in passFile.readlines(): #读取字典文件31 password = line.strip('\n')32 t = Thread(target = extractFile, args =(zFile, password)) #使用线程33 t.start()34 35 36 if __name__ == '__main__':37 main()

 

转载于:https://www.cnblogs.com/Vinson404/p/7577294.html

你可能感兴趣的文章
ElasticSearch 组合过滤器
查看>>
HttpClient连接池的连接保持、超时和失效机制
查看>>
eigrp debug命令详解
查看>>
NFS配置文件
查看>>
J2ME程序员容易遇到的问题!不断更新中_2008.05.17
查看>>
实例标识助力您的应用迁上云端
查看>>
1-4 多文档界面处理(2)
查看>>
使用Weka进行数据挖掘
查看>>
《Essential Linux Device Drivers》中文版第1章
查看>>
让远程传输大文件变得更快
查看>>
WEB程序调用客户端程序
查看>>
Linux 下的 sleep
查看>>
System.Convert 的一些事
查看>>
你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(下)
查看>>
解决Maven的Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
查看>>
iOS:Xcode7下创建 .a静态库 和 .framework静态库
查看>>
complex的小困惑
查看>>
怎么样做好手机网站的优化和推广呢?
查看>>
费尔德曼的百吉饼实验:人类的诚实程度其实超出你的想象!
查看>>
sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别
查看>>