文件 / 二进制 / 压缩

文件类型识别看文件头,不看后缀名

选择或拖入一个或多个文件,加入的同时按文件开头的字节识别类型。

文件类型识别

文件

把文件拖到这里,或点击「选择文件」。每批最多 20 个,大小不限。

只在浏览器本地读取每个文件的开头(ZIP 另读末尾目录),不会上传。

识别结果

选择或拖入文件即可识别。

只改变显示长度,不会重新读取。位于更靠后位置的签名(tar、ISO、PE 头)会单独列出。

选择或拖入文件即可识别。

报告是纯文本,每个文件一段:大小、结论、MIME、后缀名比对和文件头字节。

什么时候需要文件类型识别?收到一个没有后缀名的附件、下载的文件双击打不开、上传接口要拦住改成 .jpg 的脚本——这些时候后缀名都靠不住。后缀名只是有人起的名字,而文件开头的几个字节(文件头、魔数、签名)是生成它的程序写进去的。

这里的文件类型识别在本地读取这些字节,给出格式名称和 MIME 候选,再拿结果和后缀名对比,帮你判断文件真实类型;同时写明结论的依据是精确签名、检查过的结构(比如 ZIP 里的文件名),还是文本推测,并把命中的字节高亮出来,方便你自己核对,而不是只能相信一句结论。

为什么用这个文件类型识别

结论能逐字节核对,后缀名也一并检查。

结论背后的字节摆在眼前

文件头以十六进制加 ASCII 显示,命中的签名会高亮——PNG 是 89 50 4E 47,ZIP 是 50 4B 03 04;像 tar 那样把 ustar 写在偏移 257 的签名,也会连同偏移单独列出。

两行十六进制文件头字节,前 8 个字节被高亮并用括线标出,虚线连到一个带绿色对勾的图片格式标识。

后缀名要被检查,而不是被相信

改名成 .jpg 的 PNG 会被标成「不一致」,并写出 .jpg 本来应该对应的格式;而本身就是 ZIP 容器的 .docx 会标成「兼容」,不会被误判为错误。

一个文件的开头字节 50 4B 03 04 指向压缩包图标,而它的名字标签显示的是图片图标,红色叉号表示两者不一致。

结论取决于三件事

01

加入文件,不用再按按钮

选择或拖入文件后立即识别,新文件会追加到列表而不是替换原有的。每个文件只读开头 64 KiB,开头像 ZIP 时再读末尾 64 KiB,所以 20 GB 的磁盘镜像和 20 KB 的图标一样快。

  • 「载入示例」会放入 4 个样本:正常的 PNG、改名成 .jpg 的 PNG、最小的 .docx,以及一个无法识别的 .bin。
02

看清判断依据

「签名精确命中」表示固定偏移上的固定字节对上了;「签名 + 结构校验」表示还读了内部字段——ZIP 里的文件名、MP4 ftyp 里的品牌、RIFF 的子类型;「文本或特征推测」表示这种格式本来就没有固定魔数,比如 JSON、XML 或普通 UTF-8 文本。

  • 旧版 Office 文件(doc、xls、ppt、msi)共用同一个签名,所以会列出多个 MIME 候选,而不是硬猜一个。
03

对照后缀名,再导出

「兼容」不是错误:.docx、.jar、.apk 本来都是 ZIP,.m4a 是 MP4 容器。真正要留意的是「不一致」。「浏览器给出的 MIME」一行显示 File.type 的值——它来自后缀名,这正是它不能用来做校验的原因。

  • 调整显示的文件头字节数只影响显示,报告里的文件头也按同样长度输出。

能识别什么,怎么判断

70 多种格式与子类型

图片、PDF 与办公文档、压缩与归档格式、可执行文件(ELF、PE、Mach-O、WebAssembly)、音视频容器、字体、数据库与抓包文件,以及有明确开头标记的文本格式,如 XML、SVG、HTML、PEM。

分得清 ZIP 家族

只读取 ZIP 中央目录里的文件名,就能把 DOCX、XLSX、PPTX、ODT、EPUB、JAR、APK、IPA 和普通 ZIP 区分开,一个条目都不解压。

五种后缀名比对结果

一致、不一致、兼容、没有后缀名、无法比对——正常的 .docx 不会被报成错误的 .zip,缺少后缀名时还会给出建议后缀名。

精确大小,不限大小

每个文件同时显示精确字节数和 KiB、MiB、GiB 换算。识别只读头尾,耗时不随文件变大而增加,所以没有大小上限。

签名检测做不到的事

不是病毒扫描
PNG 签名正确不代表文件安全,识别出 PE 可执行文件也不代表它有毒;拼接文件(polyglot)可以既是合法图片、后面又带着别的数据。判断是否安全请用杀毒软件。
一个签名可能对应多种格式
旧版 Office 文档和 MSI 安装包共用 OLE2 签名;找不到特征文件名的 ZIP 只能停在「ZIP」。这些情况会列出全部 MIME 候选,而不是替你挑一个。
没有标记的文本格式只算文本
CSV、YAML、INI、Markdown 和源代码都没有签名,统一报为纯文本(UTF-8,带 BOM 时为 UTF-16)。GBK、Shift_JIS 等其他编码不做猜测。
只识别,不拆解
不解压压缩包,不解析 EXIF,也不拆分可执行文件的架构和节区;完整的十六进制内容请用十六进制查看器。每批最多 20 个文件,拖入文件夹不会递归扫描。

文件类型识别常见问题

文件的真实类型和后缀名不一致是什么意思?

意思是文件头里的签名对应的格式,和后缀名暗示的格式不是一回事,比如名字叫 photo.jpg、开头却是 PNG 的 89 50 4E 47。可能只是改名时写错了,也可能是有意伪装,文件类型识别会把两边都列出来供你判断。

文件类型可以根据什么来识别?

常见有三种依据:后缀名(最容易改)、文件头魔数(固定偏移上的固定字节)、以及内部结构(比如 ZIP 里的文件名、MP4 的品牌字段)。严肃的文件类型检测和文件格式识别都靠后两种,本工具也一样,后缀名只用来对比。

有没有文件魔数对照表?

本工具的签名表参考了 WHATWG MIME Sniffing 标准、Gary Kessler 的文件签名表和维基百科的文件签名列表。每个识别结果都会高亮实际命中的字节和偏移,相当于把对照表里的那一行直接指给你看。

文件头和文件类型不一致怎么解决?

先确认文件来源是否可信。如果只是后缀名写错,按「建议后缀名」改名即可打开;如果文件来自陌生来源,不一致本身就是值得警惕的信号,别急着改名运行。本工具只做文件类型识别,不会替你改名。

文件类型无法识别怎么处理?

看一下「未识别」下面的两条观察:含不含二进制控制字节、是不是合法 UTF-8。前者说明它是某种二进制格式,可以把文件头拿去对照魔数表;后者说明它很可能是文本,用文本编辑器打开即可。

能用它判断一个文件是否有病毒吗?

不能。签名只说明文件开头像什么格式,和是否含恶意代码无关。它能帮你发现「伪装成图片的可执行文件」这类可疑情况,但安全判断请交给杀毒软件。

没找到答案?

用文件类型识别检查你的文件

先载入示例,看一致、不一致、ZIP 子类型和未识别四种结果并排出现,再把你真正拿不准的文件拖进文件类型识别。

全部处理都在浏览器本地完成。