ZIP完美解密解压缩和暴力破解最佳实现
前几天刚刚写了一个ZIP完美加密压缩的python解决方案(ailx10:python给文件夹和文件进行zip加密压缩),其实我找这个方案花了一点时间的,因为网上关于ZIP加密压缩的大部分都是暴力破解相关的,所以我今天也来输出一个ZIP完美解密压缩的python解决方案,之所以称之为完美方案,因为和它加密压缩是一样的,只需要调整几个参数,就实现了解密,如果我再给解密加一个结果判断,然后再加一层循环,就是妥妥的ZIP解密暴力破解方案了~
ailx10
1951 次咨询
网络安全优秀回答者
互联网行业 安全攻防员
去咨询
废话不多说,直接冲冲冲,新增2个函数,暴力破解的解决方案就出来了,那么问题来了,有现成的暴力破解工具(ailx10:ZIP加密文件破解:john简介),为什么要自己造轮子呢?
- 结果判断函数:getResultisOk
- 暴力破解函数:my_brute_force
文件和文件夹结构
# -*- coding: utf-8 -*-
# @Time : 2022/10/23 9:31
# @Author : ailx10
# @FileName: 7zip.py
import os
import time
import subprocess
def my7zip():
appPath=r"C:\Program Files\7-Zip"
zApp="7z.exe"
zAction='a'
zPass='-pailx10'
zAnswer='-y'
zDir=[r"E:\tmp\我的文件夹"]
zDir2=[r"E:\tmp\我的文件.docx"]
zipFileName = "加密文件和文件夹_{}.zip".format(time.strftime("%Y%m%d",time.localtime()))
progDir=os.path.join(appPath,zApp)
cmd = [zApp, zAction, zipFileName, zPass, zAnswer, zDir,zDir2]
res = subprocess.Popen(cmd, executable=progDir, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
res.wait()
result = res.stdout.read()
print(result)
def myun7zip():
appPath=r"C:\Program Files\7-Zip"
zApp="7z.exe"
zAction='x'
zPass='-pailx10'
zAnswer='-y'
zipFileName = "加密文件和文件夹_{}.zip".format(time.strftime("%Y%m%d",time.localtime()))
progDir=os.path.join(appPath,zApp)
zOutput="-o./" # 解压到当前文件夹
zmode="-aoa" # 直接覆盖旧的文件
cmd = [zApp, zAction, zipFileName, zPass, zAnswer, zOutput,zmode]
res = subprocess.Popen(cmd, executable=progDir, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
res.wait()
result = res.stdout.read()
print(result)
def my_brute_force():
appPath = r"C:\Program Files\7-Zip"
zApp = "7z.exe"
zAction = 'x'
zAnswer = '-y'
zipFileName = "加密文件和文件夹_{}.zip".format(time.strftime("%Y%m%d", time.localtime()))
progDir = os.path.join(appPath, zApp)
zOutput = "-o./"
zmode = "-aoa"
password = ["ailx10"] # 密码字典
for zPass in password:
zPass = "-p{}".format(zPass)
cmd = [zApp, zAction, zipFileName, zPass, zAnswer, zOutput, zmode]
res = subprocess.Popen(cmd, executable=progDir, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
res.wait()
result = res.stdout.read()
if(getResultisOk(result) == True):
print("找到密码:{}".format(zPass))
def getResultisOk(result):
print(type(result))
match = re.search("Errors",str(result))
if match:
return False
else:
return True
if __name__ == "__main__":
my7zip()
myun7zip()
my_brute_force()
本篇完,撒花~
发布于 2022-10-23 10:08