分离图片中的隐藏文件方法总结
前言
CTF中经常会碰见图片隐藏文件的题目,今天就来总结一下分离隐藏文件的几种方法。
1、图片分析:
如图为CTF题目中一个隐藏文件的图片
首先对图片进行分析,这里介绍一个工具binwalk(kali中是自带的,也可以下载到windows中使用)。
使用方法:binwalk + 文件路径/文件名
binwalk 1.jpg
执行命令后,binwalk就会自动分析这个jpg文件:
从分析的结果看,这个jpg文件隐藏着一个zip文件,从48221块偏移开始就是zip文件。
2、如何分离:
在得到隐藏信息后,改如何把zip文件分离出,下面介绍几种方法:
2.1、binwalk 分离:
还是使用binwalk工具,使用dd命令分离出隐藏文件:
dd if=1.jpg of=1.zip skip=48221 bs=1
解释:if 指定输入文件,of 指定输出文件,skip 指定从输入文件开头跳过48221个块后开始复制,bs设
置每次读写块的大小为1字节
执行后会得到一个1.zip文件。
2.2、foremost 工具分离:
foremost是一个基于文件文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具,win可以下载使用,Linux可以通过下面命令安装使用:
apt-get install foremost
Linux下分离文件的命令为:
foremost 1.jpg
执行命令后,foremost会生成output目录存放分离出的文件。
Win下是把文件直接拖到 foremost.exe上,也会生成output目录存放分离出的文件。
2.3、hex编辑器分离:
hex编辑器有很多,win下有用得较多的winhex、UltraEdit等,linux下有hexeditor等。这里我们以winhex为例来手动分离。
一个完整的 jpg 文件由 FF D8 开头,FF D9结尾,图片查看器会忽略 FF D9 以后的内容,因此可以在 jpg 文件中加入其他文件。
经过上面的分析, 知道图片中隐藏了zip文件,zip文件的开头16进制为504B0304,先搜索16进制文本 FFD9,然后后面跟着504B0304,于是就可以从 50 开始,复制到最后(因为这里只有一个zip,所以复制到最后),另存为新文件,就得到了隐藏的压缩包。
2.4、改后缀名:
分析知道隐藏文件是zip后,有一个简单粗暴的方法是直接把图片的后缀改为.zip,然后解压即可(这种方法虽然简单快速,但如果隐写了多个文件时可能会失败)。