檔案嗅探器


故事

這個練習的故事以比較副檔名與二進位檔案格式為前提,來探索二進位資料、模式比對與字串編碼等概念。學員的任務是撰寫一些函式,用來比較預期的媒體類型與檔案實際編碼出來的媒體類型。

任務

這個故事方便定義以下幾種函式:

  • 從字串副檔名回傳媒體類型。
  • 從二進位檔案格式回傳媒體類型。
  • 比較由字串副檔名取得的預期媒體類型,以及由二進位檔案取得的實際類型。

練習參考

檔案類型 常見副檔名 媒體類型 前幾個位元組的二進位「簽章」
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

實作