Magic Number 是檔案開頭常見的一段特定資料,用來辨識檔案格式。
下面列幾個比較常見的例子:
| 檔案格式 | 常見 Magic Number | ASCII / 說明 |
|---|---|---|
| JPEG | FF D8 FF |
JPEG 開頭 |
| PNG | 89 50 4E 47 0D 0A 1A 0A |
.PNG |
25 50 44 46 |
%PDF |
|
| ZIP | 50 4B 03 04 |
PK |
| GIF | 47 49 46 38 |
GIF8 |
| Windows PE | 4D 5A |
MZ |

這些特殊的資料就像檔案的身分證。
副檔名是檔案名稱的一部分,而 Magic Number 是從檔案內容本身判斷格式。
假設今天有一個真正的 PDF:
report.pdf
有人把它重新命名成:
report.jpg
檔名看起來變成 JPG,但檔案裡面的資料並沒有因此改變。
如果用 Hex Editor 查看檔案開頭,仍然可能看到25 50 44 46
,也就是%PDF。
檔案名稱告訴你的,可能跟檔案內容真正代表的格式不一樣。
這時候就可以再次使用前面介紹的 HxD。
假設有一個檔案:
test.jpg
把它用 HxD 打開,查看檔案最前面的資料。
如果看到:
FF D8 FF
就可以知道它符合 JPEG 常見的檔案開頭。
但如果是:
25 50 44 46
再對照 ASCII:
%PDF
那就代表這個檔案的內容其實比較符合 PDF 格式。
不一定。
很多檔案格式會在檔案開頭放置可以辨識格式的資料,但不同格式的結構不完全一樣。
因此需要知道:
Magic Number 位於哪裡
該格式的檔案結構
是否可能存在其他 Header
檔案是否已經損壞或被修改
副檔名是檔案名稱,Magic Number 是檔案內容中的特徵。