일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Qrcode
- Javscript
- BASE64
- Caesar Cipher
- reversing
- sql injection
- 시저 암호
- Navajo alphabet
- cookie
- base32
- JavaScript
- assembly
- 비즈네르 암호
- Mail Header injection
- burpsuit
- Python
- vigenere cipher
- 카이사르 암호
- Linux
- webhacking
- AVR
- Web Hacking
- overthewire
- php_extract
- base16
- aslr
- Pigpen Cipher
- sha1
- Masonic Cipher
- Fortran 90
- Today
- Total
My Drive
pythonchallenge #07 - image 본문
# 일곱 번째 문제
이 문제는 예전에 http://xcz.kr/ 에서 본 적이 있는 문제이다. 한칸한칸 rgb값을 이용해서 문자를 만드는 문제 였는데 이전에는 길이가 짧기도 했고, python을 이용해서 할 수 있는지 모르고 직접 손으로 풀었었던 기억이 있다.
pythonchallenge 문제이니 python에 이런 기능을 해주는 모듈이 존재하는 것 같다.
이미지의 픽셀을 읽는 방법을 찾아보니, PIL(Python Image Library) 이라는 것이 존재했다.
아래 사이트에서 다운받을 수 있다.
http://www.pythonware.com/products/pil/
이 라이브러리를 이용하여 rgb값을 읽어 올 수 있는 것을 알았고, 이제 나한테 필요한 값이 어떤 규칙을 가지고 있는지 찾아보았다.
이미지 파일을 받아서 그림판으로 열고 색 선택 기능을 이용해 첫번째 네모를 클릭한 후 RGB값을 보니 세 개가 일치하였다. 몇 가지 더 확인을 해보니 모두 RGB값이 같은 것을 확인 할 수 있었다.
처음에는 아래와 같이 모든 픽셀 중에서 rgb값이 같은 것을 골라내었다.
결과는 엄청 많이 나온다... 생각해보니 네모 한칸은 한 픽셀이 아니었고, 저 네모 외에도 rgb값이 같은 것이 있을 수 있었다.
그래서 이번에는 모든 픽셀이 아니라 x축은 전체를, y축은 정가운데만 확인하여 출력해보았다.
제대로 된 값이 나왔다는 것을 알 수 있었지만 여전히 반복된 것이 있었다.
같은 횟수로 반복되는 것도 아니어서 전과 같은 값이 나오면 출력하지 않도록 해보았다.
이번에는 성공한 듯 싶어 rgb중 한 값을 아스키코드에 맞게 문자로 출력하도록 해보았다.
결과는 아래와 같았는데, 문제가 좀 있었다.
smart guy, you made it. the next level is [105, 10, 16, 101, 103, 14, 105, 16, 121]
전과 같은 값을 모두 출력하지 않다보니 같은 문자나 숫자가 연속으로 나오는 것을 생각하지 못했다.
이번에는 반복이 너무 많이 될 경우는 출력하도록 바꿔보았다. 그리고 나온 값을 아스키 값으로 바꾸었다.
결과는 아래와 같이 제대로 나왔고,
smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]
답은 integrity
그러므로
http://www.pythonchallenge.com/pc/def/integrity.html
위와같이 url을 바꿔주면 다음단계로 넘어간다.
※ Image
참고사이트 : http://effbot.org/imagingbook/image.htm
'writeup' 카테고리의 다른 글
pythonchallenge #09 - ImageDraw (0) | 2014.12.09 |
---|---|
pythonchallenge #08 - bz2 (0) | 2014.12.09 |
pythonchallenge #06 - zipfile (0) | 2014.12.03 |
pythonchallenge #05 - pickle (0) | 2014.12.02 |
pythonchallenge #04 - html (0) | 2014.12.01 |