压缩包全解析——ctf公开课笔记记录

压缩包概述

压缩包出现的目的就是 缩小文件,它的基本原理就是 查找文件内的重复字节,并建立一个相同字节的“词典”文件,并用 一个代码表示,每当遇到 相同的词,就用代码替换,达到减小文件体积的目的。
最早的压缩工具,叫做ARC,是一个收费的软件

压缩包有很多不同的压缩文件格式,例如ZIP、RAR、7Z等,实际上这只是不同的压缩规范,就算是同样的格式,例如都是ZIP,其中的压缩算法可能也是不一样的,例如ZIP可以使用Shrinking、Reducing、Deflate等算法。(相同的文件,使用不同的压缩软件压缩,结果也不一定相同。)

 

压缩包常见题型

压缩包类型的题目在CTF的杂项中非常常见,尤其是在大学生竞赛中针对压缩包解题也形成了几个固定的套路:
·暴力破解
·明文攻击
·伪加密
·CRC32

暴力破解

暴力破解(Brute-force) 用数学的说法,其实就是 枚举法。枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案。因此枚举法(暴力破解)是通过牺牲时间来换取结果。

压缩包爆破工具
·ARCHPR (常用)
·Ziperello
·PackageCrack
·zip password tool.
·Python脚本(灵活)

暴力破解工具ARCHPR

ARCHPR是一个强大的压缩包解密工具,功能非常强大,界面简洁明晰、操作方便快捷,设计人性化。适用于ZIP和RAR档案的高度优化的口令恢复工具。
ARCHPR能够恢复保护口令,或将用所有流行的档案版本创建的加密ZIP和RAR档案解除锁定。

 

明文攻击

我们为zip压缩文件所设定的密码,首先被转换成3个32bit的key,所以可能的key的组合是2^96这是个天文数字,如果用暴力穷举的方式是不太可能的,除非你的密码比较短或者有个厉害的字典。
压缩软件用这3个key加密所有包中的文件,也就是说,所有文件的key是一样的,如果我们能够找到这个key,就能解开所有的文件。

如果我们找到加密压缩包中的任意一个文件,这个文件和压缩包里的文件是一样的,我们把这个文件用同样的压缩软件同样的压缩方式进行无密码的压缩,得到的文件就是我们的Knownplaintext (已知明文)。
用这个无密码的压缩包和有密码的压缩包进行比较,分析两个包中相同的那个文件,抽取出两个文件的不同点,就是那3个key了,如此就能得到key。两个相同文件在压缩包中的字节数应该相差12个byte,就是那3个key了
虽然我们还是无法通过这个key还原出密码,但是我们已经可以用这个key解开所有的文件所以已经满足我们的要求了,毕竟对我们而言,得到解压后的文件比得到密码本身更重要。

如果出现错误或者没有找到密码,那么一般就是使用的压缩软件或是压缩算法和待破解的压缩包所使用的软件不同,可以用WinRAR,360压缩、7z,2345好压等都试一下。

zip伪加密

一个ZIP文件由三个部分组成:
·压缩源文件数据区
·压缩源文件目录区
·压缩源文件目录结束标志

压缩源文件数据区压缩源文件目录区:
50 4B 03 04:这是头文件标记50 4B 01 02:目录中文件文件头标记
14 00:解压文件所需 pkware 版本1F 00:压缩使用的 pkware 版本
00 00:全局方式位标记(有无加密)14 00:解压文件所需 pkware 版本
08 00:压缩方式00 00:全局方式位标记

原理
在未加密的zip文件基础上修改了它的压缩源文件目录区里的全局方式位标记的比特值,使得压缩软件打开它的时候识别为加密文件,提示输入密码,不管你用什么软件对其进行密码破解,都无法打开
所需工具
·010editor
·Winhex
·HexCmp
·ZipCenOp
[zipcenop命令]:

java -jar ZipCenOp,jar e xxx.zip //encode
java -jar ZipCenOp.jar r xxx.zip //decode

CRC32碰撞

CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit (8位十六进制数)的校验值由于CRC32产生校验值时源数据块的每一个bit (位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值,总之每个文件都有唯一的CRC32值,即便数据中一个bit发生变化,也会导致CRC32值不同。若是知道一段数据的长度和CRC32值,便可穷举数据,与其CRC32对照,以此达到暴力猜解的目的。但通常只适用于较小文本文件。zip文件中crc32为未加密文件的校验码,比如这里有一个加密的压缩包,直接双击就可以看见其中信息,而且我知道其中全是数字,便可使用脚本爆破。注:需要linux环境

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值