728x90
이번 포스트에서는 Python Challenge의 Level 14 문제에 대해 다루겠다.
문제를 클릭하면 다음과 같은 페이지가 출력된다.
## 문제 해석 :
italy라는 회오리빵 사진과 바코드처럼 보이는 사진 한장이 출력되어 있다. 개발자 도구를 확인해보니 아래와 같이 "100*100 = (100+99+99+98)"이라는 힌트가 있다.
100*100은 가로와 세로의 길이라고 생각할 수 있고, 100+99+99+98에서 총 4개의 수가 나와 있으므로 사각형이라고 생각할 수 있다. 즉 100(외부)에서 1(내부)로 크기를 줄이면서 생긴 회오리형태라고 볼 수 있다.
## 문제 풀이 :
이미지를 다운로드해서 크기를 출력해보겠다.
### 공격 코드 :
from PIL import Image
img = Image.open('wire.png')
print(img.size)
### 실행 결과 :
사이즈를 임의로 늘린 것 같다. 파이썬을 통해 이미지의 10000 픽셀을 사용하여 외부에서 내부로 가는 나선형태의 픽셀로 재계산하면 될 것 같다.
### 공격 코드 :
from PIL import Image
img = Image.open('wire.png')
delta = [(1, 0), (0, 1), (-1, 0), (0, -1)]
img_solv = Image.new('RGB', [100, 100])
x, y, p = -1, 0, 0
d = 200
while d/2 > 0:
for v in delta:
steps = d // 2
for s in range(steps):
x, y = x + v[0], y + v[1]
img_solv.putpixel((x, y), img.getpixel((p, 0)))
p += 1
d -= 1
img_solv.save('wire_solv.png')
### 실행 결과 :
고양이 사진이 출력된 것을 확인할 수 있다.
### 공격문 : http://www.pythonchallenge.com/pc/return/cat.html
### 실행 결과 :
고양이의 이름이 uzi이다. 이는 Level 15로 가는 Key이다.
### 최종 공격문 : http://www.pythonchallenge.com/pc/return/uzi.html
### 실행 결과 :
Level 15로 넘어간 것을 확인할 수 있다.
'Wargame > Python Challenge' 카테고리의 다른 글
Python Challenge (Level 16) (0) | 2022.09.15 |
---|---|
Python Challenge (Level 15) (0) | 2022.09.11 |
Python Challenge (Level 13) (0) | 2022.09.08 |
Python Challenge (Level 12) (0) | 2022.09.07 |
Python Challenge (Level 11) (0) | 2022.09.06 |