用python写的简单zip破解器

发布于 2018-09-06  10 次阅读


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

 


>>欢迎访问山东青年政治学院信息安全协会网站<<