#16533: PNG檔案結構


qqrainbow (愛蜜莉雅)

學校 : 國立嘉義高級中學
編號 : 83319
來源 : [36.238.5.68]
最後登入時間 :
2023-04-26 23:31:35
b455. 請輸出這張圖片的RGB數值(難度↓) | From: [61.227.134.146] | 發表日期 : 2019-01-11 22:35

png檔架構大概是

png標誌 + 很多數據塊

89 50 4E 47 0D 0A 1A 0A  <--這就是PNG的署名

數據塊的結構:

length(4 bytes)、數據塊類型(4 bytes)、數據塊資料(可變動)、CRC(循環冗餘檢測)(4 bytes)

數據塊(大概講幾個比較常見的):

      1.文件頭數據塊,IHDR(header chunk),13 bytes,包含以下內容:

Width(4 bytes)、Height(4 bytes)、Bit depth(1 bytes)、ColorType(1 bytes)、Compression method(1 bytes)、Filter method(1 bytes)、Interlace method(1 bytes)

2.圖像資料塊,IDAT(image data chunk),長度隨檔案大小有所改變,包含以下內容:

儲存實際圖像資料(可能有壓縮,所以不一定可讀)

3.圖像結束資料,IEND(image trailer chunk),12 bytes

00 00 00 00 49 45 4E 44 AE 42 60 82 (沒錯他就是長這樣而已)

 

解題的步驟:

1.先下載UltraEdit跟題目圖片

2.圖片用UltraEdit開啟

3.然後請參考下面

89 50 4E 47 0D 0A 1A 0A   <--PNG署名


00 00 00 0D<--IHDR長度

//IHDR
49 48 44 52 <--IHDR(header chunk) 檔案頭資料塊
00 00 00 04 <--Width
00 00 00 04 <--Height
08                  <--Bit depth
06                  <--ColorType
00                  <--Compression method
00                  <--Filter method
00                  <--Interlace method
A9 F1 9E 7E <--CRC校驗


00 00 00 4F <--資料長度

//IDAT
49 44 41 54 <--IDAT標識
08 99 01 44 00 BB FF<--I don't know what it is
E2 89..71 70                <--DATA
FF 87 B3 27 71 FE      <--I don't know what it is
FE 33 AA A0<--CRC校驗

00 00 00 00 <--IEND length

//IEND
49 45 4E 44 <--IEND
AE 42 60 82 <--CRC校驗

4.把DATA裡的16進制全轉成10進制即是答案

 
#16535: Re:PNG檔案結構


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-11-04 20:21:51
b455. 請輸出這張圖片的RGB數值(難度↓) | From: [61.223.58.99] | 發表日期 : 2019-01-11 23:21

如果無法理解上面說明的朋友,

也可以用 vb 或 c# 放一個 picture

把圖片載入後,用迴圈把值 dump 出來。

給大家參考。

 
 
ZeroJudge Forum