今天一樣來帶隱寫術!
點開會發現是一張這樣子的圖片
看到這麼多的 Pixel 我們先一塊一塊地把那些 Pixel 的值讀出來
from PIL import Image
img = Image.open("flag.png")
W = img.width // 8
H = img.height // 8
for row in range(8): # 8 rows
for col in range(8): # 8 columns
r, g, b = img.getpixel((row * H+ 1, col * W + 1))
print(r, g, b)
仔細觀察,會發現這張圖的RGB都在ASCII的範圍裏面
把他們全部轉成字元後印出來
from PIL import Image
img = Image.open("flag.png")
pixels = []
W = img.width // 8
H = img.height // 8
for row in range(8): # 8 rows
for col in range(8): # 8 columns
r, g, b = img.getpixel((row * H+ 1, col * W + 1))
pixels.append((chr(r), chr(g), chr(b)))
flag = ""
for r, g, b in pixels:
flag += r + g + b
print(flag)
把解出來的字元用 Base64 解碼後就能得到FLAG
人的肉眼沒辦法區分出顏色的細微差別,所以透過修改最低有效位元的方式來隱藏資訊,並不讓人發覺
RGB 各減一,我們的肉眼也分不出差別
StegSovle 的 Data Extract 可以提取圖片的資訊
https://ctf-wiki.org/misc/picture/introduction/
https://hackmd.io/@NIghTcAt/ByKr8jxGH