【CTF】【winhex】超详细jpg图片结构分析

前言

本文排版有些乱,例子镶嵌在每个知识点里,但整体实例都是按照顺序讲解的,而对于讲过的知识点不再赘述。

本文也将持续更新。

段结构

JPG文件由一个个段构成
JPG图片所有数据都是高位在前

在这里插入图片描述

字节

在这里插入图片描述
这个红色框框里的两个数表示一个字节

高位在前

什么是高位在前?
例如现实生活中1234,高位在前则表示12 34

而winhex的都是低位在前,在后面会讲到段长度,如00 10,低位在前则表示10 00

段结构包括:
段标识|段类型|段长度|端数据

段标识

1字节,固定为FFH,H表示16进制

段类型

1字节

文件头

名称 SOI 标记码 D8

在这里插入图片描述如图,D8表示本jpg文件的文件头,前面的FF表示段标识

文件尾

名称 EOI 标记码 D9
在这里插入图片描述拉到最后,FF D9表示文件尾

帧开始(标准JPEG)

  • 名称 SOF0 标记码 C0
  • 名称 SOF1 标记码 C1
    C0与C1在一个文件里只会存在一种,下面以C0为例,C1同样操作

我们查找 FF C0

在这里插入图片描述
在这里插入图片描述

后面两个字节00 11表示段长度,将十六进制转为十进制,可以知道后面有15个字节的数据(段长度占了2字节,并且不包括段标识和段类型)
那么我们可以看到后面的数据

标志08

1个字节

在这里插入图片描述

这个标志固定是08

y轴分辨率

2字节
在这里插入图片描述

计算一下,
在这里插入图片描述

与实际的分辨率(高度)一样
在这里插入图片描述

x轴分辨率

2字节

在这里插入图片描述这两字节表示x轴分辨率,计算一下

在这里插入图片描述与实际上文件的属性是一样的

在这里插入图片描述

组件数量03

这1个字节固定为03

在这里插入图片描述在这里插入图片描述
从03之后的9个字节,都为组件数据,且每个组件数据为3个字节

组件大小和数量都为固定的。

定义Huffman表(霍夫曼表)

名称 DHT 标记码 C4

固定4FF C4
其中2个记录亮度,2个记录色度

段长度

2字节
不包含段标识、段类型

例子在帧开始处讲了

段数据

长度为段长度-2

参考资料

https://www.bilibili.com/video/BV1MJ411p7Ly/?spm_id_from=333.999.0.0&vd_source=b914a8de9ea8b12ba5cb6d8edd1b346c

  • 11
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LenckCuak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值