加密标识位:
在Zip文件的加密标识位中,奇数和偶数的区别在于最低位(least significant bit)的值。这个位决定了文件是否被加密。
如果加密标识位的最低位是奇数(值为1),表示文件被标记为加密。
如果加密标识位的最低位是偶数(值为0),表示文件未被标记为加密。
这个最低位的值是用来模拟Zip文件的伪加密。实际上,伪加密并不提供真正的数据保护,只是通过修改标志位来表示文件已经加密。
ZIP压缩源文件数据区:
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
00 00:扩展记录长度
伪加密修复原理
程序通过检测zip文件的加密标志位,并对标识位进行适当修改,最后测试修改后的压缩包软件是否可以正常解压即可。
修复前的伪加密文件:test01.zip
修复后的正常无加密的文件:test01.zip
2.暴力破解-内置字典
python3 ZipCracker.py test02.zip
3.暴力破解-用户自定义字典
python3 ZipCracker.py test02.zip MyDict.txt
4.暴力破解-CRC32碰撞
python3 ZipCracker.py test03.zip
CRC32碰撞原理
CRC32是一种冗余校验码,它可以生成一个32位的校验值,用于验证数据的完整性。在文件中,比如PNG图像或ZIP压缩包中,CRC32被用作校验文件的完整性。
由于CRC32计算校验值时会考虑数据块中的每一位,即使只有一位发生变化,CRC32值也会完全不同。这导致了基于CRC32的攻击方法。
在攻击中,我们利用以下条件进行操作:
目标文件的内容很小,通常只有几个字节。 加密密码很长。
我们不是直接尝试破解压缩包的密码,而是尝试破解原始文件的内容,通常是可见的字符串。通过猜测和尝试不同的字符串,我们可以生成不同的CRC32值,然后与目标文件的CRC32值进行比较,以获取所需的信息。这样,我们可以绕过对加密密码的破解,直接攻击文件内容,从而达到获取目标信息的目的。这种攻击方法利用了CRC32的特性,即使只修改了文件内容的一小部分,CRC32值也会完全改变,从而使我们能够尝试不同的字符串来获取所需的信息。
本工具仅提供给安全测试人员进行安全自查使用,用户滥用造成的一切后果与作者无关,使用者请务必遵守当地法律 本程序不得用于商业用途,仅限学习交流。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)