png图片的结构和crc校验
目录
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校验相关推荐
- BLE蓝牙广播包的比特流处理之白噪化和CRC校验
目标: 1. 通过蓝牙协议了解BLE蓝牙的广播帧结构 2.了解蓝牙比特流处理流程 3.使用matlab重现白噪化和CRC校验 1.蓝牙的广播帧结构: 通过蓝牙BLE协议我们可以看到,蓝牙的广播帧结构如 ...
- (一)串口通信:同步通信与异步通信的区别;异步通信:握手、收发过程、心跳包、定时器、粘包、拆包、丢包、误包(或误码)、帧结构、奇偶校验、CRC校验等等
目录 第一章.简介 第二章.并行通信 第三章.串行通信 3.1.同步通信 3.1.1.同步通信的原理 3.1.2.同步通信的数据格式 3.1.3.同步通信特点 3.2.异步通信 3.2.1.异步通信的 ...
- CRC校验原理及STM32 IAP在线升级程序
CRC校验原理: 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据 ...
- 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法
Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...
- can协议crc计算_CAN总线通信的CRC校验方法
数据校验是为保证数据的完整性进行的一种验证操作.CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据. 在现场总线通信和控制的实际应用中,工业应用环境 ...
- 基于表格的CRC校验码实现
关于CRC的理论计算方法不做赘述,本文介绍基于查表的CRC优化算法的实现. 常规计算方法是如何实现的? 理论方法不赘述,这里简单说明程序实现.因为要处理的信息可能非常长,所以直接使用除法指令是不可行的 ...
- win 10 电脑与 H C-05蓝牙模块连接方法集合(含k60 CRC 校验代码软件下载地址)
在飞思卡尔比赛,有时需要通过蓝牙模块让电脑和小车连接,然后用串口将小车的实时数据发送到电脑,以便调车.但是在蓝牙模块与电脑连接时,因为驱动等原因,容易连接失败.经过网上搜查,与个人及队友试验,总结以下 ...
- MODBUS协议中的CRC校验
一.RTU 檢查碼(CRC)計算器 第一种: RTU 檢查碼(CRC)計算器 大小端转换后,CRC检查码为:AB 89 说明,这个计算器还是可以用的. 第二种: On-line CRC calcula ...
- LFSR和CRC串行实现移位寄存器结构,并行CRC时序实现
文章部分转自https://blog.csdn.net/yongan1006/article/details/8716456 LFSR主要用于通信加扰解扰:CRC主要用于通信传输数据校验. 一 .LF ...
最新文章
- udp_socket聊天器demo
- VS出现异常?!和十进制转二进制比是小事
- /dev/null 位桶
- .NET中的Command(命令)模式
- mysql 辅助索引_MySQL InnoDB B+tree索引
- 百老汇原版音乐剧《摇滚学校》2月开启中国巡演
- python中不包不包括_Unittest-断言列表中的一组项包含在(或不包含在)另一个lis中...
- html5支持哪媒体,html5 支持哪些媒体元素
- python 仿真模拟_Python SimPy 仿真系列 (1)
- TP5.x——update更新成功但是返回是0
- 40个经典单片机实验_太经典啦!单片机常用的14个C语言算法(附详细代码)
- pcb 受潮_怎样让PCB远离潮湿危害
- S32K144_FTM定时器中断
- (MySQL)Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'readerName' at row 1
- 在豌豆荚安卓市场下载了伪造的ES文件管理器,该流氓apk会自动的下载手机游戏
- 黑苹果双系统时间不一致_解决 Windows/macOS 双系统时间不同步问题
- 元宇宙游戏项目:Decentraland(治理通证:MANA)
- 软件企业需要每年年审吗?
- 『高性能模型』轻量级网络梳理
- 032 Rust死灵书之Vec的IntoIter
热门文章
- 软考-项目范围管理(九)
- 傅立叶分析导论-5 傅里叶变换
- 太阳崇拜---64幅由算法生成的八芒星图像
- STL综合题:歌唱比赛
- 服务器中的SAS硬盘简介
- 技嘉 X570 AORUS MASTER主板 无法进入BIOS问题
- 查准率-查全率precision recall(PR)曲线Matlab实现
- 360病毒|360后缀文件|360勒索病毒|文件被加密为360|中了360勒索病毒怎么办?|数据库文件恢复|数据恢复|
- Qt+WIN10+Python:PointNet实现点云显示
- librosa | 系统实战(五~十七)