一叶障目,如何才能不被局部遮挡视野?

摘要:题解 拿到一张png图片,CRC值不对,需要修改宽高比 爆破修复 查看output.png 获得flag flag flag{66666} 检验CRC import binascii import struct import argpars
题解 拿到一张png图片,CRC值不对,需要修改宽高比 爆破修复 查看output.png 获得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