먼저 문제 페이지는 아래와 같다.
http://www.pythonchallenge.com/pc/def/hockey.html
해당 페이지에 접속을 하면 "it's in the air. look at the letters." 라고 나온다.
공기중에서 볼 수 있는것?
badcob님의 힌트를 받아 아래 페이지가 존재 한단것을 알 수 있었다.
http://www.pythonchallenge.com/pc/def/oxygen.html
(nomja님의 제보로 다시 한번 확인해보니 이전 문제에서 출력되는 hocky에서 이루어지는 글자가 oxygen이군!)
해당 페이지에는 이미지가 삽입되어 있었다.
이미지에서 회색 및 검은색 박스 부분의 데이터를 뽑아 스트링으로 변환하여 보니 아래와 같은 메세지가 나왔다.
smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]
다시 뒤의 숫자값들을 변환한 결과 "integrity" 라는 단어를 얻을 수 있었다.
최종 코드는 아래와 같다.
#!c:\python26\python.exe
import Image
final = ''
im = Image.open("oxygen.png")
for x in range(87):
box = ( (x*7), 43, (x*7+1), 44)
output = im.crop(box)
data = output.tostring()
final += data[0]
print final
data = [105, 110, 116, 101, 103, 114, 105, 116, 121]
next = ''
for byte in data:
next += str(chr(byte))
print 'next : ' + next
PS. 이 문제를 풀기위해서는 PIL (Python Imaging Library)에 대한 이해가 필요하다.
http://www.pythonware.com/products/pil/