CTFlearn에서 제공하는 프로그래밍 카테고리의
Hard 난이도 문제
지난 Old memories 와 비슷한 문제이다.
(https://hackingstudypad.tistory.com/584)
이번 문제 역시도 스테가노그래피와 관련이 있다.
반응형
문제 설명을 보면
중요한 정보가 담긴 종이가 찢어졌는데
이걸 복원해야 한다고 한다.
원본의 크기는 500*500 이라고 주어진다.
문제 파일을 열어보면
정말 사진을 세절기에 넣은것처럼
세로 1픽셀, 가로 500픽셀로
500 조각이 나있는 이미지를 볼 수 있다.
프로그래밍 카테고리에 있으니
프로그래밍 해서 이걸 다 이어붙이라는 의미인듯 하다.
이번 문제는 Python PIL 라이브러리를 이용해서 풀었다.
PIL은 Python Imaging Library의 약자로
파이썬으로 이미지 처리를 할 수 있도록 해주는 라이브러리이다.
pip install image
pip install pillow
두 명령어를 이용해서 다운로드 받아주면 된다.
from PIL import Image
xlen_s = 500
xlen = 500
ylen = 500
new = Image.new('RGB', (xlen,ylen), (255,255,255))
for i in range(500):
img_n = str(i) + '.png'
img = Image.open(img_n).convert('RGB')
for x in range(xlen_s):
r,g,b = img.getpixel((x,0))
new.putpixel((x,i),(r,g,b))
new.save('result.png')
코드는 생각보다 간단하다
0.png 부터 499.png 까지 불러와서
한줄의 rgb 값을 모두 추출한 뒤
500*500의 새로운 이미지에 차례로 채워넣으면 된다.
그럼 이렇게 원본 이미지를 복원할 수 있다.
가운데에 16진수 값이 써있는게 보이는데
CyberChef(https://gchq.github.io/CyberChef) 에서 디코딩해주면
플래그를 찾을 수 있다.
반응형
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] Polycrypto - 암호학 / Python (133) | 2023.08.12 |
---|---|
[CTFlearn] F1L3 M1X3R - MISC / Python / HxD (126) | 2023.08.07 |
[CTFlearn] Get Into Command Mission - MISC / IDA (112) | 2023.08.03 |
[CTFlearn] Old memories - 프로그래밍 / PIL (114) | 2023.08.01 |
[CTFlearn] Bobby Toe's iPad - 포렌식 / Stegsolve / HxD (76) | 2023.07.12 |