piapia123
zh

文件头识别(magic bytes)

网络

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把文件开头的几个字节粘进来,判断它到底是什么格式。这条路比扩展名可靠:扩展名是文件名的一部分,谁都能改,而文件头是内容的一部分 —— 拿到一个打不开的 photo.jpg、或者一段不知是什么的二进制数据时,靠的就是它。收录近 60 种常见格式,覆盖图片、文档、压缩包、音视频、可执行文件与字体。同一个签名对应多个格式时会全部列出(ZIP 容器既可能是 docx,也可能是 apk 或 jar),而不是替你挑一个。反过来也可以:输入 png 或 image/png,列出它的签名与偏移。

功能

  • 收录近 60 种常见格式:图片、文档、压缩包、音视频、可执行文件、字体
  • 只看字节不看文件名 —— 扩展名可以随便改,文件头不行
  • 一个签名命中多个格式时全部列出,并按匹配的具体程度排序
  • 带偏移的签名也认:ISO 9660 在 32 KB 处、MP4 的 ftyp 在偏移 4
  • 反向查询:输入 png、PNG 或 image/png,列出它的签名与偏移
  • 同时给出 ASCII 视图,文本形态的文件头(%PDF、{\rtf、<?xml)一眼能认
  • 十六进制输入容错:空格、冒号、逗号分隔与 0x / \x 前缀都认

使用方法

  1. 把文件开头的字节粘进来(十六进制或文本形态都可以)
  2. 识别结果实时出现,可能有多个候选
  3. 想看某个格式的签名时,直接输入扩展名或 MIME
  4. 需要时切换「输入是」选项,手动指定把输入当字节还是当格式名

常见问题

为什么 ZIP 会匹配出好几个格式?
因为 docx、xlsx、pptx、apk、jar、epub 在文件层面都是 ZIP 容器 —— 它们的区别在于压缩包内部有哪些文件,光看开头几个字节分不出来。工具会把 ZIP 与这些可能的形式一起列出,因为「这是一个 ZIP 容器」本身就是有用的信息。
文件头和扩展名哪个可信?
文件头。扩展名只是文件名的一部分,改一个字母就能把 exe 说成 jpg(这是钓鱼邮件最常见的做法之一)。文件头是内容本身的结构,要伪造得连内容一起造。不过它也不是绝对的 —— 有些格式的容器是通用的(见上一个问题),所以工具会列出所有可能。
为什么只显示前 256 字节?
因为文件头就在最开始那几十个字节里,而你可能是把一整个文件粘进来的。显示全部会让页面变得很慢,而识别仍然使用完整的输入 —— ISO 9660 的签名在 32 KB 偏移处,截断只影响显示。
能识别出文件的真实格式之后做转换吗?
这个工具只做识别。需要处理图片可以看图片转 Base64 或二维码工具,需要处理文本可以看编码类的工具。识别是第一步 —— 知道它是什么,才知道下一步该用哪个工具。

相关工具