ファイル形式判定
ファイルの拡張子はラベルにすぎません — 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 0A | PNG 画像 | \r\n は改行コード破損への備え |
FF D8 FF | JPEG 画像 | すべての JPEG フレームは SOI マーカーで始まる |
25 50 44 46 2D | PDF 文書 | 「%PDF-1.7」 — 続いてバージョン番号 |
50 4B 03 04 | ZIP アーカイブ | docx/xlsx/odt/epub は拡張子を着た ZIP |
D0 CF 11 E0 | 旧 Office | doc/xls/ppt/msi — OLE2 複合ファイル |
4D 5A | Windows EXE | 「MZ」、Microsoft の Mark Zbikowski の頭文字 |
7F 45 4C 46 | Linux ELF | \x7fELF — 実行ファイルと共有ライブラリ |
1A 45 DF A3 | Matroska/WebM | EBML コンテナの開始 |
75 73 74 61 72 オフセット 257 | TAR アーカイブ | シグネチャーはヘッダーの奥に隠れている |
判定器の判断方法
各ファイルの先頭 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 タイプ検索を、同じファイルをハッシュするには一括ファイルハッシュを使ってください。
セルフテスト