解决zip伪加密的另一方法-爆破


hbctf的一个题–>http://hbctf-1252906577.costj.myqcloud.com/misc/flag6.zip

先来writeup:

解压软件打开,可以看到CRC32值。

mark

因为题目提示了是6位数字,匹配CRC32爆破。

import binascii
real = 0x9c4d9a5d
for y in range(100000, 999999):
    if real == (binascii.crc32(str(y)) & 0xffffffff):
        print(y)

CRC的全称是循环冗余校验

CRC32:CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值。

binascii:二进制和ASCII互转以及其他进制转换

​ 由于CRC32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值.再加上题目提示了6位数字,这就大大缩小了范围,不同的数的CRC32值是不同的,所以可以通过循环匹配来爆破出文件值,即flag。


文章作者: LANVNAL
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LANVNAL !
  目录