【CTF解题】ZIP压缩包伪加密
2022-11-01 / 0 评论 / 374 阅读 / 5 点赞

【CTF解题】ZIP压缩包伪加密

发光的神
2022-11-01 / 0 评论 / 374 阅读 / 正在检测是否收录...

简介

什么是压缩包伪密码?
其实就是给一个没有设置密码的压缩包加上密码,不过这个密码不是手打的,而是通过进制修改的,其实压缩包并没有加密,只是伪造了加密的假象,打开后会提示你输入密码才能解压文件,不管怎么爆破也是没用的,因为本来就没有密码。

实现步骤

la4qtsva.png
1.这里我创建了一个3.txt文本文档,内容写了 hey actdream!。

la4qwg52.png
2.这里要选择zip压缩,没有加密码直接压缩到桌面上。

la4qz052.png
3.可以看到压缩包里的文件是没有密码的,现在我用Winhex打开工具可以网上下载,010Editor都是可以的。

la4r2sg9.png
4.这两块区域都有 14 00 它是解压文件需要的pkware版本,后面接的 00 00 就是全局方式位标记,改成09 00就会提示密码了。

la4redhs.png

5.只需要修改最后一组,然后保存再打开发现需要密码了,这种情况只能该会 00 00 就不需要密码了。

解密

import os

def modify_file(path):
    if not os.path.exists(path):
        print("路径不存在")
        return

    with open(path, 'rb+') as file:
        data = file.read()
        modified_data = data.replace(b'\x14\x00\x09', b'\x14\x00\x00')
        if modified_data != data:
            file.seek(0)
            file.write(modified_data)
            file.truncate()
            print("文件修改成功")
        else:
            print("未找到需要修改的字节")

content = input("请拖入路径:")
if content.strip() != "":
    modify_file(content)

lodmgw3d.png

结构

la4r4exd.png

区分

  • 无加密
    压缩源文件数据区的全局加密应当为00 00
    且压缩源文件目录区的全局方式位标记应当为00 00
  • 伪加密
    压缩源文件数据区的全局加密应当为00 00
    且压缩源文件目录区的全局方式位标记应当为09 00
  • 真加密
    压缩源文件数据区的全局加密应当为09 00
    且压缩源文件目录区的全局方式位标记应当为09 00

视频效果

总结

第一个全局方式位标记: 结果会出现不会出现zip伪加密。
第二个全局方式位标记 ( 修改为09 00 只要是奇数就行 ) : 只要末位是奇数,就代表加密,反之末位是偶数代表未加密。
修改zip文件头(50 4B 03 04)修改成其他数据: 结果出现压缩包损坏,导致文件无法解压。

5

评论 (0)

取消
0:00