欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python简单利用字典破解zip文件口令

程序员文章站 2022-03-24 23:05:46
前几天在一本书上看到一篇可以利用字典破解zip文件密码的文章,觉得比较有意思于是研究了一番,在这里分享一下原理主要是利用python里自带的zipfile库中的extractall函数来实现的,简单导...

前几天在一本书上看到一篇可以利用字典破解zip文件密码的文章,觉得比较有意思于是研究了一番,在这里分享一下

原理

主要是利用python里自带的zipfile库中的extractall函数来实现的,简单导入zipfile之后,实例化一个zipfile类。利用extractall()来解压这个文件,并在参数pwd上填入正确密码

python简单利用字典破解zip文件口令

这时我们发现执行脚本之后,fate.zip会被正确解压,而填入错误密码则会入下图一样报错

python简单利用字典破解zip文件口令因此

我们可以利用因口令不正确而抛出的异常来测试字典文件中是否有zip文件的密码,并利用try expect来处理异常信息。

代码

假定zip文件密码为fate,pwd.txt为字典文件需要注意的是python3以及不支持自动ascii码了,在extractall的pwd参数后需手动添加编码类型,# noinspection pybroadexception则是为了防止pycharm报错

提高性能

将程序模块化后,在利用多线程处理可以提高程序性能,可以利用thread来实现多线程处理

import zipfile
from threading import thread


def extractfile(zfile,password):
 # noinspection pybroadexception
 try:
 zfile.extractall(pwd=password.encode("utf=8"))
 print("password="+password)
 except exception as e:
 pass


def main():
 zfile = zipfile.zipfile(r"d:\python\fate.zip")
 passfile = open(r"d:\python\pwd.txt")
 for line in passfile.readlines():
 password = line.strip('\n')
 t = thread(target=extractfile(zfile , password))
 t.start()


if __name__ == "__main__":
 main()

利用if __name__ == "__main__"使函数只在当前模块运行,当被导入时不运行

结语

到此这篇关于python简单利用字典破解zip文件口令的文章就介绍到这了,更多相关python字典破解zip文件口令内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!