python 实现zip文件的密码破解(笔记)

前言:

这个工具不是一个很实用的工具,不过还是在有些情景下会用到。同时,我们慢慢的从基础,一点点去写自己的脚本,每天进步一点,我们就会感到很从充实,也是为了避免我们以后有了思路,又四处百度,再构造代码,而从其中浪费自己的时间。
建议买一本 《Python绝技:运用Python成为顶级黑客》,慢慢敲里面的代码。

思路:

其实就是爆破,就是我们自己准备好一个由好多密码组成的字典文件,然后用脚本模拟打开文件然后输入密码,如果正确,返回密码,如果错误,继续下一个密码的测试

1.新建一个压缩文件zip

1.注意是zip格式的
2.压缩的时候,选择传统加密(现在的加密,库文件没办法打开)
python 实现zip文件的密码破解(笔记)_第1张图片
image.png

2.准备好字典文件

python 实现zip文件的密码破解(笔记)_第2张图片
image.png

3.代码的编写

这里我不像上一次直接贴代码了,python这门语言其实和我们小时候玩的搭积木差不多,只是可能要记住的多一些,只要我们多使用,就可以理解清楚,就像lol,王者的各个技能的了解和不同英雄的配合。

3_1.zip文件的读取和解密函数

#文件读取
zFile = zipfile.ZipFile('filename.txt')
#解密函数  extractFile(pwd=password)
#一个读取文件,然后用自己密码打开的例子
password='ceshi'
def extractFile(zFile,password):
    try:
        zFile.extractall(pwd=password)
        print '[+] Password ='+password+'\n'
    except Exception,e:
        pass
这个我们以后会经常用到,主要用来爆破,如果正常,就打印测试A,程序出错,就打印error
try:
       print '测试a'
except Exception,e:
        print 'error'

3_2:读取文件:

#读物文件函数  open('文件名字','r')
#r那里有3种,[a+]--追加 [w]--写入 [r]--读取
#passFile.readlines()  读取文件的每一行
#passFile.close()    关闭这个文件
    passFile = open('filename.txt','r')
    for line in passFile.readlines():
        password = line.strip('\n')
                print password
        passFile.close()


3_3:帮助选项库 optparse

这个效果是这样的


python 实现zip文件的密码破解(笔记)_第3张图片
image.png
#optarse.OptionParser("")   这个函数按照下面的来整
#add_option()种
  #-f  选项 
#dest='zname'  是紧随-f后面的文件
#type='string'   是选项类型  
#help  =  是帮助文档
#cmd 执行  zip_pro_py -f ceshi.zip -d password.txt
#options,args=parser.parse_args()     运行这个方法,把属性分别赋值给别的options,args
    parser = optparse.OptionParser("usage%prog "+"-f  -d ")
    parser.add_option('-f',dest='zname',type='string',help='specify zip file')
    parser.add_option('-d',dest='dname',type='string',help='specify dictionary file')
    options,args=parser.parse_args()

3_4:

我们怎么搭好积木呐:
1.一个循环读取密码文件中的信息
2.用解压模块来验证密码,正确返回密码,错误pass,继续下一个

3__5:

具体代码:


import zipfile
from threading import Thread
import optparse
'''

exit(0)   正常退出
学会利用try  爆破中要么打印密码,要不pass

from threading import Thread
#建立进程
t = Thread(target=函数,args=(参数A,参数B))
t.start()   开启进程

optparse:
add_option('-f',dest='',type='',help='')
-f 参数
dest   会提取那个参数然后作为变量等待下面的调用
help    帮助
OptionParser("useage%prog "+"-f ")
parseer.parse_args()  传递进来的参数


测试中,zip只有以前的加密方法,extractall能够解开
'''

def extractFile(zFile,password):
    try:
        zFile.extractall(pwd=password)
        print '[+] Password ='+password+'\n'
    except Exception,e:
        pass

def main():
    parser = optparse.OptionParser("usage%prog "+"-f  -d ")
    parser.add_option('-f',dest='zname',type='string',help='specify zip file')
    parser.add_option('-d',dest='dname',type='string',help='specify dictionary file')
    options,args=parser.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,'r')
    for line in passFile.readlines():
        password = line.strip('\n')
        t = Thread(target=extractFile,args=(zFile,password))
        t.start()
    
    passFile.close()
    zFile.close()
if __name__ == '__main__':
    main()

zFile = zipfile.ZipFile('filename.txt')

结束

当你完成一个小物件的时候,你就会继续急需下下一个,这叫上瘾,欢迎上瘾。

你可能感兴趣的:(python 实现zip文件的密码破解(笔记))