← 退出

文件类型识别

读取文件头字节判断真实格式

这个工具通过读取文件开头固定的标识字节(业内称为 magic bytes)来判断文件的真实格式,不依赖文件名的扩展名——有些文件可能被故意改了后缀名,但内容本质没变,这种情况下用这个工具能识别出真实类型。所有检测完全在浏览器本地完成,只读取文件开头很少的字节,不会上传整个文件。

关于文件类型识别

这个工具通过读取文件开头的 16 个字节,对照一份内置的「文件头标识」(业内常称 magic bytes)列表,判断这个文件实际上是什么格式,并同时显示文件名里的扩展名和这 16 个字节的十六进制内容。它的用处是:当一个文件的扩展名被改过、或者没有扩展名、或者你对来源不放心时,可以对照看看内容是否与扩展名相符。需要强调它的范围:内置识别的格式只有十几种,没有命中时只会说「无法识别」,并不代表文件有问题;它也不是杀毒软件,不能判断文件是否安全。

操作步骤

  1. 点击虚线框「点击选择任意文件」,选择任意类型的文件。选中后立即检测,没有额外的按钮。
  2. 在「检测结果」中查看两项:「文件扩展名」显示文件名末尾的后缀(例如 .png);「真实类型」显示根据内容判断出的格式。没有后缀时会显示「(无扩展名)」。
  3. 在「文件头部字节(十六进制)」中查看文件前 16 个字节,例如 89 50 4e 47 0d 0a 1a 0a ……,可以与资料中公开的文件头对照。
  4. 如果「真实类型」显示为红色的「无法识别(可能是不常见的格式)」,说明这个文件的开头不在内置列表里。

内置识别的格式

工具内置的识别规则包括:PNG 图片(开头 89 50 4E 47)、JPEG 图片(FF D8 FF)、GIF 图片(47 49 46 38)、PDF 文档(25 50 44 46,即 %PDF)、ZIP 压缩包(50 4B 03 04,同时也是 docx、xlsx、pptx 等新版 Office 文件的容器格式)、RAR 压缩包(52 61 72 21)、GZIP 压缩文件(1F 8B)、BMP 图片(42 4D,且保留字段为 0、DIB 头大小合法)、带 ID3 标签的 MP3 音频(49 44 33)、ISO 媒体容器(第 5 到第 8 字节为 ftyp,再按第 9 到 12 字节的品牌区分 MP4 视频、HEIC/HEIF 图片、AVIF 图片、MOV 视频、M4A 音频、3GP 视频)、7z 压缩包(37 7A BC AF 27 1C)、旧版 Office 文档(D0 CF 11 E0 A1 B1 1A E1),以及 WEBP 图片(RIFF 开头且第 9 到 12 字节为 WEBP)。如果是 RIFF 开头但不是 WEBP,会显示「RIFF 容器格式(可能是 WAV 音频或者 AVI 视频)」。以上规则就是工具的全部识别范围,不在其中的格式都会显示「无法识别」。

一组实际测试结果

下面的结果是用工具中相同的匹配规则,对几组字节实际运行得到的。PNG 图片的标准开头 89 50 4E 47 0D 0A 1A 0A,识别为 PNG 图片。开头为 50 4B 03 04 的数据,识别为 ZIP 压缩包(也可能是 Office 新格式)。JSON 文本 {"a":1} 显示无法识别;老版 Word/Excel(.doc/.xls)的文件头 D0 CF 11 E0 A1 B1 1A E1 识别为旧版 Office 文档。以 BM 开头的文本(如「BMW notes」)不再被误判为 BMP;HEIC 文件头(ftyp + heic)识别为 HEIC/HEIF 图片。

支持范围与已知限制

  • BMP 和 ftyp 系列(MP4 / HEIC / MOV 等)的判断比较宽松:BMP 除「BM」外还检查保留字段和 DIB 头大小,ftyp 系列按第 9 到第 12 字节的品牌名区分;品牌名不在已知列表里时,会显示「ISO 媒体容器(ftyp 品牌:xxxx)」。对于少见的品牌或变体文件,结果仍可能不准,请参考十六进制内容。
  • WAV、AVI 都只会显示为 RIFF 容器格式,不会区分具体是哪一种。
  • 没有内置的格式包括:纯文本、JSON、HTML、SVG、没有 ID3 标签的 MP3、WebM、FLAC、OGG、可执行文件等,它们都会显示「无法识别」。
  • 只读取文件开头 16 个字节,无法检查文件后面的内容是否被篡改或夹带数据;一个以合法文件头开头的文件,里面仍可能有问题。
  • 「文件扩展名」取文件名最后一个点之后的部分,含中文等非英文字符的后缀也能显示。
  • 空文件没有任何字节,会显示无法识别。

扩展名和真实类型不一致,说明文件有问题吗?

不一定。有时是正常的:例如 .docx 文件的真实类型就是 ZIP 压缩包,因为 docx 本身是 ZIP 容器。也有的是下载或改名时出的错,或者工具自身的误判(见上面的 BMP、ftyp 系列)。不一致只是一个提示,不能作为文件是否安全的结论。

可以用它判断文件有没有病毒吗?

不可以。它只看文件头的几个字节。把恶意程序改名成 .jpg 能骗过只看扩展名的人,这个工具能提醒你文件头不是图片;但是反过来,文件头正常并不代表安全。检查可疑文件请使用杀毒软件和可信的扫描服务。

为什么我的文件显示「无法识别」?

最常见的原因是它的格式不在内置的十几种规则里,比如文本、JSON、HTML 或 WebM。这是正常现象,不代表文件损坏。你可以对照十六进制内容,在公开的文件签名列表里查找。

隐私与处理方式

检测在浏览器里完成,代码只读取文件开头的 16 个字节来匹配规则,并在页面上显示文件名、扩展名和这几个字节,页面中没有上传文件的网络请求,整个文件内容不会被读入页面,也不保存任何记录。刷新或关闭页面后,结果即清除。