目录

png图片结构

图片的crc校验


png图片结构

1、开头的0~7八个字节为png的文件头:89 50 4E 47 0D 0A 1A 0A (固定格式)

2、8~11四个字节:00 00 00 0D 表示头部数据块的长度为13(固定格式)

3、12~15四个字节:49 48 44 52 表示文件头数据块的标示(固定格式)

4、16~19四个字节:00 00 03 84表示图片的宽(不固定)

5、20~23四个字节:00 00 00 96表示图片的高(不固定)

6、24~28五个字节:08 02 00 00 00表示Bit depth(图像深度)、ColorType(颜色类型)、 Compression method(压缩方法)、 Filter method(滤波器方法)、Interlace method(隔行扫描方法)这五个字节不固定,均为可变数据

7、29~32四个字节:76 EC 1E 40为图片的crc校验值由从第12个字节到第28个字节的十七位字节进行crc计算得到

图片的crc校验

拿到这类的题目之后,首先要验证图片的crc值是否正确。打开在线网站:CRC(循环冗余校验)在线计算_ip33.com

输入第12到第28共十七位字节,参数模型选择crc32,点击计算,得到图片crc校验值

校验值为09 DA D1 61,与图片校验值76 EC 1E 40不等,说明该图片crc校验有问题。一般是由于高度或者宽度所引起的,这里需要用到脚本对其宽高进行爆破。

脚本:

import binascii
import structcrcbp = open("misc25.png", "rb").read()    #打开图片
crc32frombp = int(crcbp[29:33].hex(),16)     #读取图片中的CRC校验值
print(crc32frombp)for i in range(4000):                        #宽度1-4000进行枚举for j in range(4000):                    #高度1-4000进行枚举data = crcbp[12:16] + \struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]crc32 = binascii.crc32(data) & 0xffffffff# print(crc32)if(crc32 == crc32frombp):            #计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定print(i, j)print('hex:', hex(i), hex(j))exit(0)

运行,得到正确的宽高

可以看到高度出了问题,在winhex中修改高度为FA,另存为新的图片,这样就可以看到flag了

png图片的结构和crc校验相关推荐

  1. BLE蓝牙广播包的比特流处理之白噪化和CRC校验

    目标: 1. 通过蓝牙协议了解BLE蓝牙的广播帧结构 2.了解蓝牙比特流处理流程 3.使用matlab重现白噪化和CRC校验 1.蓝牙的广播帧结构: 通过蓝牙BLE协议我们可以看到,蓝牙的广播帧结构如 ...

  2. (一)串口通信:同步通信与异步通信的区别;异步通信:握手、收发过程、心跳包、定时器、粘包、拆包、丢包、误包(或误码)、帧结构、奇偶校验、CRC校验等等

    目录 第一章.简介 第二章.并行通信 第三章.串行通信 3.1.同步通信 3.1.1.同步通信的原理 3.1.2.同步通信的数据格式 3.1.3.同步通信特点 3.2.异步通信 3.2.1.异步通信的 ...

  3. CRC校验原理及STM32 IAP在线升级程序

    CRC校验原理: 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据 ...

  4. 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法

    Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...

  5. can协议crc计算_CAN总线通信的CRC校验方法

    数据校验是为保证数据的完整性进行的一种验证操作.CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据. 在现场总线通信和控制的实际应用中,工业应用环境 ...

  6. 基于表格的CRC校验码实现

    关于CRC的理论计算方法不做赘述,本文介绍基于查表的CRC优化算法的实现. 常规计算方法是如何实现的? 理论方法不赘述,这里简单说明程序实现.因为要处理的信息可能非常长,所以直接使用除法指令是不可行的 ...

  7. win 10 电脑与 H C-05蓝牙模块连接方法集合(含k60 CRC 校验代码软件下载地址)

    在飞思卡尔比赛,有时需要通过蓝牙模块让电脑和小车连接,然后用串口将小车的实时数据发送到电脑,以便调车.但是在蓝牙模块与电脑连接时,因为驱动等原因,容易连接失败.经过网上搜查,与个人及队友试验,总结以下 ...

  8. MODBUS协议中的CRC校验

    一.RTU 檢查碼(CRC)計算器 第一种: RTU 檢查碼(CRC)計算器 大小端转换后,CRC检查码为:AB 89 说明,这个计算器还是可以用的. 第二种: On-line CRC calcula ...

  9. LFSR和CRC串行实现移位寄存器结构,并行CRC时序实现

    文章部分转自https://blog.csdn.net/yongan1006/article/details/8716456 LFSR主要用于通信加扰解扰:CRC主要用于通信传输数据校验. 一 .LF ...

最新文章

  1. udp_socket聊天器demo
  2. VS出现异常?!和十进制转二进制比是小事
  3. /dev/null 位桶
  4. .NET中的Command(命令)模式
  5. mysql 辅助索引_MySQL InnoDB B+tree索引
  6. 百老汇原版音乐剧《摇滚学校》2月开启中国巡演
  7. python中不包不包括_Unittest-断言列表中的一组项包含在(或不包含在)另一个lis中...
  8. html5支持哪媒体,html5 支持哪些媒体元素
  9. python 仿真模拟_Python SimPy 仿真系列 (1)
  10. TP5.x——update更新成功但是返回是0
  11. 40个经典单片机实验_太经典啦!单片机常用的14个C语言算法(附详细代码)
  12. pcb 受潮_怎样让PCB远离潮湿危害
  13. S32K144_FTM定时器中断
  14. (MySQL)Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'readerName' at row 1
  15. 在豌豆荚安卓市场下载了伪造的ES文件管理器,该流氓apk会自动的下载手机游戏
  16. 黑苹果双系统时间不一致_解决 Windows/macOS 双系统时间不同步问题
  17. 元宇宙游戏项目:Decentraland(治理通证:MANA)
  18. 软件企业需要每年年审吗?
  19. 『高性能模型』轻量级网络梳理
  20. 032 Rust死灵书之Vec的IntoIter

热门文章

  1. 软考-项目范围管理(九)
  2. 傅立叶分析导论-5 傅里叶变换
  3. 太阳崇拜---64幅由算法生成的八芒星图像
  4. STL综合题:歌唱比赛
  5. 服务器中的SAS硬盘简介
  6. 技嘉 X570 AORUS MASTER主板 无法进入BIOS问题
  7. 查准率-查全率precision recall(PR)曲线Matlab实现
  8. 360病毒|360后缀文件|360勒索病毒|文件被加密为360|中了360勒索病毒怎么办?|数据库文件恢复|数据恢复|
  9. Qt+WIN10+Python:PointNet实现点云显示
  10. librosa | 系统实战(五~十七)