Root Me 的 medium 題 APNG - Just A PNG
,本題敘述如下。
Your joking colleague challenges you to find the message hidden in this animation.
首先題目給了一個 APNG 檔案,且標籤寫 Just a matter of time
,檔案用 Windows 的相片打不開,所以先來查查 APNG 是甚麼
首先根據題目給的資料來源
https://wiki.mozilla.org/APNG_Specification
https://zh.wikipedia.org/zh-tw/APNG
APNG 和 GIF 一樣都是動態圖片的檔案格式,出現時間比 GIF 晚,由 Mozilla 公司社群 2004 年創立,因為檔案的色彩上限比 GIF 高,所以畫質比較清晰,但是因為讀取速度較慢且使用度相對較低,所以支援性比較差。
GIF | APNG | |
---|---|---|
畫質 | 較差 | 較好 |
儲存大小 | 較大 | 較小 |
讀取速度 | 較快 | 較慢 |
軟體支援 | 較多 | 較少 |
在了解 APNG 以後,我們再回來看看題目的檔案,根據維基的資料顯示,Chrome 有支援 APNG,所以用 Chrome 開看看發現是一張切換很慢的動態圖片,每一張間隔都超長,再加上題目提示 Just a matter of time
,猜測和時間有關係
既然跟時間有關係,我們就來看一下延遲時間,先用線上工具來看看
看到每個時間都很長,然後這個數字看起來都怪怪的,所以對照一下資料
https://wiki.mozilla.org/APNG_Specification
byte
0 sequence_number (unsigned int) Sequence number of the animation chunk, starting from 0
4 width (unsigned int) Width of the following frame
8 height (unsigned int) Height of the following frame
12 x_offset (unsigned int) X position at which to render the following frame
16 y_offset (unsigned int) Y position at which to render the following frame
20 delay_num (unsigned short) Frame delay fraction numerator
22 delay_den (unsigned short) Frame delay fraction denominator
24 dispose_op (byte) Type of frame area disposal to be done after rendering this frame
25 blend_op (byte) Type of frame area rendering for this frame
但這個 700 是直接以 1/100 秒為單位,實際的公式是
delay time (秒) = delay_num / delay_den 或 100
實際上檔案抓出來的 fcTL chunk
delay_num = 70
delay_den = 10
看到 70 76 65
等等數字,直覺上就應該想到 ASCII code,所以我們就來對照吧
delay_num=70 -> 'F'
delay_num=76 -> 'L'
delay_num=65 -> 'A'
delay_num=71 -> 'G'
delay_num=58 -> ':'
delay_num=80 -> 'P'
delay_num=51 -> '3'
delay_num=80 -> 'P'
delay_num=111 -> 'o'
delay_num=70 -> 'F'
delay_num=82 -> 'R'
delay_num=111 -> 'o'
delay_num=71 -> 'G'
整個合起來就是
FLAG:P3PoFRoG
今天了解了 APNG 這個檔案格式和它的結構,不過可惜好多地方都不支援qq
今天是七瀨靜羽