本文へスキップ
AZ Tools

ファイルタイプ検出(マジックバイト)

ブラウザでドロップされた任意のファイルの最初の 512 バイトを読み取り、~35 種類のよく知られたファイルシグネチャ(PNG、JPEG、GIF、WebP、PDF、ZIP、GZIP、7z、MP3、FLAC、MP4、MKV、WOFF2、ELF、PE、SQLite、…)のテーブルと照合する。検出されたタイプをブラウザが報告した MIME(OS から、通常拡張子に基づく)と比較し、不一致にフラグを立てる — ダウンロードしたアーカイブを確認したり、リネームされた .jpg が本当に JPEG であることを検証したり、処理前にユーザーアップロードファイルの妥当性をチェックするのに便利。

使い方

  1. 任意のファイルをドロップまたは選択。
  2. 検出されたタイプを確認 — 宣言されたものと食い違う場合、バッジが教えてくれる。

よくある質問

ファイルはブラウザを離れる?
いいえ。最初の 512 バイトだけが読み取られ、File API を通じてローカルでのみ。アップロードはなし。
なぜ .docx が ZIP として表示される?
DOCX、XLSX、PPTX、JAR、EPUB、OOXML はすべて内部的に ZIP コンテナ。区別するにはアーカイブ内の特定のエントリを調べる必要がある — マジックバイト検出だけでは区別できない。
シグネチャは一致するのにファイルが開けないのはなぜ?
マジックバイトはファイルの先頭しか説明しません。途中で切れたダウンロード、テキストモードで転送されたバイナリ(データ内の改行が書き換わります)、中身が壊れたコンテナは、いずれもヘッダーだけは正しいまま、残りが使い物にならない状態です。判定が教えてくれるのは、そのファイルが何だと名乗っているかであって、完全かどうかではありません。
異なる形式が同じシグネチャを共有することはありますか?
あります。いちばん分かりやすいのがZIPで、.docx、.xlsx、.odt、.jar、.apk、.epubはすべてZIP書庫です。したがって本当の正体は先頭のバイトではなく、中に何が入っているかで決まります。ファイルのもっと後ろのバイトで識別される形式もあるため、極端に短いファイルや別のコンテナに包まれたファイルは、判定不能として返ることがあります。

このテーマのガイド

関連ツール