728x90
이번 포스트에서는 Python Challenge의 Level 16 문제에 대해 다루겠다.
문제를 클릭하면 다음과 같은 페이지가 출력된다.
## 문제 해석 :
중간에 핑크색 선이 여러개 들어가 있는 사진이 한 장 출력되어 있다. 단서는 해당 문제의 제목인 "let me get this straight"이다. 즉 정렬해달는 뜻인데, 우선 해당 사진을 다운로드하고 픽셀을 출력해보면 다음과 같이 중복된 숫자가 출력된 것을 알 수 있다.
195가 바로 사진 중간에 보이는 핑크색 선이다. 해당 픽셀만 따로 정렬해서 푸면 될 것으로 보인다.
## 문제 풀이 :
파이썬을 통해 핑크색 선만 따로 정렬해보겠다.
### 공격 코드 :
from PIL import Image, ImageChops
img = Image.open("mozart.gif")
for i in range(img.height):
box = 0, i, img.size[0], i+1
row = img.crop(box) # 박스 영역의 복사본 반환
bytes = row.tobytes()
pink_offset = bytes.index(195)
row = ImageChops.offset(row, -pink_offset) # pink색의 오프셋을 음수로 두어야 왼쪽으로 이동
img.paste(row, box)
img.save("Level16_answer.png")
### 실행 결과 :
romance라는 단어가 출력된 것을 확인할 수 있다.
### 최종 공격문 : http://www.pythonchallenge.com/pc/return/romance.html
### 실행 결과 :
Level 17로 넘어간 것을 확인할 수 있다.
'Wargame > Python Challenge' 카테고리의 다른 글
Python Challenge (Level 18) (0) | 2022.09.17 |
---|---|
Python Challenge (Level 17) (0) | 2022.09.16 |
Python Challenge (Level 15) (0) | 2022.09.11 |
Python Challenge (Level 14) (0) | 2022.09.10 |
Python Challenge (Level 13) (0) | 2022.09.08 |