拿到一堆的加密的压缩包,也不是伪加密,也不能爆破。我反正是爆破了所有8位的字母加数字密码。
(要是弄一个中文进去,神仙也爆破不了)
但是每一个的大小倒是很小。
这个就很难办了。
原来有一个叫CRC32校验码的东西。
就是属性最后的那个东西。
之前有过拿相同校验码的文件,去破压缩包里的文件的题目,用到就是这个东西。
CRC32校验码就是用来检验文件内的数据是否正确的。
个人理解应该是做了一个
不可逆的编码
。
就像是有一个故事说的是:投标公司为了防止内鬼泄露价格消息,就做了一个“基于区块链的二次检验程序”。虽然不知道具体是怎么操作的。但是第一次提交要求把投递的计划书做一个不可逆加密。类似一个文件摘录吧。
信息不能从校验码复原,因为加密过程有损失,或者本来就没把完整的信息丢进去,但是可以从校验码发现信息是否有修改,因为校验码是以信息为明文加密的。
但是如果信息本身
足够小
,那么这个
校验码就足够用来检验爆破的枚举的信息是否是原来的信息
。真的是成也萧何,败也萧何。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# python3
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic:
for j in dic:
for k in dic:
for h in dic:
s = i + j + k + h
if crc == (binascii.crc32(s.encode())):
f.write(s)
return
def CrackZip():
for i in range(0, 68):
file = "C:/Users/brighten/Desktop/b2ca8799-13d7-45df-a707-94373bf2800c/"+'out' + str(i) + '.zip'
crc = zipfile.ZipFile(file, 'r').getinfo('data.txt').CRC
CrackCrc(crc)
print('\r' + "loading:{:%}".format(float((i + 1) / 68)), end='')
dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt', 'w')
print("\nCRC32begin")
CrackZip()
print("CRC32finished")
f.close()
就是做一个四重循环枚举所有的信息去和CRC32校验码对答案。
下面用来取出CRC32的数值。
crc = zipfile.ZipFile(file, 'r').getinfo('data.txt').CRC
用来把枚举的字符串encode为 CRC32编码
binascii.crc32(s.encode())
最后得到的BASE64编码的数据。
z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==
做BASE64解码,里面有可以识别的字符和一些意义不明的字符,就像是winhex的ASCII区一样,很想放到winhex里面。
这个文件里面能放txt文件,估计就是zip还是rar,反正也就那么两个常见。
结果是RAR文件。
需要在前面加RAR的头
52 61 72 21 1A 07 00
还有的人说最后那么7个字节是RAR文件尾。
好像和别的RAR文件不大一样。rar似乎是没有固定的文件尾。