ファイルスニッファー


ストーリー

この演習のストーリーは、ファイル拡張子とバイナリファイル形式を比較するという設定を使って、バイナリデータ、パターンマッチング、文字列エンコーディングといった考え方を学ぶ内容になっています。学習者は、期待されるメディアタイプと、ファイルにエンコードされたメディアタイプを比較する関数をいくつか書くことになります。

タスク

このストーリーでは、次のような関数を定義します:

  • 文字列の拡張子からメディアタイプを返します。
  • バイナリファイル形式からメディアタイプを返します。
  • 文字列の拡張子から得た期待されるメディアタイプと、バイナリファイルから得た実際のタイプを比較します。

演習のリファレンス

ファイルの種類 一般的な拡張子 メディアタイプ 先頭バイトにあるバイナリ『シグネチャ』
ELF noneまたは"exe" "application/octet-stream" 0x7F, 0x45, 0x4C, 0x46
BMP "bmp" "image/bmp" 0x42, 0x4D
PNG "png" "image/png" 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A
JPG "jpg" "image/jpg" 0xFF, 0xD8, 0xFF
GIF "gif" "image/gif" 0x47, 0x49, 0x46

実装