zip密码暴力破解[单线程]

根据网上一些使用py3破解zip密码的教程,这里记录我实现的几个过程和遇到的问题

问题:

1.zip压缩包,必须是zip老版本的否则无法破解

2.zip密码的格式如果不是ascii的可能会破解失败

3.破解得到密码后,不会自动停止,我已经改进

源码:

import optparse
import zipfile
def extract_zip(zFile,password):
    try:
        #pwd需要的是一个byte类型的 我们需要转换不然是破解不出来密码的
        print("[+][{Pass}] Cracking.....".format(Pass=password));

        zFile.extractall(pwd=password.encode("ascii"));
       #如果解压成功 返回密码 如果失败 就抛出异常
        return password;
    except:
        pass
def main():
    #设置help
    parser = optparse.OptionParser("usage -f  -d ");
    #绑定参数 -f =》zname -d =》dname
    parser.add_option('-f',dest='zname',type='string',help='specify zip file');
    parser.add_option('-d',dest='dname',type='string',help='specify dict file');
    #不知道干啥的
    (options,arg) = parser.parse_args()
    #如果参数为空就打印刚设置的help信息退出
    if(options.zname == None) | (options.dname == None):
        print (parser.usage);
        exit(0);
    else:
  
        zname = options.zname;
        dname = options.dname;
    #创建zip对象 一会需要传给extract_file函数
    zFile = zipfile.ZipFile(zname);
    #打开字典文件(*.*)
    passFile = open(dname);
    #从字典文件中以list的方式读到line变量中 并去除空格和换行符
    for line in passFile.readlines():
        password = line.strip();
        #传入刚才创建的zip对象和循环读取的密码 
        gress = extract_zip(zFile,password); 
        #如果密码返回到gress中就打印出密码 停止循环
        if gress:
            print("\033[0;31mPassword Found:\033[0m",password);
            exit();

if __name__ == '__main__':
    main();

运行结果:

zip密码暴力破解[单线程]_第1张图片

知识点:

1.optparse库的使用

2.zipfile库的使用

参考资料:

https://blog.csdn.net/waiting_ForLove/article/details/78231289

视频:

https://www.youtube.com/watch?v=L8UleqdNR3M

 

 

你可能感兴趣的:(Python)