不用密码解密压缩文件(CRC32算法)

4.Rar file without password

rar的压缩文档中是提供一个CRC32的值,这个值是文档在压缩之前的CRC32值,相信很多人都知道:每个不同的文件都有基本唯一的一个CRC32值。

CRC全称为循环冗余校验(Cyclic Redundancy Check, CRC),用来校验文件是否出错但并不能用于自动纠错。这种爆破方式只适用于文本文件较小的情况下,如果很大,不如去爆破密码。基本上不同文件都有唯一的CRC32值,那么在文件内容较小的情况下就更不可能重复了。
因为txt文本中的内容较短,所以我们可以用暴力穷举文本内容,只要找到相同的CRC码,即找到正确的文本内容。
源代码:CRC32.py

import binascii
#import string
#各种打印字符
#dic=string.printable
dic=range(0,128)
crc = 0x05665E74 # 记得要以0x开头
def CrackCrc(crc):
    for i in dic :
        for j in dic:
            for p in dic:
                s = str(chr(i)+chr(j)+chr(p)).encode("utf-8")
                #在 Python 2.x 的版本中,binascii.crc32 所计算出來的 CRC 值域为[-2^31, 2^31-1] 之间的有符号整数,为了要与一般CRC 结果作比对,需要将其转为无符号整数,所以加上& 0xffffffff来进行转换。
                # 如果是 Python 3.x 的版本,其计算结果为 [0, 2^32-1] 间的无符号整数,因此不需额外加上& 0xffffffff 。
                #if crc == (binascii.crc32(s) & 0xffffffff):
                if crc == binascii.crc32(s):
                    #Python3中字符都为unicode编码,必须先转码utf-8
                    print(str(s,'utf-8'))
                    print("CRC冲撞攻击解密的明文为:"+str(s,'utf-8'))
CrackCrc(crc)

实验结果截图:
在这里插入图片描述

最后rate.rar中的rate.txt解密的明文为:77%。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值