如何使用Python解决简单的zip文件解压密码
如何使用Python解决简单的zip文件解压密码
小编给大家分享一下如何使用Python解决简单的zip文件解压密码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
文件创建
首先测试文件为test.txt(仅包含单行文本),压缩后文件为test.zip,压缩密码为2340,压缩后删除目录下的txt文件。。
上图注意勾选传统加密。
纯数字密码
指的是不用0开头的数字密码,0开头见后面的字母组合。原理就是zipfile模块解压压缩文件时,一旦密码不正确,程序会终止,在try语句只有成功解压的密码才会执行到extract函数调用后面的语句。
代码:
importzipfileimporttimeimportthreadingstartTime=time.time()#判断线程是否需要终止flag=Truedefextract(password,file):try:password=str(password)file.extractall(path='.',pwd=password.encode('utf-8'))print("thepasswordis{}".format(password))nowTime=time.time()print("spendtimeis{}".format(nowTime-startTime))globalflag#成功解压其余线程终止flag=FalseexceptExceptionase:print(e)defdo_main():zfile=zipfile.ZipFile("test.zip",'r')#开始尝试fornumberinrange(1,9999):ifflagisTrue:t=threading.Thread(target=extract,args=(number,zfile))t.start()t.join()if__name__=='__main__':do_main()
显然,解压成功,这里提一下这种编码 密码的方式只适用于传统zip加密,winrar有一种新式的默认加密方式,是不可以的。
字母数字混合密码
这里情况密码组合太多,为了防止内存溢出,改用迭代器。这种情况费时很久,可以闲来无事挂着脚本。这里再次压缩文件,密码为python。
importzipfileimportrandomimporttimeimportsysclassMyIterator():#单位字符集合letters='abcdefghijklmnopqrstuvwxyz012345678'min_digits=0max_digits=0def__init__(self,min_digits,max_digits):#实例化对象时给出密码位数范围,一般4到10位ifmin_digits 字符的序列组合很多,需要等待。 看完了这篇文章,相信你对“如何使用Python解决简单的zip文件解压密码”有了一定的了解,如果想了解更多相关知识,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
推荐阅读
-
Python 3.12 新特性解析:模式匹配增强与性能优化实战
-
Lightly IDE 深度评测:轻量级 Python 开发工具是否适合团队协作?
-
VS Code 自定义配置:JSON 文件修改、代码片段与任务自动化脚本
-
Python 虚拟环境选择:venv、conda、poetry 的适用场景对比
-
PyCharm+GitHub Copilot:Python 开发中 AI 辅助编码的最佳实践
-
PyCharm 无法识别虚拟环境?5 步排查 Python 解释器配置问题
-
数据科学工具链:Jupyter Notebook+RStudio+Python 的协同工作流
-
Python 3.12 新特性:模式匹配增强与性能改进实战
-
Lightly IDE 适合谁?轻量级 Python 开发工具深度评测
-
Python IDE 终极对比:PyCharm vs VS Code vs Jupyter Notebook