首页 > 其他分享 >一叶障目

一叶障目

时间:2023-12-20 21:37:22浏览次数:22  
标签:crc 校验 一叶障目 CRC key print crc32

image-20231220190248511

题解

拿到一张png图片,CRC值不对,需要修改宽高比

image-20231220201556432

爆破修复

image-20231220204803807

查看output.png

image-20231220204903480

获得flag


flag

flag{66666}

检验CRC

import binascii
import struct
import argparse   #接收参数模块

# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='校验CRC脚本参数说明')
# 添加需要接收的参数
parser.add_argument('-f', type=str, help='文件名')
# 解析命令行参数
args = parser.parse_args()


# 开始读取图片内容
crc_f = open(f"{args.f}", "rb").read()    #打开图片
crc_key = int(crc_f[29:33].hex(),16)  #读取图片中的CRC校验值
print(f"图片CRC校验值:{crc_key}")
 
#计算CRC
data = crc_f[12:29]
crc32 = binascii.crc32(data) & 0xffffffff
print(f"CRC计算值:{crc32}")
if(crc32 == crc_key):            #比较CRC计算值和图片的校验值是否一致,不相等说明宽高比异常
    print("图片宽高比正常")
elif(crc32 != crc_key):
    print("图片CRC校验失败,宽高比异常")
 

修复CRC

import binascii
import struct
import argparse   #接收参数模块

# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='修复CRC脚本参数说明')
# 添加需要接收的参数
parser.add_argument('-f', type=str, help='文件名')
# 解析命令行参数
args = parser.parse_args()

 
crc_f = open(f"{args.f}", "rb").read()    #打开图片
crc_key = int(crc_f[29:33].hex(),16)     #读取图片中的CRC校验值
print(f"图片CRC校验值:{crc_key}")

for i in range(4294):              # 4294967295 四位数就够了            
    for j in range(4294):                    
        data = crc_f[12:16]+struct.pack('>i', i)+struct.pack('>i', j)+crc_f[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        #print(f"当前爆破CRC计算值:{crc32}")  

        if(crc32 == crc_key):            #CRC计算值与校验值相同,宽高比爆破完成
            print(f"当前宽高比CRC计算值:{crc32}")
            print(f"宽 {i} , 高 {j}")
            print('hex:', hex(i), hex(j))
            #爆破完成,重新生成写入
            new_f = bytearray(crc_f)
            
            new_f[16:20] = struct.pack('>i', i)  # 宽
            new_f[20:24] = struct.pack('>i', j)  # 高
            
            f = open('output.png','wb')  #写入保存
            f.write(new_f)
            f.close

标签:crc,校验,一叶障目,CRC,key,print,crc32
From: https://www.cnblogs.com/GaolengDeKecy/p/17917601.html

相关文章