マジックバイト(ファイルシグネチャ)早見表
ファイルの形式は、拡張子ではなく先頭の数バイト(マジックバイト)で判定するのが安全です。 主要フォーマットの正しい署名は次のとおり。この一覧と食い違うファイルは、形式を偽っているか壊れています。
| 形式 | 先頭バイト(16進) | ASCII |
|---|
| PNG | 89 50 4E 47 0D 0A 1A 0A | ‰PNG␍␊␚␊ |
| JPEG | FF D8 FF | (なし) |
| GIF | 47 49 46 38 39 61 | GIF89a |
| PDF | 25 50 44 46 2D | %PDF- |
| ZIP | 50 4B 03 04 | PK␃␄ |
| WebP | 52 49 46 46 … 57 45 42 50 | RIFF…WEBP |
文字化けした CSV は「壊れている」ように見えても、バイトは無傷で読み方を間違えているだけの ことが多く、文字化け修復ツールで元に戻せます。 形式そのものが正しいかは 文字コード別 CSV と併せてどうぞ。
よくある質問
壊れたファイルのサンプルはどこで無料ダウンロードできますか?
このページから、マジックバイト破損・拡張子偽装・途中切れ・文字化けCSVの4種のサンプルを無料でダウンロードできます。すべて決定論的に生成しており、何が壊れているかを明記しています。アップロードのバリデーションやエラー処理のテストに使えます。
なぜわざと壊れたファイルでテストするのですか?
正常なファイルだけでは、異常系(壊れた入力)の処理が正しいか確かめられません。壊れたPNGをアップロードしたときに適切にエラーを返せるか、拡張子を信じて中身を検証していないか——こうしたバグは、壊れたファイルを1つ流すだけで見つかります。
PNGやPDFのマジックバイト(ファイルシグネチャ)は何ですか?
ファイル先頭の数バイトで形式を示す署名です。PNGは 89 50 4E 47 0D 0A 1A 0A、PDFは 25 50 44 46 2D(%PDF-)、ZIPは 50 4B 03 04(PK)、JPEGは FF D8 FF。拡張子ではなくこの署名で形式を判定するのが安全です。