python 通过crc32得到加密文件内容

Python010

python 通过crc32得到加密文件内容,第1张

crc检验原理实际上就是一个p位二进制序列之后附加一个r位二进制检验码(序列), 从而构成一个总长为n=p+r位的二进制序列, 附加在数据序列之后的这个检验码与数据序列的内容之间存在这某种特定的关系. 如果干扰因素使数据序列中的某一位或者某些位发生变化,这种特定的关系就会被破坏, 因此通过这种特性可以利用来爆破文件的内容.

文件的内容只有相同的时候他的crc校验才会一样.只要已知压缩文件的长度已知就可以获取他的crc32值来与我们的内容计算得到的值进行相互比较, 从而得到文件内容.(前提是文件内容长度够小才可以通过这种方法来实现,否则内容过长pc的算力有限)

现在有一个flag.zip 里面有一个flag.txt 文件 密码未知

使用模块如下:

得到文件的内容为4个字节长度

字典模块通过string模块得到

调用:

如果文件内容过长的话, 通过这种方式就不现实了.

解压文件得到如下的压缩文件

得到每个压缩包都是4个字节的大小, 压缩的文件为data.txt, 通过脚本得到文件内容, 脚本如下:

运行结果部分如下:

可以看见才多长这个东西很考验pc的性能, 然后直接进行base64解码, 得到的内容转为rar格式的文件, 然后补全文件头得到flag, 这里具体就不阐述了

得到的内容如下:

个人网站

本文实例讲述了python求crc32值的方法。分享给大家供大家参考。具体实现方法如下:

要想求CRC值,前面要import binascii

binascii.crc32(v) 求出了v的crc32值,这是一个long型,形如-1456387L,把这个值&0xffffffff得到的值形如48a213L的形式。

然后把这个值用16进制表示出来、

具体代码如下:

def _crc32(self, v):

"""

Generates the crc32 hash of the v.

@return: str, the str value for the crc32 of the v

"""

return '0x%x' % (binascii.crc32(v) &0xffffffff) #取crc32的八位数据 %x返回16进制