file
2026/5/29工具工具文件类型file大约 4 分钟
file
这个工具解决什么问题
file 是文件类型识别工具,会根据文件头、魔数和内容特征判断文件真实类型。
CTF 中不要只信扩展名。一个 .jpg 可能是 ZIP,一个 .txt 可能是 ELF,一个没有后缀的文件可能是 PNG。
安装方式
Linux 通常自带。若没有:
sudo apt update
sudo apt install fileWindows 可在 WSL、Git Bash、MSYS2 或 CTF 工具环境中使用。
链接
什么时候优先用它
- 题目给了图片、音频、压缩包、流量、内存镜像或未知二进制附件。
- 文件类型、隐藏数据、元数据、嵌套结构或编码链还不清楚。
- 想先做低成本初筛,再决定是否转向更专门的取证、隐写或脚本分析工具。
常用入口
基本用法
判断单个文件
file challenge判断目录下所有文件
file *输出 MIME 类型
file --mime challenge不跟随符号链接
file -h target更多选项
详细输出
file -v challenge查看版本信息和 magic 数据库路径。
分隔符输出
file -0 challenge使用 NUL 字符分隔,适合脚本处理。
简短输出
file -b challenge只输出类型,不显示文件名。
查看 magic 文件路径
file -C列出所有已知类型
file -l从标准输入读取
echo "PK" | file -
cat challenge | file -检查多个文件
file file1 file2 file3
file *.bin递归检查目录
file -r ./directory/magic 数据库
什么是 magic
file 命令使用 magic 数据库来识别文件类型。
数据库位于: /usr/share/misc/magic 或 /usr/share/file/magic
每个条目定义: 偏移、类型、测试值、描述常见文件签名
文件类型 偏移 签名
PNG 0 89 50 4E 47 0D 0A 1A 0A
JPEG 0 FF D8 FF
GIF 0 47 49 46 38
ZIP 0 50 4B 03 04
PDF 0 25 50 44 46
ELF 0 7F 45 4C 46
RAR 0 52 61 72 21
7z 0 37 7A BC AF
BMP 0 42 4D
TIFF 0 49 49 2A 00
PSD 0 38 42 50 53
Mach-O 0 FE ED FA CE 或 CF FA ED FE自定义 magic
创建自定义 magic 文件:
# mymagic
0 string CTF_FLAG CTF flag file
0 string HIDDEN Hidden data file使用:
file -m mymagic challenge魔数搜索
# 使用 xxd 查看文件头
xxd -l 16 challenge
# 搜索特定魔数
xxd challenge | grep "504b"自定义文件类型
创建假文件
# 创建带特定魔数的文件
printf '\x89PNG' > fake.png
file fake.png # 可能识别为 PNG
# 修改扩展名
mv fake.png fake.txt
file fake.txt # 仍然识别为 PNG修改文件头
# 修复损坏的文件头
printf '\x89\x50\x4e\x47\x0d\x0a\x1a\x0a' | dd of=broken.png bs=1 seek=0 count=8 conv=notrunc文件类型伪装
常见伪装:
- 修改扩展名
- 修改文件头
- 嵌套文件
- 拼接文件
检测方法:
- file 命令检查真实类型
- xxd 查看文件头
- binwalk 检查嵌套典型 CTF 场景
后缀不可信
file suspicious.jpg如果输出是:
Zip archive data说明应该按压缩包分析,而不是按图片分析。
检查 ELF
file ./vuln常见输出会包含:
ELF 64-bit LSB executable
dynamically linked
not stripped这些信息会影响逆向和 Pwn 方向判断。
批量找异常文件
find . -type f -exec file {} \;适合压缩包解开后快速判断文件集合。
ELF 文件详细信息
file ./vuln输出包含:
ELF: 文件格式
64-bit: 位数
LSB: 字节序
executable: 文件类型(executable/shared object/relocatable)
x86-64: 架构
dynamically linked: 链接方式
interpreter /lib64/ld-linux-x86-64.so.2: 解释器
for GNU/Linux: 目标系统
not stripped: 是否有符号PE 文件信息
file program.exe输出包含:
PE32/PE32+: 文件格式
executable: 文件类型
Intel 80386: 架构
for MS-Windows: 目标系统图片文件判断
file image.png输出可能包含:
PNG image data
image data
dimensions
color type
bit depth压缩包判断
file archive.zip输出可能包含:
Zip archive data
compressed size
uncompressed size
number of files常见坑
file 判断错了怎么办
file 依赖特征识别,不是绝对真相。遇到异常时继续用 xxd 看文件头、用 binwalk 看嵌入结构。
文件头被改了怎么办
file 可能识别不出。根据内容特征、文件大小、可见字符串、题目提示继续判断。
只看 file 够吗
不够。file 是第一步,不是结论。CTF Misc 通常要继续看结构、尾部、附加数据和隐藏内容。
二进制文件显示 "data"
原因: 无法识别文件类型
解决:
1. xxd 查看文件头
2. binwalk 检查嵌套
3. strings 搜索可见字符串
4. 检查文件大小和结构链接文件
# 不跟随链接
file -h link
# 跟随链接
file -L link
# 查看链接目标
readlink link设备文件
file /dev/sda
file /dev/null替代方案
- binwalk / foremost / CyberChef
- exiftool / Wireshark / Volatility 等专项工具
关联阅读
- 文件头、文件尾与真实类型
- 压缩包与嵌套文件
- Misc题的文件分析起手式
- xxd与hexdump
- binwalk