千家信息网

如何使用Python解决简单的zip文件解压密码

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,小编给大家分享一下如何使用Python解决简单的zip文件解压密码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!文件创建首先测试文件为test.txt(仅包含单行文本),压缩后文件为
千家信息网最后更新 2025年01月21日如何使用Python解决简单的zip文件解压密码

小编给大家分享一下如何使用Python解决简单的zip文件解压密码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

文件创建

首先测试文件为test.txt(仅包含单行文本),压缩后文件为test.zip,压缩密码为2340,压缩后删除目录下的txt文件。。

上图注意勾选传统加密。

纯数字密码

指的是不用0开头的数字密码,0开头见后面的字母组合。原理就是zipfile模块解压压缩文件时,一旦密码不正确,程序会终止,在try语句只有成功解压的密码才会执行到extract函数调用后面的语句。

代码:

import zipfileimport timeimport threadingstartTime = time.time()# 判断线程是否需要终止flag = True  def extract(password, file):    try:        password = str(password)        file.extractall(path='.', pwd=password.encode('utf-8'))        print("the password is {}".format(password))        nowTime = time.time()        print("spend time is {}".format(nowTime-startTime))        global flag        # 成功解压其余线程终止        flag = False    except Exception as e:        print(e)  def do_main():    zfile = zipfile.ZipFile("test.zip", 'r')    # 开始尝试    for number in range(1, 9999):        if flag is True:            t = threading.Thread(target=extract, args=(number, zfile))            t.start()            t.join()  if __name__ == '__main__':    do_main()

显然,解压成功,这里提一下这种编码 密码的方式只适用于传统zip加密,winrar有一种新式的默认加密方式,是不可以的。

字母数字混合密码

这里情况密码组合太多,为了防止内存溢出,改用迭代器。这种情况费时很久,可以闲来无事挂着脚本。这里再次压缩文件,密码为python。

import zipfileimport randomimport timeimport sys  class MyIterator():    # 单位字符集合    letters = 'abcdefghijklmnopqrstuvwxyz012345678'    min_digits = 0    max_digits = 0     def __init__(self, min_digits, max_digits):        # 实例化对象时给出密码位数范围,一般4到10位        if min_digits < max_digits:            self.min_digits = min_digits            self.max_digits = max_digits        else:            self.min_digits = max_digits            self.max_digits = min_digits     # 迭代器访问定义    def __iter__(self):        return self     def __next__(self):        rst = str()        for item in range(0, random.randrange(self.min_digits, self.max_digits+1)):            rst += random.choice(MyIterator.letters)        return rst  def extract():    start_time = time.time()    zfile = zipfile.ZipFile("test.zip")    for p in MyIterator(5, 6):        try:            zfile.extractall(path=".", pwd=str(p).encode('utf-8'))            print("the password is {}".format(p))            now_time = time.time()            print("spend time is {}".format(now_time-start_time))            sys.exit(0)        except Exception as e:            pass  if __name__ == '__main__':    extract()

字符的序列组合很多,需要等待。

看完了这篇文章,相信你对"如何使用Python解决简单的zip文件解压密码"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

密码 文件 成功 数字 加密 组合 传统 字母 字符 开头 情况 方式 篇文章 线程 语句 迭代 新式 闲来无事 上图 不用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发代理公司哪家好 湛江卫星软件开发维修电话 后期专业和网络技术哪个好 大连慧辰网络技术有限公司 企业级服务器能连多少台设备 甘孜软件开发厂家价格 物业互联网科技信息化 手机网络安全锁怎么设置 首届全国中学生网络安全竞赛 漳平做小程序软件开发企业 银行软件开发试题 河北专业网络技术服务代理商 我的世界服务器里的东西被破坏 网络安全 主题 认证服务器功能缩写 怎么清除服务器拷数据的记录 3d max软件开发 rpg数据库 手机应用软件开发教程 hdfs是什么型数据库 信誉好的浪潮服务器代理商哪里有 成都时代网络技术教育中心怎样 国内优质服务器机房地区 关于计算机网络技术的岗位 自学软件开发学校哪个最好 河南惬意网络技术有限公司 服务器无线局域网通信 多媒体网络技术基础 龙湾永中辉能网络技术 怎么删除电脑代理服务器
0