【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-小绿
【摘要】 CRC作用: 循环冗余校验码(CRC)是常用的数据校验技术。CRC的主要作用是检测和纠正数据传输或存储中的错误,以确保数据准确地到达目的地。
前言
CRC作用: 循环冗余校验码(CRC)是常用的数据校验技术。CRC的主要作用是检测和纠正数据传输或存储中的错误,以确保数据准确地到达目的地。
CRC具体算法: CRC校验算法是通过对数据采用指定的生成多项式进行计算,生成一组校验码。从数据传输角度看,发送方将数据编码为一组校验码后附加在数据传输中,接收方在接收数据时,同样采用CRC算法计算一组校验码,与接收到的校验码进行比较,从而确定数据是否存在错误。常用的生成多项式有CRC-16、CRC-32等。
CRC应用场景: CRC校验常用于计算机网络、串行接口、存储器、无线通信以及数字电视等应用领域,以保证数据传输的准确性。比如,在网络传输中,TCP/IP协议中使用的校验码就是CRC码;在存储器领域,硬盘、U盘等存储设备也常用CRC码来校验数据完整性。此外,在数字广播电视领域,CRC码也常被用来检验DTV信号的完整性。
1.打开题目
2.解题
打开图片发现是不全图片想到是宽高显示补全,使用crc脚本宽高修复脚本
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:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)