이번 포스트에서는 Python Challenge의 Level 24 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 미로 사진이 출력되어 있다. 우선 해당 미로의 시작과 끝을 찾은 다음에 미로를 풀면 되는 것으로 보인다. ## 문제 풀이 : 우선 파이썬을 통해 미로의 시작점과 끝점을 알아내보겠다. ### 공격 코드 : from PIL import Image maze = Image.open("maze.png") w, h = maze.size for i in range(w): # Top line print(maze.getpixel((i, 0))) print("================= Top, Bottom 구별 선 =================") for i ..
이번 포스트에서는 Python Challenge의 Level 23 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 소 사진이 출력되어 있다. 개발자 도구를 확인하면 다음과 같은 문장들을 볼 수 있다. TODO : 사과를 구해야 할 일이 있었나요? 지금이 바로 그 사람에게 사과를 할 좋은 시간이빈다. 이 레벨에서 할일이 딱히 없더라도 그사람에게 좋은 매너를 보여주세요. "this"는 문서화되지 않는 모듈이다. 'va gur snpr bs jung?' "this"라는 파이썬의 모듈을 확인하고, 세 번째 문장을 해석하면 될 것으로 보인다. ## 문제 풀이 : 우선 파이썬의 "this" 모듈을 확인해보겠다. ### 실행 결과 : this는 파이썬의 특수 모듈이다. 또한..
이번 포스트에서는 Python Challenge의 Level 22 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 조이스틱 사진이 출력되어 있다. 개발자 도구를 열어보면 다음과 같다. "white.gif"가 존재한 것을 알 수 있다. 해당 GIF 파일을 다운로드 해보면 다음과 같다. GIF 파일을 밝기를 조절해보면 아래와 같이 여러 개의 점이 존재한다는 것을 알 수 있다. 해당 점들의 위치를 조사하고 이어보면 될 것 같다. ## 문제 풀이 : 우선 파이썬을 통해 해당 파일의 프레임들을 출력해보겠다. ### 공격 코드 : from PIL import Image with Image.open("white.gif") as gif: for f in range(gif.n_..
이번 포스트에서는 Python Challenge의 Level 21 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 파일을 HexEditor로 실행하면 다음과 같다. 헤더의 시작부분은 78 9c이다. 이는 zlib의 확장자이므로 해당 파일을 확장자별로 압축 해제하면 되는 것으로 보인다. ## 문제 풀이 : 파이썬을 통해 해당 파일안의 모든 확장자를 하나씩 확인해보겠다. ### 공격 코드 : import zlib with open("package.pack", "rb") as f: data = f.read() while 1: try: data = zlib.decompress(data) print(data[0:2]) except: break ### 실행 결과 : x9c..
이번 포스트에서는 Python Challenge의 Level 20 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : "주의 깊게 살펴보는 것은 허용하다"는 말과 함께 경고판 사진이 출력되어 있다. 개발자 도구를 확인해보겠다. "unreal.jpg"말고 단서가 없다. 여기서 해당 사진의 헤더 부분을 확인해보면 다음과 같다. Response Headers가 존재한다. 또한 파일의 크기는 2123456789이지만 오직 0-30202만 제공된다는 것도 확인할 수 있다. 파일의 30203부터 확인해보면 될 것 같다. ## 문제 풀이 : 파이썬을 통해 30203부터의 데이터를 확인해보겠다. ### 공격 코드 : import re import urllib.request imp..
이번 포스트에서는 Python Challenge의 Level 19 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 인도 사진이다. 개발자 도구를 확인해보면 아래와 같이 MIME 타입의 이메일이 보인다. 이메일 본문의 데이터를 이용하여 푸면 될 것으로 보인다. ## 문제 풀이 : 우선 데이터를 파일로 저장한 다음에 파이썬을 통해 indian.wav로 변경해보겠다. ### 공격 코드 : import base64 with open("level_19.txt", "r") as f: data = f.read() data = data.replace("\n", "") data = base64.b64decode(data) with open("indian.wav", "wb") a..
이번 포스트에서는 Python Challenge의 Level 18 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 문제의 제목을 보면 "can you tell the difference?"라고 되어있다. 해당 사진의 차이는 바로 밝기(brightness)이다. brightness.html로 접속하면 진짜 문제가 보인다. ### 공격문 : http://www.pythonchallenge.com/pc/return/brightness.html ### 실행 결과 : 개발자 도구를 확인해보면 다음과 같이 deltas.gz라는 파일이 존재하는 것을 확인할 수 있다. 해당 파일을 다운로드해서 분석해보면 되는 것으로 보인다. ## 문제 풀이 : gz파일을 압축해제하면 다음과 ..
이번 포스트에서는 Python Challenge의 Level 17 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 화면 좌측 하단에 보면 Level 4에 나왔던 사진이 다시 나온 것을 확인할 수 있다. Python Challenge (Level 4) 이번 포스트에서는 Python Challenge의 Level 4 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 사진이 한 장 달려 있다. 사진을 클릭하면 다음과 같은 화면이 jy05un.tistory.com Level 4에 들어가서 쿠키를 확인해보면 다음과 같이 파라미터를 busynothing을 쓰라고 한다. 파라미터만 busynothing으로 바꾼 다음에 레벨 4와 같은..
이번 포스트에서는 Python Challenge의 Level 16 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 중간에 핑크색 선이 여러개 들어가 있는 사진이 한 장 출력되어 있다. 단서는 해당 문제의 제목인 "let me get this straight"이다. 즉 정렬해달는 뜻인데, 우선 해당 사진을 다운로드하고 픽셀을 출력해보면 다음과 같이 중복된 숫자가 출력된 것을 알 수 있다. 195가 바로 사진 중간에 보이는 핑크색 선이다. 해당 픽셀만 따로 정렬해서 푸면 될 것으로 보인다. ## 문제 풀이 : 파이썬을 통해 핑크색 선만 따로 정렬해보겠다. ### 공격 코드 : from PIL import Image, ImageChops img = Image.open..
이번 포스트에서는 Python Challenge의 Level 15 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 달력이 출력되어있다. 달력 우측 하단에 위치하는 오른쪽 달력을 보면 2월이라고 되어있는데, 29일까지 있다는 것을 알 수 있다. 즉 윤년인 것이다. 일단 1**6년 중 윤년이면서, 1월 1일이 목요일이면서 6으로 끝나는 해를 찾으면 될 것 같다. ## 문제 풀이 : 파이썬을 통해 1**6년 중 윤년을 구해보겠다. ### 공격 코드 : import calendar leap_years = list() for i in range(1006, 2000, 10): curr_year = i if(calendar.isleap(curr_year)): if(calen..