python 破解加密zip文件的密码

今天的文章来自 盏茶作酒 同学。他在老电脑中发现了一个加密的 zip 文件,于是用 Python 破解了文件密码。在破解的过程中出现了内存爆炸的问题,通过阅读 Python 源代码找到了解决方案。

下面就来给大家分享一下他的操作。

之前在家里的老电脑中,发现一个加密zip压缩包,由于时隔太久忘记密码了,依稀记得密码是6位字母加数字,网上下载了很多破解密码的软件都没有效果,于是想到自己用Python写一个暴力破解密码的脚本。
Python 有一个内置模块 zipfile 可以解压 zip 压缩包。先来测试一波:创建一个测试文件,压缩,设置解压密码为123。

import zipfile

# 创建文件句柄
file = zipfile.ZipFile("测试.zip", 'r')
# 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪
file.extractall(path='.', pwd='123'.encode('utf-8'))

运行效果如下图所示,提取成功。

既然如此,那我不停尝试所有可能的密码组合去解压缩不就行了嘛~

好了,开始破解老文件的密码。

为了提高速度,我还加了多线程的代码:

import zipfile
import itertools
from concurrent.futures import ThreadPoolExecutor

def extract(file, password):
    if not flag: return
    file.extractall(path='.', pwd=''.join(password).encode('utf-8'))

def result(f):
    exception = f.exception()
    if not exception:
        # 如果获取不到异常说明破解成功
        print('密码为:', f.pwd)
        global flag
        flag = False

if __name__ == '__main__':
    # 创建一个标志用于判断密码是否破解成功
    flag = True
    # 创建一个线程池
    pool = ThreadPoolExecutor(100)
    nums = [str(i) for i in range(10)]
    chrs = [chr(i) for i in range(65, 91)]
    # 生成数字+字母的6位数密码
    password_lst = itertools.permutations(nums + chrs, 6)
    # 创建文件句柄
    zfile = zipfile.ZipFile("加密文件.zip", 'r')
    for pwd in password_lst:
        if not flag: break
        f = pool.submit(extract, zfile, pwd)
        f.pwd = pwd
        f.pool = pool
        f.add_done_callback(result)

然而,事情并没有那简单……

代码跑一会儿,内存爆了!

于是,为了找寻问题所在,我就去查看了一下源码,发现ThreadPoolExecutor默认使用的是无界队列。而程序中尝试密码的速度跟不上生产密码的速度,就会把生产任务无限添加到队列中。导致内存被占满。内存直接飙到95:

找到病根儿,剩下的就是对症下药了。

继承并重写了ThreadPoolExecutor类中的_work_queue属性,将无界队列改成有界队列,这样就不会出现内存爆满的问题,看代码:

import queue
from concurrent.futures import ThreadPoolExecutor

class BoundedThreadPoolExecutor(ThreadPoolExecutor):
    def __init__(self, max_workers=None, thread_name_prefix=''):
        super().__init__(max_workers, thread_name_prefix)
        self._work_queue = queue.Queue(self._max_workers * 2) # 设置队列大小

用自定义的BoundedThreadPoolExecutor类替代前面代码中的ThreadPoolExecutor。

再次执行……

程序输入如下图内容:

Bingo!破解成功!(原来密码如此简单……)
话说回来,毕竟这个压缩包我是隐约知道它的位数和范围(字母和数字),所以破解出来需要的时间是可以忍受的。如果有天你在网上找了一个无人认领的加密压缩包,想要一窥究竟但又并不知道它有多少位密码,那我只能祝你好运啦~

以上就是python 破解加密zip文件的密码的详细内容,更多关于python 破解zip文件密码的资料请关注我们其它相关文章!

(0)

相关推荐

  • python编写暴力破解zip文档程序的实例讲解

    编写暴力破解Zip文件要从学习zipfile库的使用方法入手,首先打开Python解释器,用help('zipfile')命令来了解这个库并重点看一下ZipFile类中的extractall()这个方法 ZipFile extractall() 让我们来写一个脚本测试一下Zip文件库的用法,首先创建一个有密码的压缩文件,这里设置密码为awd,文件名为evil.zip,要解压这个zip文件,实例化一个新的ZipFile类,使用extractall()方法,在可选参数pwd上填上密码 运行后你会发现

  • 详解python破解zip文件密码的方法

    1.单线程破解纯数字密码 注意: 不包括数字0开头的密码 import zipfile,time,sys start_time = time.time() def extract(): zfile = zipfile.ZipFile('IdonKnow.zip')#读取压缩包,如果用必要可以加上'r' for num in range(1,99999,1): try: pwd = str(num) zfile.extractall(path='.',pwd=pwd.encode('utf-8')

  • Python实现暴力破解有密码的zip文件的方法

    背景 今天朋友给我发了一个某游戏的兑换码,压缩文件发过来的.结果被加密了.wc?还说叫爸爸就给我密码?男人是这么容易像恶势力低头的?直接给你爆了好吧,小兔崽子. 一.思路 爆密码的思路其实都大同小异:无非就是字典爆破,就看你是有现成密码字典,还是自己生成密码字典,然后进行循环输入密码,直到输入正确位置.现在很多都有防爆破限制,根本无法进行暴力破解,但是似乎zip这种大家都是用比较简单的密码而且没有什么限制. 因此 实现思路就是 生成字典->输入密码->成功解压 二.实现过程 1.生成字典 生成

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

    前几天在一本书上看到一篇可以利用字典破解zip文件密码的文章,觉得比较有意思于是研究了一番,在这里分享一下 原理 主要是利用python里自带的zipfile库中的extractall函数来实现的,简单导入zipfile之后,实例化一个ZipFile类.利用extractall()来解压这个文件,并在参数pwd上填入正确密码 这时我们发现执行脚本之后,fate.zip会被正确解压,而填入错误密码则会入下图一样报错 因此 我们可以利用因口令不正确而抛出的异常来测试字典文件中是否有zip文件的密码,

  • Python压缩解压缩zip文件及破解zip文件密码的方法

    python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件. 例如,在py脚本所在目录中,有如下文件: readability/readability.js readability/readability.txt readability/readability-print.css readability/sprite-readability.png readability/readability.css 将 readability 目录中的文件压缩到脚本所在目录的 read

  • 如何使用Python破解ZIP或RAR压缩文件密码

    这篇文章主要介绍了如何使用Python破解ZIP或RAR压缩文件密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文将会利用 Python 破解压缩包的密码,这里以 ZIP/RAR 为例. 破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python

  • 利用Python暴力破解zip文件口令的方法详解

    前言 通过Python内置的zipfile模块实现对zip文件的解压,加点料完成口令破解 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了.ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的. 比如要读取一个Python zipfile 模块,这里假设filename是一个文件的路径: impo

  • python破解zip加密文件的方法

    首先我们先来桌面创建一个文件 我们创建了一个名为q的txt文件然后我们将它压缩,压缩的时候记得设置上密码 我这边将密码设置为123456, 接下来我们打开我们的编写工具,开始写代码,我这里用的是pycharm,推荐大家使用 这里我们将使用到python的zipfile的模块,编写zip文件口令破解机要从学习 zipfile库的使用方法着手.打开 Python解释器,我们 用help( zipfile)命令进一步了解这个库,并重点看一下 Zip File类中的 extractall方法.这个类和这

  • Python脚本破解压缩文件口令实例教程(zipfile)

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法. 环境:Windows python版本2.7.15 Python中操作zip压缩文件的模块是 zipfile . 相关文章:Python中zipfile压缩文件模块的使用 我们破解压缩文件的口令也是用的暴力破解方法.我们提前准备好密码字典用来爆破,如果密码字典中存在密码,则会打印出该密码,否则提示密码字典中无密码. main()函数用来打开密码字典 k

  • python 破解加密zip文件的密码

    今天的文章来自 盏茶作酒 同学.他在老电脑中发现了一个加密的 zip 文件,于是用 Python 破解了文件密码.在破解的过程中出现了内存爆炸的问题,通过阅读 Python 源代码找到了解决方案. 下面就来给大家分享一下他的操作. 之前在家里的老电脑中,发现一个加密zip压缩包,由于时隔太久忘记密码了,依稀记得密码是6位字母加数字,网上下载了很多破解密码的软件都没有效果,于是想到自己用Python写一个暴力破解密码的脚本. Python 有一个内置模块 zipfile 可以解压 zip 压缩包.

  • Python实现爆破ZIP文件(支持纯数字,数字+字母,密码本)

    目录 乱码问题 单线程纯数字爆破 单线程数字字母爆破 多线程爆破密码本 单线程爆破3合1版(支持数字,数字+字母.密码本) 乱码问题 破解压缩包时候会存在中文乱码问题! 1:直接使用Everything搜索出要修改的库文件 zipfile.py ,并用notepad++打开 2:修改的第一段代码 大概位置在1374行 if flags & 0x800: # UTF-8 file names extension filename = filename.decode('utf-8') else: #

  • python下解压缩zip文件并删除文件的实例

    利用python下载数据,下载下来的数据为zip格式,因为有上千个这样的文件,因此便直接在爬虫程序里加入了解压缩zip文件的内容,并且因为数据量较大,为了节省空间,便在解压缩后立即删除该zip文件. 先来介绍解压缩的方法: import zipfile filename = '/home/username/work/1.zip' fz = zipfile.ZipFile(filename, 'r') for file in fz.namelist(): fz.extract(file, path

  • python MultipartEncoder传输zip文件实例

    需求:对方提供处理文件的接口,本地将待处理文件压缩后,通过http post multipart方式上传,等待处理完成后从相应连接下载结果 代码: import os import time import zipfile import requests from requests_toolbelt.multipart.encoder import MultipartEncoder class Func4Fuxi(object): def __init__(self): self.remote_r

  • ​​​​​​​如何利用python破解zip加密文件

    目录 前言: 一.破解zip加密文件的思路 二.实例代码演示 0.zip的压缩方式 1.解压zip文件 2.实现密码字符的全排列 三.密码是几位未知,也可以破解密码 总结 前言: 日常工作中,会遇到一些加密的zip文件,但是因为某些原因或者时间过长,密码不知道了.但是zip文件中文件有很重要很必须.那么,我们试一试万能的Python,暴力破解密码. 一.破解zip加密文件的思路 准备一个加密的zip文件. zipfile模块可以解压zip文件. 解压时可以提供密码zfile.extractall

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

    目录 简介 文件创建 纯数字密码 字母数字混合密码 补充说明 简介 使用的核心模块是python标准库中的zipfile模块.这个模块可以实现zip文件的各种功能,具体可以查看官方参考文档.这里的暴力破解的意思是对密码可能序列中的值一个一个进行密码尝试,这对人来说是很难的,可是对计算机而言并不难.有时候我们下载的zip文件需要密码解压而我们不知道,需要付费才知道.所以这里主要介绍两种暴力破解的密码:纯数字密码和英文数字组合密码. 文件创建 首先测试文件为test.txt(仅包含单行文本),压缩后

  • Python轻松破解加密压缩包教程详解

    目录 一.准备工作 二.开始操作 相信大家都遇到过这种情况,下载文件的时候遇到压缩包又没有密码,或者说自己设置的加密密码,但是忘记了,就很难受~ 但是~ 在Python程序员面前,这都是小问题! 话不多说,我们直接开始操作.. 一.准备工作 我们先打开一个加密的压缩包尝试原始方法解压一下 然后弹出来让我输密码 正常打不开,如果你点击跳过所有加密,它也不会打开,直接就关闭当前你窗口了. 那正常情况下,我们能怎么办,什么也办不了,下一个会更乖. 我们打开pycharm,新建一个py文件,暂且我把它命

随机推荐