简单zip破解器
首先介绍一下optparse模块**
optparse是一个功能强大的处理命令行函数。
简单流程**
首先导入模块,创建OpertionParser对象
import optparse
parser=optparse.OptionParser()
然后用add_options()来定义命令行参数
parser.add_options('-f',dest='dname')
还有很多参数这里就不一一列举了,想了解具体的可以访问
optparse
*当你定义完命令行参数之后,就可以使用parse_args()来解析命令行了
(options,args)=parser.parse_args()
注: 你也可以传递一个命令行参数列表到 parse_args();否则,默认使用 sys.argv[1:]。
parse_args() 返回的两个值:
options,它是一个对象(optpars.Values),保存有命令行参数值。只要知道命令行参数名,如 file,就可以访问其对应的值: options.file 。
args:它是一个由 positional arguments 组成的列表。
具体代码如下:
import zipfile #导入对zip文件的处理模块
from threading import Thread #当如线程模块
import optparse #导入命令行处理模块
def extractzipfile(zipfile1,password): #这里为了方便定义了一个zip解密函数
zfile=zipfile.ZipFile(zipfile1) #zipfile1接收你要破解的zip文件名,并定义一个zfile对象
try: #这里使用了异常处理机制
zfile.extractall(pwd=password.encode())#当密码正确时,就会自动解压
print( password) #这里会输出暴力破解得到的密码
except:
pass
def main():
parser=optparse.OptionParser('usage: %prog'+'-f <zipfile> -d <dictionary>')#帮助提示信息
parser.add_option('-f',dest='zname')#定义了-f和-d选项来接收zip文件和字典文件
parser.add_option('-d',dest='dname')
(options,args)=parser.parse_args()#解析命令行
if (options.zname==None) | (options.dname==None):
print(parser.usage)#输出帮助提示信息
exit(0)
else:
zname=options.zname
dname=options.dname
with open(dname,'r') as f:
for i in f:
pawwwd=i.strip()#这里我比较疑惑,网上都说要使用strip('\n或\n\r'),我试了,都没法输出正确密码,而什么都没加的话,却成功了,不知道怎么回事 哎~
## p=extractzipfile('mima.zip',pawwwd)
t=Thread(target=extractzipfile,args=(zname,pawwwd))#这里通过线程提高效率
t.start()
if __name__=='__main__':
main()
作为一个刚入门python的小白,可能有很多不足的地方,希望各位大神指正。