ZIP 相关

ZIP 介绍

ZIP 文件格式的组成: 压缩源文件数据区[文件头+文件数据+数据描述符]{此处可重复多次} +核心目录 +目录结束标识

image.png
image.png
image.png
image.png

格式缺失

文件头删掉的,但不开,但是用 binwalk 分析可以查出有 zip 个文件尾,可以用 winhex 添上文件头

ZIP 伪加密

全局方式位标记,如果是 09 00 就会提示需要密码,一共有两处,如果想要实现伪加密,改前面的压缩源文件数据区的是不管用的

image.png
image.png

在后面的压缩源文件目标区管用,甚至只改后面这个就行

image.png
image.png

当然,如果本来是有密码的,你改掉是会出错的

密码爆破

。。。ARCHPR

RAR 会比其他格式慢,RAR 不管密码对不对,直接去试,解不出来就不对,而 ZIP 是先检验密码是不是正确的

ZIP 明文攻击

手里有加密的压缩包和压缩包内部分文件,可以使用明文攻击方式。可以将压缩包内加密但是的另外未加密的文件进行压缩,然后用 ARCHPR 这个工具进行明文攻击
这个工具的 4.54 版本(起码我手上的这个)有问题,跑了两小时没跑出来,用低版本 4.0 几秒钟出结果

举个例子有个压缩包,里面俩加密的文件,但是有个相同名字的未被压缩的文件

image.png
image.png

这时候可以对外边的图片进行压缩,用 winrar,选择好压缩方式,不知道选啥就都试试

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

CRC 爆破

CRC32:CRC 本身是“冗余校验码”的意思,CRC32 则表示会产生一个 32bit(8 位十六进制数)的校验值

在产生 CRC32 时,源数据块的每一位都参与了运算,因此即使数据块中只有一位发生改变也 会得到不同的 CRC32 值,利用这个原理我们可以直接爆破出加密文件的内容

https://github.com/theonlypwner/crc32

python crc32.py reverse crc 值 根据爆破出来的看看有是不是有啥特殊意思

image.png
image.png

NTFS 流隐写

安恒的一道题:猫片,先是 LSB 提取一个 png,然后改高度得到完整的取反色,下载文件,得到 RAR,使用 NTFS 流隐写,打开软件,然后用 winrar 解压缩,然后扫描一下,发现一些其他的东西,导出就可以了

image.png
image.png

zlib 解压

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import zlib
def compress(infile, dst, level=9):
infile = open(infile, 'rb')
dst = open(dst, 'wb')
compress = zlib.compressobj(level)
data = infile.read(1024)
while data:
dst.write(compress.compress(data))
data = infile.read(1024)
dst.write(compress.flush())
def decompress(infile, dst):
infile = open(infile, 'rb')
dst = open(dst, 'wb')
decompress = zlib.decompressobj()
data = infile.read(1024)
while data:
dst.write(decompress.decompress(data))
data = infile.read(1024)
dst.write(decompress.flush())

if __name__ == "__main__":
#compress('in.txt', 'out.txt')
decompress('zlib_out', 'out_decompress.txt')