上一次我们使用crypt模块制作了一个Linux的口令破解器(篇尾有链接),今天我们来制作一个Zip文件的口令破解器。
这次需要使用到的模块是:zipfile、threading、optparse
首先介绍一下 zipfile :help(zipfile) 的 output
可以通过 help(zipfile) 看到,该模块的功能还是相当强大的虽然好像平时我没怎么用得到,但帮助文档倒是洋洋洒洒一大堆,今天主要使用它的 etractall() 函数,emmm对英文感兴趣的大佬可以自己看看帮助文档,这里就不赘述了,(另:在Linux 中创建加密zip包的方法是 zip -rP 你的密码 目标文件.zip 原文件夹,-r 指递归,-P 指加密);
这个小脚本中将会使用到 threading 模块以提高软件效率;而 optparse 模块主要用于方便外部参数的输入(就比如 ping -n 50 192.168.31.221 中红色部分就是 ping 的参数);
废话不多说,先上最终版本的源码:# !/usr/bin/python
# -*- coding: utf-8 -*-
import zipfile
import optparse
from threading import Thread
def ectF(zF, passwd):
try:
zF.extractall(pwd=passwd)
print("[+] Found Password: " + bytes.decode(passwd) + "\n")
except:
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
zF = zipfile.ZipFile(zname)
pF = open(dname)
for line in pF.readlines():
passwd = str.encode(line.strip("\n"))
t = Thread(target=ectF, args=(zF, passwd))
t.start()
if __name__ == '__main__':
main()源码截图
运行效果截图:运行效果
如果各位伙伴在途中遇到了什么问题,随时可以在评论区留言或者私信阿婆主哦O(∩_∩)O