Wargame/CTF-d
[CTF-d](Multimedia) d4rth는 더러운 방법을... (140)
광팔2
2021. 2. 16. 19:46
반응형

파일을 다운로드하면 두 개의 파일 original.png / encrypted.png 이미지 파일 두 개를 얻을 수 있다.
일단 파일 이름을 보면 기본 / 암호화 이다.
파일은 같은 이미지이며 크기가 1KB 정도의 차이를 보이고 있다.

이제 이미지를 비교해주는 Diffimg 툴을 이용해보자.

왼쪽 위가 조금 다르다는 것을 알 수 있으며 가로 49 / 세로 7의 크기이다.
49x7 작은 네모 안에도 서로 같은 부분이 있고 다른 부분이 있다는 점을 알 수 있다.(자세히 보면 아주 작아 1 픽셀 정도의 크기인 것을 알 수 있다.)
이제 픽셀을 문자로 바꾸기 위해 코드로 바꿔보자.(서로 다른 부분은(노랑) 1 / 서로 같은 부분은(검정) 0)
from PIL import Image
img1 = Image.open("original.png")
img2 = Image.open("encrypted.png")
str = ''
for x in range(49):
data = ''
for y in range(7):
p_img1 = img1.getpixel((x, y))
p_img2 = img2.getpixel((x, y))
if p_img1 == p_img2:
data += '0'
else:
data += '1'
str += chr(int(data,2))
print(str)
코드는 간단하니 생략한다.

SHA256으로 바꿔주면 플래그를 얻을 수 있다.
플래그 값 : bdfa42fd05bfa808e9bcb63786ed3983353ac7f6874c37046722ab5944c79f0d

반응형