ファイル形式判定

ファイルの拡張子はラベルにすぎません — virus.exe を photo.jpg にリネームしても中身は何も変わりません。このページはアップロードされた各ファイルの先頭バイトを読み取り、60+ の実際のマジックシグネチャーと照合します:画像、文書、アーカイブ、音声/動画、フォント、実行ファイル、データベース、鍵。判定された形式、MIME タイプ、その形式が通常使う拡張子、拡張子が内容と矛盾するときの警告、そして形式が運ぶ情報(画像の寸法、PDF バージョン、MP4 ブランド)が得られます。すべてブラウザー内でローカル検査されます。
ここにファイルをドロップ、またはクリックして選択
1 つでも複数でも。各ファイルの先頭 512 バイトだけを読み取ります。ファイルはこのマシンから出ません。
ファイルが選択されていません。
ファイルを選んで「形式を判定」を押すと、判定テーブルがここに表示されます。
「一致」の意味:整合 — 拡張子が判定された形式と合っています。不一致 — 内容が拡張子の主張と別の形式です(リネームされたファイル、あるいはもっと悪いもの)。「シグネチャーなし」 — 先頭バイトがどの既知シグネチャーにも一致しないこと。プレーンテキスト、CSV、ヘッダーを持たないほとんどのデータ形式では正常です。プライバシー:ファイルはブラウザー自身の FileReader で読み取られます。アップロードは一切ありません。

ファイルシグネチャーとは?

ほとんどすべてのバイナリ形式は固定のバイト列 — マジックナンバー — で始まります。プログラムが名前を信用せずに自分のファイルを認識できるように置かれたものです。PNG は常に 8 バイト 89 50 4E 47 0D 0A 1A 0A(「\x89PNG\r\n\x1a\n」)で始まり、PDF は ASCII テキスト %PDF、ZIP は PK\x03\x04(形式を設計した Phil Katz の頭文字)。OS はほとんどの場合これらのバイトを無視して拡張子を見ます — リネームされたファイルがどこでも「普通に開ける」理由であり、セキュリティツールが内容をスニッフィングする理由です。

有名な先頭バイト

バイト形式備考
89 50 4E 47 0D 0A 1A 0APNG 画像\r\n は改行コード破損への備え
FF D8 FFJPEG 画像すべての JPEG フレームは SOI マーカーで始まる
25 50 44 46 2DPDF 文書「%PDF-1.7」 — 続いてバージョン番号
50 4B 03 04ZIP アーカイブdocx/xlsx/odt/epub は拡張子を着た ZIP
D0 CF 11 E0旧 Officedoc/xls/ppt/msi — OLE2 複合ファイル
4D 5AWindows EXE「MZ」、Microsoft の Mark Zbikowski の頭文字
7F 45 4C 46Linux ELF\x7fELF — 実行ファイルと共有ライブラリ
1A 45 DF A3Matroska/WebMEBML コンテナの開始
75 73 74 61 72 オフセット 257TAR アーカイブシグネチャーはヘッダーの奥に隠れている

判定器の判断方法

各ファイルの先頭 512 バイトが、特定度の順にシグネチャーテーブルと比較されます:コンテナブランド(RIFF…WAVE 対 RIFF…AVI 対 RIFF…WEBP、オフセット 8 の ISO ブランドボックス)は汎用コンテナより先に、ZIP ベース形式(EPUB、ODF、OOXML)は素の ZIP より先にチェックされます。形式が自己記述メタデータを運ぶ場合、ページはもう 1 層掘り下げます:PNG/GIF/BMP/JPEG/WebP の寸法はヘッダーから、PDF バージョンは 5 バイト目から、MP4 ブランドと Java クラスバージョンは標準オフセットから読み取ります。どれにも一致しないファイルは、不明と判定される前にテキストヒューリスティック(BOM、<?xml、<html、シバン、印字可能率)を通ります。

よくある間違い

「ZIP と言われたがファイルは .docx だ」— 正しいです。.docx は最初のエントリーが [Content_Types].xml の ZIP アーカイブで、判定器はそのケースを認識して Office Open XML と具体的に報告します。「シグネチャーなしと言われたがファイルは普通に開ける」— CSV、ほとんどのソースコード、無数の科学形式にはマジックバイトがまったくありません。「シグネチャーなし」は告発ではありません。「ファイルが安全か教えてくれる?」— いいえ。内容スニッフィングはファイルが何であるかを言うのであって、何をするかではありません。EXE はインストーラーでもマルウェアでも EXE です。

よくある質問

なぜ 512 バイトだけ?— 対応するすべてのシグネチャーは先頭 512 バイト内にあります(最深はオフセット 257 の TAR の ustar)。それ以上読んでも大きなバッチが遅くなるだけです。
動画の長さも検出する?— いいえ、コンテナとそのブランドだけです。長さには索引全体の解析が必要で、それはプレイヤーの仕事です。
複数ファイルを一度に?— はい、選択範囲を丸ごとドラッグしてください。各行は独立に判定されます。
関連ページ:逆方向 — 拡張子から MIME タイプへ — はMIME タイプ検索を、同じファイルをハッシュするには一括ファイルハッシュを使ってください。