Python破解加密的zip文件

20 篇文章 9 订阅
本文介绍了如何在Python环境下利用密码字典尝试破解加密的ZIP文件。通过创建一个ZIP文件并设置密码,然后运行Python代码从密码字典中逐个尝试,最终成功破解了密码为'123654'的ZIP文件。需要注意的是,破解速度和成功率取决于密码的复杂性和字典的大小,复杂的密码可能无法快速破解。
摘要由CSDN通过智能技术生成

Python破解加密的zip文件

测试环境

环境版本
系统uos
Python版本Python3

创建一个.zip格式的压缩文件并且设置压缩密码,这里设置密码为:123654
加密

运行Python代码破解压缩密码,破解需要用到一个密码字典,代码引自原来Python破解受密码保护的zip文件这么简单,不担保一定成功

import zipfile
from tqdm import tqdm
wordlist = "/home/uos/Desktop/wordlists/rockyou.txt" #密码字典路径
zip_file = "/home/uos/Desktop/package.zip" #压缩文件路径
zip_file = zipfile.ZipFile(zip_file)
n_words = len(list(open(wordlist, 'rb')))
print("total passwords to test:", n_words)
with open(wordlist, "rb") as wordlist:
    for word in tqdm(wordlist, total=n_words, unit="word"):
        try:
            zip_file.extractall(pwd=word.strip())
        except:
            continue
        else:
            print("[+] Password found: ", word.decode().strip())
            exit(0)
    print("[!] Password not found, try other wordlist!")

成功破解后输出结果

/home/uos/PycharmProjects/pythonProject1/venv/bin/python /home/uos/PycharmProjects/pythonProject1/main.py
total passwords to test: 14344392
  0%|          | 297/14344392 [00:00<15:09, 15765.07word/s]
[+] Password found:  123654

Process finished with exit code 0
  1. 密码字典如何获取
    可以在kali系统的/usr/share/wordlists目录下拷贝一份到uos系统中或者百度rockyou.txt文件
  2. 运行代码报错,没有zipfile模块
    打开终端执行pip3 install zipfile安装zip模块
  3. 是否可以100%破解
    破解速度与成功率和压缩密码的长度和复杂度有关,简单密码比较容易破解,复杂密码破解时间比较长甚至会破解失败
加密一个zip文件,可以使用Python内置的zipfile库和密码库来实现。以下是一些代码示例: ```python import zipfile import os import tempfile from cryptography.fernet import Fernet def encrypt_zipfile(zipfile_path, password): # 创建临时目录 with tempfile.TemporaryDirectory() as temp_dir: # 解压缩zip文件到临时目录 with zipfile.ZipFile(zipfile_path, 'r') as zip_ref: zip_ref.extractall(temp_dir) # 加密解压缩后的文件 fernet = Fernet(password.encode()) for root, dirs, files in os.walk(temp_dir): for file in files: file_path = os.path.join(root, file) with open(file_path, 'rb') as f: data = f.read() encrypted_data = fernet.encrypt(data) with open(file_path, 'wb') as f: f.write(encrypted_data) # 创建加密后的zip文件 with zipfile.ZipFile(zipfile_path[:-4] + '_encrypted.zip', 'w', zipfile.ZIP_DEFLATED) as zip_ref: for root, dirs, files in os.walk(temp_dir): for file in files: file_path = os.path.join(root, file) zip_ref.write(file_path, os.path.relpath(file_path, temp_dir)) print('Zip file encrypted successfully') def decrypt_zipfile(zipfile_path, password): # 创建临时目录 with tempfile.TemporaryDirectory() as temp_dir: # 解压缩加密zip文件到临时目录 with zipfile.ZipFile(zipfile_path, 'r') as zip_ref: zip_ref.extractall(temp_dir) # 解密解压缩后的文件 fernet = Fernet(password.encode()) for root, dirs, files in os.walk(temp_dir): for file in files: file_path = os.path.join(root, file) with open(file_path, 'rb') as f: data = f.read() decrypted_data = fernet.decrypt(data) with open(file_path, 'wb') as f: f.write(decrypted_data) # 创建解密后的zip文件 with zipfile.ZipFile(zipfile_path[:-16] + '_decrypted.zip', 'w', zipfile.ZIP_DEFLATED) as zip_ref: for root, dirs, files in os.walk(temp_dir): for file in files: file_path = os.path.join(root, file) zip_ref.write(file_path, os.path.relpath(file_path, temp_dir)) print('Zip file decrypted successfully') # 加密zip文件 zipfile_path = 'myzipfile.zip' password = 'mypassword' encrypt_zipfile(zipfile_path, password) # 解密zip文件 zipfile_path = 'myzipfile_encrypted.zip' password = 'mypassword' decrypt_zipfile(zipfile_path, password) ``` 在上面的代码中,我们使用了Python内置的zipfile库来处理zip文件,并使用密码库cryptography中的Fernet类来加密和解密文件。首先,我们定义了两个函数:encrypt_zipfile和decrypt_zipfile,分别用于加密和解密zip文件。接着,我们定义了一个zip文件路径变量和一个密码变量,用于指定要加密zip文件和密码。在加密zip文件的函数中,我们使用了tempfile库创建了一个临时目录,并将zip文件解压缩到该目录中。然后,我们使用Fernet类加密解压缩后的文件,最后将加密后的文件重新打包成一个新的zip文件。在解密zip文件的函数中,我们也是先将加密zip文件解压缩到临时目录中,然后使用Fernet类解密解压缩后的文件,最后将解密后的文件重新打包成一个新的zip文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值