找回密码
 立即注册
注册 登录
×
热搜: 活动 交友 discuz
查看: 108|回复: 10

ZIP完美解密解压缩和暴力破解最佳实现

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-11-28 12:23:03 | 显示全部楼层 |阅读模式
前几天刚刚写了一个ZIP完美加密压缩的python解决方案(ailx10:python给文件夹和文件进行zip加密压缩),其实我找这个方案花了一点时间的,因为网上关于ZIP加密压缩的大部分都是暴力破解相关的,所以我今天也来输出一个ZIP完美解密压缩的python解决方案,之所以称之为完美方案,因为和它加密压缩是一样的,只需要调整几个参数,就实现了解密,如果我再给解密加一个结果判断,然后再加一层循环,就是妥妥的ZIP解密暴力破解方案了~
废话不多说,直接冲冲冲,新增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()本篇完,撒花~
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:23:49 | 显示全部楼层
所以原理就是调用7z一个一个试密码对吧
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:24:47 | 显示全部楼层
[赞][赞][赞]你说的对
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:24:57 | 显示全部楼层
这个....效率也太低了吧?hashcat了解一下?
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:25:51 | 显示全部楼层
哪怕你用些Python的zip库都比这个有技术含量。
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:26:35 | 显示全部楼层
Python zip库不支持加密哦[看看你][看看你]
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:27:23 | 显示全部楼层
之前用过一款工具,可以根据已知或者猜测的一小段内容进行破解
zip-known-plain-text-attack pkCrack
当时是下载了一个种子压缩包,500M左右,在网上根据番号找到了其中一个种子,然后用这个工具就破解了整个压缩包 [捂脸]
回复

使用道具 举报

1

主题

3

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-11-28 12:28:15 | 显示全部楼层
之前用过一款工具,可以根据已知或者猜测的一小段内容进行破解
zip-known-plain-text-attack pkCrack
当时是下载了一个种子压缩包,500M左右,在网上根据番号找到了其中一个种子,然后用这个工具就破解了整个压缩包 [捂脸]
某个文件已知的情况下,速度蛮快的,几分钟就好了。
还有一种方式是猜测文件头,有些文件格式有固定的文件头,可以做更多尝试。
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:29:02 | 显示全部楼层
不错的工具
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-11-28 12:29:17 | 显示全部楼层
但支持解密啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 黑客通

GMT+8, 2025-10-15 23:18 , Processed in 0.130956 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表