文件头格式解析

一、前言

在CTF竞赛的MISC(杂项)方向中,文件头分析是破解隐写术、文件修复、数据恢复等题目的核心技能。文件头(File Header)是文件开端的特定字节序列,用于标识文件类型和格式。本文将从实战角度总结常见文件头特征、分析技巧及解题套路。


二、文件头核心价值
  1. 文件类型识别:快速判断被篡改扩展名的文件真实类型

  2. 隐写分析:检测嵌套文件、拼接文件、加密文件

  3. 数据恢复:修复被破坏的文件结构

  4. 流量分析:在PCAP包中提取关键文件


三、常见文件头速查表

以下为CTF高频出现的文件头及其十六进制特征:

文件类型扩展名文件头(HEX)ASCII可见字符
PNG.png89 50 4E 47 0D 0A 1A 0A‰PNG....
JPEG.jpg/.jpegFF D8 FF E0ÿØÿà
GIF.gif47 49 46 38GIF8
ZIP.zip50 4B 03 04PK..
RAR.rar52 61 72 21 1A 07 00Rar!...
PDF.pdf25 50 44 46 2D%PDF-
BMP.bmp42 4DBM
ELF7F 45 4C 46.ELF
PE.exe/.dll4D 5AMZ

四、高阶文件结构特征

1. 复合文件类型

  • ZIP嵌套文件50 4B 03 04后紧跟[Content_Types].xml -> 可能为DOCX/XLSX等Office文档

  • PDF隐写%PDF-后查找/ObjStm(对象流)或/EmbeddedFile

2. 内存取证类

  • 内存镜像4D 45 4D 4F 52 59 44 55 4D 50 (MEMORYDUMP)

  • 磁盘镜像45 46 49 20 (EFI分区) / 4B 44 4D 20 (KDM加密镜像)

3. 流量分析场景

  • HTTP传输文件:查找Content-Type与文件头是否匹配

  • Base64隐写:解码后验证文件头有效性


五、实战分析技巧

案例1:文件头修复

# 题目给出损坏的flag.jpg,使用hexeditor修复
00000000: 47 49 46 38 00 00 00 00  # 错误文件头(实际是GIF)
# 修改前4字节为FF D8 FF E0 → JPEG文件头

案例2:嵌套文件提取

# 使用binwalk自动扫描
$ binwalk -Me suspicious_file

# 手动检测ZIP文件头(PK)偏移量:
$ hexdump -C file | grep "50 4b 03 04"

案例3:隐写术检测

# Python检测多个文件头
signatures = {
    b'\xFF\xD8\xFF': 'jpg',
    b'\x89PNG': 'png',
    b'GIF8': 'gif'
}

with open('mystery_file', 'rb') as f:
    header = f.read(10)
    for sig in signatures:
        if header.startswith(sig):
            print(f"Detected: {signatures[sig]}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

看的见的枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值