Python_暴力破解zip压缩文件

目录


前言

        当遇到zip压缩文件有密码时,由于zip输入密码错误次数不限制,可以通过python相关库进行暴力破解。

 zip两种加密方式:传统加密方式和AES加密方式(不勾选传统加密方式),加密方式不同

故存在两种解压方式。


一、破解原理

        通过zipfile库解压文件,itertools库通过字典密码,排列组成密码进行破解。

二、使用步骤

1.引入库

代码如下(示例):

import ziffile   #zip压缩文件
import itertools #无穷迭代器
import pyzipper  #AES解密

2.读入数据

2.1、破解ZIP 传统加密模式

代码如下(示例):

import zipfile
import itertools

filename = "加密文件.zip"


def uncompress(filename, password):
    try:
        with zipfile.ZipFile(filename) as zfile:
            zfile.extractall('./', pwd=password.encode('utf-8'))
        return True
    except:
        return False


# 密码字典
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for c in itertools.permutations(chars, 4):
    password = "".join(c)
    result = uncompress(filename, password)
    if not result:
        print("passwrod:%s is error." % password)
    else:
        print('Decompression succeeded,password is:', password)
        break

2.2、破解ZIP AES加密模式 

# 首先得安装pyzipper库,pip insall pyzipper
import pyzipper
from threading import Thread
flag= True

def extractFile(zip_file, password):
    password = str(password)
    with pyzipper.AESZipFile(zip_file, 'r', compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES) as f:
        f.setpassword(password.encode('utf-8'))
        try:
            f.extractall()  # 使用密码尝试解压
            print("Found password: " + password)
        except:
            pass  # 解压失败说明密码错误,跳过


def main():
    # 采用AES默认加密算法的压缩文件
    zip_file_name = "AES破解.zip"
    for number in range(1, 9999):
        if flag is True:
            extractFile(zip_file_name, number)

if __name__ == '__main__':
    main()
zfile模块
    # 解压zip文件,解压时可以提供密码
    zfile.extractall("./",pwd= password.encode("utf-8"))
itertools模块
    # 实现全字符的全排列abc/acb/bca/bac/cab/cba
    itertools.permutations("abc",3)

总结

        此次破解密码方法简单,只需利用zipfile和itertools两个模块,通过python相关语句实现。

首先你需要了解一下zip文件的结构,一个zip文件包含多个文件和目录,其中每个文件或目录都有一个相对路径,路径信息存储在zip文件的中央目录中。中央目录位于zip文件的末尾,记录了每个文件的信息,包括文件名、文件大小、压缩前大小、压缩方式、压缩时间等。 如果你知道了zip文件的密码,可以直接使用Python自带的zipfile库进行解压,示例代码如下: ```python import zipfile zip_file = zipfile.ZipFile('example.zip') # 解压所有文件到指定目录 zip_file.extractall(path='extract_dir', pwd=b'password') ``` 其中,'example.zip'是待解压的zip文件,'extract_dir'是解压后文件的存放目录,b'password'是zip文件的密码。 如果你不知道zip文件的密码,可以使用Python中的字典攻击工具来破解密码。字典攻击工具通常需要准备一个密码字典文件,然后逐一尝试字典中的每个密码,直到找到正确的密码为止。 下面是使用Python中的fcrackzip库进行字典攻击的示例代码: ```python import fcrackzip # 设置字典文件路径 wordlist_path = 'passwords.txt' # 设置zip文件路径 zip_file_path = 'example.zip' # 创建fcrackzip对象 cracker = fcrackzip.FCrackZip() # 设置字典文件路径和zip文件路径 cracker.set_dictionary(wordlist_path) cracker.set_zipfile(zip_file_path) # 开始破解 result = cracker.crack() # 输出破解结果 print(result) ``` 其中,'passwords.txt'是密码字典文件的路径,'example.zip'是待破解的zip文件的路径。fcrackzip库使用的是暴力破解和字典破解两种方式,因此可能会耗费很长时间才能破解成功。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值