手把手教你使用Python解决简单的zip文件解压密码

 更新时间:2021年11月22日 16:23:54   作者:python可乐编程  
本文主要介绍了Python解决简单的zip文件解压密码,使用的核心模块是python标准库中的zipfile模块。具有一定的参考价值,感兴趣的可以了解一下

简介

使用的核心模块是python标准库中的zipfile模块。这个模块可以实现zip文件的各种功能,具体可以查看官方参考文档。这里的暴力破解的意思是对密码可能序列中的值一个一个进行密码尝试,这对人来说是很难的,可是对计算机而言并不难。有时候我们下载的zip文件需要密码解压而我们不知道,需要付费才知道。所以这里主要介绍两种暴力破解的密码:纯数字密码和英文数字组合密码。

文件创建

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

上图注意勾选传统加密。

纯数字密码

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

代码:

import zipfile
import time
import threading
startTime = 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 zipfile
import random
import time
import 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文件进行解压的)和加密方式并非传统加密。这种暴力破解方法只在自己大致记得密码位数和密码格式(如只有字母等)时比较实用,完全的暴力破解是不现实的,毕竟做加密的也不是白做的。

到此这篇关于手把手教你使用Python解决简单的zip文件解压密码的文章就介绍到这了,更多相关Python zip文件解压密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用psutil库对系统数据进行采集监控的方法

    Python使用psutil库对系统数据进行采集监控的方法

    利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达到实时监控系统的目的。本文给大家介绍Python psutil系统监控的相关知识,感兴趣的朋友一起看看吧
    2021-08-08
  • 基于Python实现地标景点识别功能

    基于Python实现地标景点识别功能

    地标景点识别是一种基于计算机视觉技术的应用,旨在通过对图像进行分析和处理,自动识别出图片中的地标景点,本文将介绍地标景点识别的背景和原理,并使用Python编程语言来实现一个简单的地标景点识别系统,感兴趣的朋友可以参考下
    2024-01-01
  • python简单实现刷新智联简历

    python简单实现刷新智联简历

    本文给大家分享的是个人弄的一个使用Python简单实现刷新智联招聘简历的小工具的代码,非常的简单,给大家参考下吧。
    2016-03-03
  • 用python实现域名资产监控的详细步骤

    用python实现域名资产监控的详细步骤

    域名资产监控,通过输入一个主域名,找到该域名对应的ip地址所在的服务器的端口开闭情况,本文重点给大家介绍用python实现域名资产监控的问题,需要的朋友可以参考下
    2021-11-11
  • python删除csv文件的行列

    python删除csv文件的行列

    这篇文章主要介绍了python删除csv文件中的某几列或行,主要介绍了python对csv删除的方法,感兴趣的同学可以参考学习
    2021-04-04
  • python绘制高斯曲线

    python绘制高斯曲线

    这篇文章主要为大家详细介绍了python绘制高斯曲线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Python使用描述符实现属性类型检查的案例解析

    Python使用描述符实现属性类型检查的案例解析

    这篇文章主要介绍了Python使用描述符实现属性类型检查,实例属性就是在一个类中将另一个类的实例作为该类的一个数属性,本文通过代码演示给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Python中关键字global和nonlocal的区别详解

    Python中关键字global和nonlocal的区别详解

    这篇文章主要给大家介绍了关于Python中关键字global和nonlocal的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Tensorflow 合并通道及加载子模型的方法

    Tensorflow 合并通道及加载子模型的方法

    今天小编就为大家分享一篇Tensorflow 合并通道及加载子模型的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python 信息同时输出到控制台与文件的实例讲解

    python 信息同时输出到控制台与文件的实例讲解

    今天小编就为大家分享一篇python 信息同时输出到控制台与文件的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论