压缩包相关
压缩包相关
ZIP相关
ZIP介绍
ZIP文件格式的组成: 压缩源文件数据区[文件头+文件数据+数据描述符]{此处可重复多次} +核心目录 +目录结束标识
格式缺失
文件头删掉的,但不开,但是用 binwalk 分析可以查出有 zip 个文件尾,可以用 winhex 添上文件头
ZIP伪加密
全局方式位标记,如果是 09 00 就会提示需要密码,一共有两处,如果想要实现伪加密,改前面的压缩源文件数据区的是不管用的
在后面的压缩源文件目标区管用,甚至只改后面这个就行
当然,如果本来是有密码的,你改掉是会出错的
密码爆破
。。。ARCHPR
RAR会比其他格式慢,RAR不管密码对不对,直接去试,解不出来就不对,而ZIP是先检验密码是不是正确的
ZIP明文攻击
手里有加密的压缩包和压缩包内部分文件,可以使用明文攻击方式。可以将压缩包内加密但是的另外未加密的文件进行压缩,然后用 ARCHPR 这个工具进行明文攻击
这个工具的 4.54 版本(起码我手上的这个)有问题,跑了两小时没跑出来,用低版本 4.0 几秒钟出结果
举个例子有个压缩包,里面俩加密的文件,但是有个相同名字的未被压缩的文件
这时候可以对外边的图片进行压缩,用 winrar,选择好压缩方式,不知道选啥就都试试
CRC爆破
CRC32:CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值
在产生CRC32时,源数据块的每一位都参与了运算,因此即使数据块中只有一位发生改变也 会得到不同的CRC32值,利用这个原理我们可以直接爆破出加密文件的内容
https://github.com/theonlypwner/crc32
python crc32.py reverse crc值 根据爆破出来的看看有是不是有啥特殊意思
NTFS流隐写
安恒的一道题:猫片,先是LSB提取一个png,然后改高度得到完整的取反色,下载文件,得到RAR,使用NTFS流隐写,打开软件,然后用 winrar 解压缩,然后扫描一下,发现一些其他的东西,导出就可以了
zlib解压
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')