Skip to content

文件操作与隐写

1.文件类型识别

(1)File命令

  • 当文件没有后缀名或者有后缀名而无法正常打开时,根据识别出的文件类型来修改后缀名即可正常打开文件。

  • 使用场景:不知道后缀名,无法打开文件。格式: file 文件名

image-20200814162422418

(2)winhex/010editor

  • 通过winhex程序可以查看文件头类型,根据文件头类型判断出文件类型

  • 使用场景: windows 下通过文件头信息判断文件类型

image-20200814162539651

(3)文件头残缺/错误

  • 通常文件无法正常打开有两种情况,一种是文件头部残缺, 另一种是文件头部字段错误。

    针对文件头部残缺的情况,使用winhex或者010 Editor程序添加相应的文件头;

    针对头部字段错误,可以找一个相同类型的文件进行替换。

  • 使用场景:文件头部残缺或文件头部字段错误无法打开正常文件。

  • 格式: file 文件名

image-20200814163338518

2.文件分离操作

(1)Binwalk工具

  • Binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离,如果分离成功会输出到目标文件,同目录下生成一个形如_ 文件名_ extracted的文件目录,目录中有分离后的文件。
  • 用法: 分析文件: binwalk filename 分离文件: binwalk -e filename

(2)foremost

  • 如果binwalk无法正确分离出文件,可以使用foremost,将目标文件复制到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件。
  • 用法: foremost 文件名 -o 输出目录名

image-20200814165244610

(3)dd

  • 当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离。

  • 格式: dd if=源文件 of=目标文件名 bs=1 skip=开始分离的字节数

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

image-20200814170342974

image-20200814170840959

(4)Winhex

  • 除了使用dd外,还可以使用winhex实现文件手动分离,将目标文件拖入winhex中,找到要分离的部分,点击复制即可。
  • 使用场景: windows 下利用winhex程序对文件进行手动分离
  • 例:新建一个文件,文件大小1byte, 在文件开头位置点击粘贴,弹出提示框选否、确定,将文件保存为想要的后缀即可。

image-20200814170942114

(5)010Editor

将某块区域文件保存的方式如下:

image-20200814171213727

记事本里存放的二进制文件转成二进制文件

image-20200814171742467

image-20200814171845330

image-20200814171940447

题目复现

题目:[爆破鬼才]

  • 题目来源:polarctf-misc-[爆破鬼才]

0

  • 解题:

将图片用010打开,ctrl+f搜索压缩包文件头50 4B 03 04

屏幕截图2025-04-18142046

复制该文件头及其后面的数据

image-20250418142301732

点击右上角文件、新建

屏幕截图2025-04-18142426

得到新文件

image-20250418142545265

ctrl+s保存,添加后缀.zip,得到一个加密的压缩包

image-20250418142712197

使用ARCHPR工具进行密码爆破,得到密码,解压压缩包得到flag

image-20250418142944399

3.文件合并操作

(1)Linux下的文件合并

  • 使用场景: linux 下,通常对文件名相似的文件要进行批量合并

  • 格式: cat 合并的文件>输出的文件

  • 完整性检测:

    linux下计算文件md5:md5 sum 文件名

(2)Windows下的文件合并

  • 使用场景:windows下,通常要对文件名相似的文件进行批量合并

  • 格式: copy/B 合并的文件 输出的文件名

  • 完整性检测:

    windows 下计算文件md5:certutil -hashfile 文件名 md5

4.文件内容隐写

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

(1)Winhex/010Editor

  • 通常将要识别的文件拖入winhex中,查找具有关键字或明显与文件内容不和谐的部分,通常优先观察文件首部和尾部,搜索flag或key等关键字,最后拖动滚轮寻找

(2)Notepad++

  • 使用notepad++打开文件,查看文件头尾是否有含有关键字的字符串,搜索flag或key等关键字,最后拖动滚轮寻找。
  • 另外通过安装插件HEX-Editor可以实现winhex的功能。

滇ICP备2025057983号-1