[圖片]關於圖片的奧秘

我們在分析電腦的圖片格式最直覺就是看一下這個檔案是否可以被圖片軟體打開,然後再來就是看副檔名是什麼.

例如某張圖片拿到的時候是test.jpg,在偵測的時候會是偵測成.bmp格式,但如何證明這張圖片是真的.bmp呢?

如果用win系統去看,可以任意把同一張圖片改成不同格式

JPG

JPG

BMP

BMP

由於是通用格式,所以兩者都可以用圖片軟體打開.

但假設我要寫個程式去判斷上傳的檔案格式,如果只是判斷副檔名,很容易就被蒙騙過去,又假設我只允許jpg通過,那上述的檔案就會通過我的判斷,導致後面程式處理異常.

那該怎麼做?

其實電腦的檔案組成都是binary,所以當我們去研究最底層的檔案時就可以看到實際檔案的內容,再搭配相關格式檢查就可以.

那要怎樣查詢檔案真實內容呢?可以下這個有趣的指令

例如真的jpg(jpeg)應該長這樣

真jpg檔案內容

真jpg檔案內容

Wiki規定jpg檔案格式

Wiki規定jpg檔案格式

冒充的如果去看內容就會變成

假jpg檔案內容

假jpg檔案內容

Wiki規定bmp檔案格式

Wiki規定bmp檔案格式

可以依據Wiki的定義查到這兩種檔案的檔案頭代表什麼,就可以知道這張是假冒的啦,剩下就留給看官再去延伸判斷摟!

參考:

1.從檔案內容判斷是不是圖片檔

2. List of file signatures

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *