【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-小绿

举报
剑豪 发表于 2023/06/14 18:58:40 2023/06/14
【摘要】 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:s1z3_d03s_ma773r_baby

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。