前言
CRC作用:
循环冗余校验码(CRC)是常用的数据校验技术。CRC的主要作用是检测和纠正数据传输或存储中的错误,以确保数据准确地到达目的地。
CRC具体算法:
CRC校验算法是通过对数据采用指定的生成多项式进行计算,生成一组校验码。从数据传输角度看,发送方将数据编码为一组校验码后附加在数据传输中,接收方在接收数据时,同样采用CRC算法计算一组校验码,与接收到的校验码进行比较,从而确定数据是否存在错误。常用的生成多项式有CRC-16、CRC-32等。
CRC应用场景:
CRC校验常用于计算机网络、串行接口、存储器、无线通信以及数字电视等应用领域,以保证数据传输的准确性。比如,在网络传输中,TCP/IP协议中使用的校验码就是CRC码;在存储器领域,硬盘、U盘等存储设备也常用CRC码来校验数据完整性。此外,在数字广播电视领域,CRC码也常被用来检验DTV信号的完整性。
一、小绿
1.打开题目

2.解题
打开图片发现是不全图片想到是宽高显示补全,使用crc脚本宽高修复脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import binascii import struct import sys
file = input("图片地址:") fr = open(file,'rb').read() data = bytearray(fr[0x0c:0x1d]) crc32key = eval('0x'+str(binascii.b2a_hex(fr[0x1d:0x21]))[2:-1]) #原来的代码: crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",'')) n = 4095 for w in range(n): width = bytearray(struct.pack('>i', w)) for h in range(n): height = bytearray(struct.pack('>i', h)) for x in range(4): data[x+4] = width[x] data[x+8] = height[x] crc32result = binascii.crc32(data) & 0xffffffff if crc32result == crc32key: print(width,height) newpic = bytearray(fr) for x in range(4): newpic[x+16] = width[x] newpic[x+20] = height[x] fw = open(file+'.png','wb') fw.write(newpic) fw.close sys.exit()
|

flag:s1z3_d03s_ma773r_baby