CTFlearn에서 제공하는 프로그래밍 카테고리의
Hard 난이도 문제
이번 문제는 Hard 치고는 쉬운 편이다.
카테고리도 프로그래밍 보단 스테가노그래피에 가까운것 같다.
반응형
문제에서 주어지는 것은
1.png, 2.png 두 개의 파일이다.
이전에 블로그에서 유사한 문제를 다룬적이 있었는데
거의 그대로 하면 된다.
(https://hackingstudypad.tistory.com/125)
이번 문제는 Python PIL 라이브러리를 이용해서 풀었다.
PIL은 Python Imaging Library의 약자로
파이썬으로 이미지 처리를 할 수 있도록 해주는 라이브러리이다.
pip install image
pip install pillow
두 명령어를 이용해서 다운로드 받아주면 된다.
from PIL import Image
img1 = Image.open('1.png').convert('RGB')
img2 = Image.open('2.png').convert('RGB')
xlen = 512
ylen = 512
new = Image.new('RGB', (xlen,ylen), (255,255,255))
for y in range(ylen):
for x in range(xlen):
r,g,b = img1.getpixel((x,y))
r2,g2,b2 = img2.getpixel((x,y))
new.putpixel((x,y),((r^r2),(g^g2),(b^b2)))
new.save('xor.png')
문제를 푸는 코드는 이렇게 작성한다.
주어진 두 이미지를 각각 불러와서 img1, img2 변수에 넣어준다.
그다음 이미지의 x, y 크기를 지정해주고
두 이미지의 각 픽셀의 RGB 값을 가져와서 서로 XOR을 시켜준 뒤,
결과를 새로운 이미지 파일로 저장해주는 코드이다.
이미지 크키는 우클릭 - 속성에서 이렇게 확인이 가능하다.
코드를 실행시키면 생성되는 xor.png 파일에서
문제의 플래그를 확인할 수 있다.
반응형
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] The Adventures of Boris Ivanov Part 2 - 프로그래밍 / PIL (125) | 2023.08.05 |
---|---|
[CTFlearn] Get Into Command Mission - MISC / IDA (112) | 2023.08.03 |
[CTFlearn] Bobby Toe's iPad - 포렌식 / Stegsolve / HxD (76) | 2023.07.12 |
[CTFlearn] The Keymaker - 포렌식 / JPEG / HxD (70) | 2023.07.10 |
[CTFlearn] Bite-code - 리버싱 / Python (65) | 2023.05.10 |