piapia123
ja

ファイル署名の判定(magic bytes)

Web

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

ファイルの先頭数バイトを貼り付けて、実際の形式を判定します。拡張子より信頼できる方法です。拡張子はファイル名の一部で誰でも変えられますが、ヘッダーは中身の一部だからです。開けない photo.jpg の理由や、正体不明のバイナリデータの中身を知る手がかりになります。画像・文書・圧縮・音声・動画・実行ファイル・フォントにわたる 59 種類の形式を収録しています。1 つの署名が複数の形式に当てはまる場合は、勝手に 1 つを選ばず、すべてを列挙します(ZIP コンテナは docx かもしれず、apk や jar かもしれません)。逆引きも可能で、png や image/png を入力すると署名とオフセットを表示します。

機能

  • 59 種類の形式を収録:画像・文書・圧縮・音声・動画・実行ファイル・フォント
  • ファイル名ではなくバイト列で判定。拡張子は変えられても、ヘッダーは変えられません
  • 1 つの署名が複数に一致する場合はすべて列挙し、一致の具体度で並べます
  • オフセット付きの署名にも対応:ISO 9660 は 32 KB 地点、MP4 の ftyp はオフセット 4
  • 逆引き:png、PNG、image/png を入力すると署名とオフセットを表示
  • ASCII 表示も同時に出すため、テキスト形式のヘッダー(%PDF、{\rtf、<?xml)は一目で分かります
  • 16 進入力は空白・コロン・カンマ区切りと 0x / \x 接頭辞に対応

使い方

  1. ファイルの先頭バイトを貼り付けます(16 進でもテキストでも可)
  2. 判定結果がその場で表示されます。候補が複数のこともあります
  3. ある形式の署名を見たい場合は、拡張子か MIME を入力します
  4. 必要に応じて「入力の種類」を切り替え、バイト列か形式名かを明示します

よくある質問

ZIP が複数の形式に一致するのはなぜですか?
docx・xlsx・pptx・apk・jar・epub はファイルレベルではすべて ZIP コンテナであり、違いは中にどのエントリが入っているかで、先頭数バイトからは判別できないためです。本ツールは ZIP とそれらの可能性を併記します。「これは ZIP コンテナである」ということ自体が有用な情報だからです。
ヘッダーと拡張子、どちらが信頼できますか?
ヘッダーです。拡張子はファイル名の一部で、1 文字変えれば exe を jpg に見せかけられます(フィッシングで最もよく使われる手口の 1 つです)。ヘッダーは中身の一部なので、偽装するには中身ごと作る必要があります。ただし絶対でもありません。汎用的なコンテナもあるため(前の質問参照)、考えられる候補をすべて列挙します。
先頭 256 バイトしか表示しないのはなぜですか?
署名は最初の数十バイトにあり、一方でファイル全体を貼り付けることもあるためです。全部表示するとページが目に見えて重くなります。判定自体は入力全体を使います(ISO 9660 の署名は 32 KB の位置にあります)。切り詰めは表示だけに影響します。
形式が分かったあと変換もできますか?
このツールは判定だけを行います。画像なら画像 Base64 変換や QR コードのツール、テキストならエンコード系のツールをご利用ください。判定は最初の一歩で、何であるかが分かって初めて次に使うツールが決まります。

関連ツール