文章目录

  • 1、爆破(暴力,字典,掩码)
  • 2、明文攻击
  • 3、伪加密
  • 4、CRC32碰撞

zip压缩包开头为50 4B 03 04,即常说的PK头。

zip文件由三部分组成:压缩的文件内容源数据、压缩的目录元数据、目录结束标识结构

1、爆破(暴力,字典,掩码)

爆破:逐个尝试选定集合中的可以组成的所有密码,直到遇到正确的密码。
分为暴力破解、掩码破解、字典破解这几种
1、暴力破解:选择密码范围,长度等,由软件组合生成密码进行破解
2、掩码破解:知道密码中的一部分,只需要按照规则构造其余部分进行破解
3、字典破解:通常是多数用户常用的一些密码集合,导入字典文件用字典中的密码进行破解(取决你的字典)

这里主要介绍两款爆破使用的工具

  • Windows下的神器 ARCHPR
    暴力枚举,跑字典,明文攻击,应有尽有

  • Linux 下的命令行工具 fcrackzip

    # -b 指定模式为暴破,-c1指定密码类型为纯数字,其它类型可以rtfm,-u这个参数非常重要不然不显示破解出来的密码,-l 5-6可以指定长度
    root@kali:fcrackzip -b -c1 -u test.zip
    

2、明文攻击

明文攻击:

  • 找到压缩包内其中一个已知的文件文件大小要大于12Byte),用相同的压缩软件压缩算法去压缩无密码压缩包,得到明文。
  • 通过比较两个压缩包相同位置不同的12个字节,就可以还原出3个key,绕过密码提取出所有的文件。
  • 注意明文攻击需要CRC32值相同才行。

一个例子:

  • 现有加密压缩包

  • 以及一个包含测试1的伪加密的压缩包(CRC32相同,>12字节)

  • 进行明文攻击

  • 注意:当明文的大小比较小时,或者密文过长,攻击速度会比较慢;即使有时没有恢复密码,也可以使用明文攻击,最后点保存还是能得到压缩包里内容的。

3、伪加密

伪加密zip

  • 紫色部分从PK开始数第9位,灰色部分第6,7列,都改为0900则是伪加密。
    若是没有加密的zip文件,两处标记都是00 00。
  • 破解伪加密的zip,只要把压缩文件目录区(紫色部分) 的全局方式标记改为00 00即可解密
  • 除windows外的系统(如kali)可直接打开伪加密压缩包

4、CRC32碰撞

什么是CRC32

  • CRC 本身是「冗余校验码」的意思,CRC32 则表示会产生一个 32 bit ( 8 位十六进制数) 的校验值。由于 CRC32 产生校验值时源数据块的每一个 bit (位) 都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的 CRC32 值。
  • CRC32 校验码出现在很多文件中比如 png 文件,同样 zip 中也有 CRC32 校验码。值得注意的是 zip 中的 CRC32 是未加密文件的校验值

CRC32攻击

  • 这也就导致了基于 CRC32 的攻击手法。
    文件内内容很少 (一般比赛中大多为 4 字节左右)
    加密的密码很长
  • 我们不去爆破压缩包的密码,而是直接去爆破源文件的内容 (一般都是可见的字符串),从而获取想要的信息。

一个例子:

  • 我们新建一个 flag.txt,其中内容为 123,使用密码 !QAZXSW@#EDCVFR$ 去加密

  • 我们去计算文件的 CRC32 值发现和上图中的 CRC32 值吻合

  • 在爆破时我们所枚举的所有可能字符串的 CRC32 值是要与压缩源文件数据区中的 CRC32 值所对应

    # -*- coding: utf-8 -*-
    import zlib
    import base64
    import string
    import itertools
    import struct# 爆破所有可能的crc,存起来
    alph = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='
    crcdict = {}
    print("computing all possible CRCs...")
    for x in itertools.product(list(alph), repeat=3):st = ''.join(x)testcrc = zlib.crc32(st.encode('utf8'))crcdict[testcrc] = st
    print("Done!")
    print(crcdict)# 判断crc是否在集合中
    f = open('flag.zip','rb')
    data = f.read()
    f.close()
    crc = "".join('%s' %id for id in data[14:18])
    if crc in crcdict:print(crcdict[crc])
    else:print("FAILED!")
    
  • 推荐一个好用的6位的CRC32爆破工具
    下载:https://github.com/theonlypwner/crc32
    使用:python crc32.py reverse 你的crc32密文(密文需要加上0x变成16进制)

  • 以2022ZJ省赛misc3为例,可以crc32小附件得到密码(或者再大一点,可以明文攻击解包)

MISC:压缩包取证(zip爆破、明文攻击、伪加密、CRC32碰撞)相关推荐

  1. zip格式文件伪加密

    zip格式文件伪加密 实践是检验真理的唯一标准 简介 zip文件是一种压缩文件,可进行加密,也可不加密.而伪加密是在未加密的zip文件基础上修改了它的压缩源文件目录区里的全局方式位标记的比特值,使得压 ...

  2. Misc 第七篇——base64stego(伪加密,base64隐写)

    题目描述:菜狗经过几天的学习,终于发现了如来十三掌最后一步的精髓 附件给了一个压缩包,伪加密,使用360解压缩成功解压. 解压后是一个文本文件,如下图,使用base64加密的一堆字符串, 单纯使用ba ...

  3. 从CTF比赛真题中学习压缩包伪加密与图片隐写术

    先讲个笑话,刚刚打完MAR DASCTF明御攻防赛,一如往常,很轻松便拿到了两个flag(签到与问卷),哈哈,一个脑细胞都不用消耗 好了下面通过其中的一道misc题,一起学习一下伪加密与图片隐写的破解 ...

  4. 从CTF比赛真题中学习压缩包伪加密与图片隐写术【文中工具已打包】

    先讲个笑话,刚刚打完MAR DASCTF明御攻防赛,一如往常,很轻松便拿到了两个flag(签到与问卷),哈哈,一个脑细胞都不用消耗 好了下面通过其中的一道misc题,一起学习一下伪加密与图片隐写的破解 ...

  5. BugkuCTF-MISC题zip伪加密

    下载文件file.zip 题目提示伪加密 通过010editor打开file伪加密.zip 将头文件标记50 4B 03 04起第三第四个字节改为0000 再将50 4B 01 02起第五第六个字节改 ...

  6. 破解压缩包的几种方式(zip伪加密 爆破 CRC32碰撞 已知明文攻击)

    zip伪加密 zip文件是由3部分组成,详见文末 压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志 在压缩源文件数据区有个2字节的 全局方式位标记 ,在压缩源文件目录区也有个2字节的 全局方 ...

  7. zip 伪加密学习,压缩包十六进制数据含义分析

    zip 伪加密学习,压缩包十六进制数据含义分析 -- 一个zip文件由三部分组成: 压缩源文件数据区 压缩源文件目录区 压缩源文件目录结束标志. 先拿一个正常的压缩包为例,用 010 editor 打 ...

  8. CTF——MISC——zip伪加密总结

    看了好多博文总结一下吧 zip 伪加密原理: zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包. 把  压缩源文件目录区  的  全局方式位标记   的  01  00 或 ...

  9. Zip压缩包伪加密原理

    Zip压缩包一般由如下部分组成: 压缩源文件数据区 压缩源文件目录区 压缩源文件目录结束标志 压缩源文件数据区: 压缩源文件目录区: 压缩源文件目录结束标志: 如何识别真伪加密: 1.无加密: 压缩源 ...

  10. 从CTF比赛真题中学习压缩包伪加密与图片隐写术,最新阿里P7技术体系

    =========================================================================== 如遇加密压缩包,在没有密码提示的情况下,先判断是 ...

最新文章

  1. Q1手机全球份额反超苹果,美国对华为的“双重恐惧”再度加深
  2. WebFetch 是无依赖极简网页爬取组件
  3. 1-1-Active Directory 基础结构要求
  4. myeclipse 运行速度慢的解决方案
  5. Silverlight与WCF之间的通信(5)silverlight应用和wcf服务的发布方法
  6. [渝粤教育] 四川大学 传统文化与人生修养 参考 资料
  7. 获取分割后右边的字符串
  8. phpcms v9网站的数据库配置文件在哪
  9. 模拟电子技术基础笔记
  10. Hadoop技术原理与应用
  11. 小组取什么名字好_给小组取个可爱的名字
  12. GBase 8a集群运行报错BLK_TEMP: return NULL in alloc
  13. android神器v2ex,这5个堪称神器的APP,用了让你爱不释手!
  14. The Book Thief
  15. Airtest双11领喵币代码
  16. 小程序成四大行业商家标配,小程序代理市场如何
  17. Eclipse创建java web工程
  18. anacnda 子环境管理
  19. #1163 : 博弈游戏·Nim游戏(数学博弈)
  20. 【技术类】【ArcGIS对国产卫星的支持2:高分一号卫星】篇5、实时表观反射率产品生产

热门文章

  1. 服务器怎么连接无线路由器怎么设置,光猫连接无线路由器怎么设置
  2. 苹果PD快充数据线的MFi认证查询方法
  3. 华为服务器进入bios怎么重装系统,华为服务器进bios设置
  4. 输入工资,计算税后工资
  5. 网页只有在服务器上才能打开,为什么你的电脑只能上QQ,而打不开网页?我来告诉你...
  6. python header函数_Header函数
  7. android 8.0手机无法更新版本,微信8.0安卓机怎么安装更新 安卓微信更新不了8.0解决办法一览...
  8. 最新仿720云全景制作源码|krpano仿720云全景网站源码
  9. php fatal error解决,这是为什么 Fatal Error,该怎么解决
  10. 关于@Result注解的说明