914 字
5 分钟
MISC——图片隐写之单、多文件追加隐写

肥鱼.jpg

文件追加隐写本质是直接附加隐写的进阶篇:单文件追加即尾部多了一个完整文件,多文件追加则是尾巴上串了好几个文件。

但本质是不变的:即一般浏览器读到结束标记就停止解析,而忽略下文,导致追加内容不影响图片的正常显示。

单文件追加的一些特征:

  • 图片能正常打开,但 ls -l 大小明显偏大。
  • 尾部是一个有完整文件头的另一个文件。
  • 常见组合:PNG+ZIP、JPG+RAR、PNG+PNG、JPG+PDF。

使用Binwalk命令(kali下) 分析文件:binwalk filename 分离文件:binwalk -e filename binwalk帮我们分离文件时,遇到压缩包会自动帮我们解压

有时候binwalk识别不出来,那么可以尝试一下foremost(kali下) 用法 文件名 -o 输出目录名 作用和binwalk差不多,他会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件 与binwalk不同foremost分离的文件只会帮你自动分类,而不会解压。

当binwalk与foremost都无法解决的话,可以使用dd,这是三个文件解析工具中最难用的一个。有遇到文件分片混乱组合,不能并成一个文件的时候可以使用。

格式: dd if=源文件 of=目标文件名 bs=1(一块的大小)count=3(字节的数量) skip=分离的字节 dd if=图片 of=out.zip bs=1 skip=偏移 dd if=图片 of=out.zip bs=1 skip=偏移 count=长度

参数说明: if=file 输入文件名,缺省为标准输入 of=file 输出文件名,缺省为标准输出 bs=byte 同时设置读写块的大小为bytes,可代替ibs和obs。 skip=blocks 从输入文件开头跳过blocks个块后在开始复制

但是dd不是万能的,这是一个复杂的工具中间还需要计算,所以题目复杂到你根本就不想用dd去解决问题,那么这个时候,可以使用winhex实现文件手动分离,当然010也可以。

选中需要分离的地方,将其导出,右键后,选择selection下的save selection,保存文件即可。

有时候题目给了一个txt,但里边是一长串的十六进制的代码,这时候可以放到010editor中,选择file下的import hex,即可导出,寻找到文件头即可。

而文件内容隐写,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键词KEY或flag来查找隐藏内容。

windows下直接把文件拖到010editor中,查找关键词或寻找明显与文件内容不和谐的部分,通常优先观察文件首部与尾部,搜索flag或key等关键词寻找。 或使用npp,ndd工具也可以,操作类似。

不过其实单文件追加一般也并不会如此单纯,比如隐写了一个压缩包,分离后发现被加密了,不过这一点我们在伪加密部分再讲。

多文件追加的一些特征:

  • 一张图后面串了多个文件。
  • binwalk 会列出多个偏移,每个偏移对应一个文件。 同上,不过多文件追加的时候有可能会在文件与文件的交界处留有密文,使用以下命令可以查看

xxd -s 前一个文件尾偏移 -l 256 图片

MISC——图片隐写之单、多文件追加隐写
https://imjiazi.top/posts/misc4/
作者
甲子
发布于
2026-11-09
许可协议
CC BY-NC-SA 4.0