CTF 隐写术 基础知识整理(二) 文件学习

CTF 隐写术 基础知识整理(二) 文件学习

文件知识(会随着不断学习进行更新)

我觉得想要熟练的掌握隐写术必须对文件的头部信息,尾部信息,构成都有着自己的记录

先来一个概括,提供只是忘记了查看下头部尾部的人
(没填的就是我还没查到,会慢慢补上的)

文件 开始标志 结束标志
JPEG(jpg) FF D8 FF FF D9
GIF (gif) 47 49 46 38 39 61 01 01 00 3B
PNG(png) 89 50 4E 47
CAD(dwg) 41 43 31 30
HTML(html) 68 74 6D 6C 3E
XML(xml) 3C 3F 78 6D 6C
ZIP Archive(zip) 50 4B 03 04
AVI(avi) 41 56 49 20
TIFF(tif) 49 49 2A 00
Windows Bitmap (bmp) 42 4D
A do be Photoshop (psd) 38 42 50 53
Rich Text Format 7B 5C 72 74 66
EMAIL(email) 44 65 6C 69 76 65
OutlookExpress(dbx) CF AD 12 FE C5 FD 74 6F
Outlook(pst) 21 42 44 4E
MS Word/Excel(xls.or.doc) D0 CF 11 E0
MS Access(mdb) 53 74 61 6E
WordPerect(wpd) FF 57 50 43
Postscript(eps.or.ps) 25 21 50 53 2D
A do be Acrobat(pdf) 24 50 44 46 2D 31 2E
Quicken(qdf) AC 9E BD 8F
Windows Password (pwl) E3 82 85 96
RAR Archive(rar) 52 61 72 21
Wave(wav) 57 41 56 45
Real Audio(ram) 2E 72 61 FD
Real Media(rm) 2E 52 4D 46
MPEG(mpg) 00 00 01 BA
Quicktime(mov) 6D 6F 6F 76
Windows Media(asf) 30 26 B2 75 8E
MIDI(mid) 4D 54 68 64

详细部分

png

文件格式
对于PNG文件来说,其文件头总是由固定的字节来描述的,剩余的部分由3个以上的PNG数据块(Chunk)按照特定的顺序组成。
文件头
文件头:89 50 4E 47 0D 0A 1A 0A + 数据块 + 数据块 + 数据块…..
数据块
PNG 定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillarychunks),这是可选的数据块。关键数据块定义了 4 个标准数据块,每个 PNG 文件都必须包含它们,PNG 读写软件也都必须要支持这些数据块。
这里写图片描述
这里写图片描述
对于每个数据块都有着统一的数据结构,每个数据块由 4 个部分组成
这里写图片描述
以下是详细数据块
IHDR(文件头数据块)
文件头数据块 IHDR(HeaderChunk):它包含有 PNG 文件中存储的图像数据的基本信息,由 13 字节组成,并要作为第一个数据块出现在 PNG 数据流中,而且一个 PNG 数据流中只能有一个文件头数据块,其中我们只关注前8字节的内容(!!这里出题啊!!!)
这里写图片描述
CTF 经常会去更改一张图片的高度或者宽度使得一张图片显示不完整从而达到隐藏信息的目的。

Kali中不可以打开,提示文件头错误,而Windows自带的图片查看器可以打开,就提醒了我们IHDR被人篡改过。

找到数据块更改长宽高 即可

IDAT(图像数据块)
IDAT:存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。
* IDAT块只有当上一个块充满时,才会继续下一个新块。*
也可以使用Stegsolve -> Format Analysis有详细介绍
这里写图片描述

zip(部分借鉴)

一个 ZIP 文件由三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
注意我在下面说所的加密字段 如果是 00 00 改成 09 00
就会提示有密码 进行了伪加密
这里写图片描述

压缩源文件数据区:  
50 4B 03 04:这是头文件标记(0x04034b5014 00:解压文件所需 pkware 版本  
00 00:全局方式位标记(有无加密)  
08 00:压缩方式  
5A 7E:最后修改文件时间  
F7 46:最后修改文件日期  
16 B5 80 14:CRC-32校验(1480B516) 
19 00 00 00:压缩后尺寸(2517 00 00 00:未压缩尺寸(2307 00:文件名长度  
00 00:扩展记录长度  
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500 
压缩源文件目录区:  
50 4B 01 02:目录中文件文件头标记(0x02014b50) 
3F 00:压缩使用的 pkware 版本  
14 00:解压文件所需 pkware 版本  
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)  
08 00:压缩方式  
5A 7E:最后修改文件时间  
F7 46:最后修改文件日期  
16 B5 80 14:CRC-32校验(1480B516) 
19 00 00 00:压缩后尺寸(2517 00 00 00:未压缩尺寸(2307 00:文件名长度  
24 00:扩展字段长度  
00 00:文件注释长度  
00 00:磁盘开始号  
00 00:内部文件属性  
20 00 00 00:外部文件属性  
00 00 00 00:局部头部偏移量  
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001 
压缩源文件目录结束标志:  
50 4B 05 06:目录结束标记  
00 00:当前磁盘编号  
00 00:目录区开始磁盘编号  
01 00:本磁盘上纪录总数  
01 00:目录区中纪录总数  
59 00 00 00:目录区尺寸大小  
3E 00 00 00:目录区对第一张磁盘的偏移量  
00 00:ZIP 文件注释长度

测试一 密码位更改
猜想 如果把一个zip文件的文件头或者加密标志位进行适当的修改,那可能 会改变 文件的可读性
先压缩一个1.zip,再用Winhex打开,如下图:
这里写图片描述
压缩源文件数据区:
50 4B 03 04:这是头文件标记
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
08 00:压缩方式
07 76:最后修改文件时间
F2 48:最后修改文件日期
……
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记(0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
08 00:压缩方式
07 76:最后修改文件时间
F2 48:最后修改文件日期
……
综上所述,如果把第二个加密标记位的00 00改为09 00,打开就会提示有密码:
这里写图片描述
于是乎,这样就达到了zip伪加密的目的,可是这里又有一个疑问了,你可能会问,为什么改成09,而不是其他的数字呢,其实改成09只是举的一个例子,只要末位是奇数,就代表加密,反之,末位是偶数代表未加密(这是我猜想的,具体操作也符合我的猜想,可我不知道这个原理是什么,如果你了解的话,欢迎来分享分享~^_^
)
测试二 头文件位置更改
将文件头 50 4B 改成 4B 50(我遇见的题,有一道就是这样)
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_40574571/article/details/80150157