일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BASE64
- overthewire
- Navajo alphabet
- 비즈네르 암호
- base32
- Masonic Cipher
- burpsuit
- sql injection
- Qrcode
- 카이사르 암호
- reversing
- assembly
- Web Hacking
- aslr
- Javscript
- Python
- Caesar Cipher
- Linux
- webhacking
- JavaScript
- Pigpen Cipher
- vigenere cipher
- php_extract
- Fortran 90
- sha1
- 시저 암호
- AVR
- base16
- cookie
- Mail Header injection
- Today
- Total
목록Python (12)
My Drive
# 열한 번째 문제 소스를 봐도 딱히 힌트가 없고, odd even이라고만 되어있다. 그림을 자세히 보면 아래와 같이 한픽셀씩 건너 검은색으로 되어있다. odd와 even은 짝수와 홀수로 픽셀을 나누라는 의미로 해석되었고, 이를 위해 아래와 같이 코드를 작성해보았다. # pc11 import Image im = Image.open('cave.jpg') odd = Image.new('RGB', (320, 240), 'white') even = Image.new('RGB', (320, 240), 'white') pix = im.load() size = im.size print size x = size[0] y = size[1] for i in range(0, x) : for j in range(0, y/2)..
# 열 번째 문제a[30]의 길이는? a가 뭔가하고 소스를 보니 전에 꿀벌 문제처럼 그림에 링크가 걸려있었다.굳이 그림을 클릭안해도 소스를 통해서 들어갈 수 있으므로 바로 들어가 보았다. a의 정체가 등장한다.자세히 보니 아는 사람들은 쉽고 모르는 사람은 이게 뭐지 할거 같다.다행히도 나는 알고 있는 쪽에 속했다. ㅎㅎ베르나르베르베르의 소설 에 나오는 개미 수열이다. 이런 규칙이 있다.규칙을 표현하는 방법은 많겠지만 나는 아래와 같이 프로그래밍하였다. # pc10 a = ['1'] for i in range(31) : ele = a[i][::-1] num = ele[0] cnt = 1 next = '' if len(a[i]) > 1 : for j in range(1, len(a[i])) : if num ..
# 아홉 번째 문제점을 연결해라. 그림에 있는 점을 연결하는 건가 하고 소스를 보았다. 좌표로 보이는 것들이 길게 나와있었는데 위 그림에서 나타난 점의 좌표인지는 알 수 없었다.우선 x,y로 생각하고 서로 연결해보았다. 코드는 아래와 같이 짰다.(first와 second에 최대값이 500이 안되서 크기는 500,500으로 잡고 시작했다.) # pc9 import Image, ImageDraw first = [146,399,163,403,170,393,169,391,166,386,170,381,170,371,170,355,169,346,167,335,170,329,170,320,170,310,171,301,173,290,178,289,182,287,188,286,190,286,192,291,194,296,..
# 여덟 번째 문제 소스를 보니 처음보는 html 태그가 있었다. 찾아보니 하나의 이미지에 여러 링크를 걸 때 사용하는 이미지맵이었다. 태그를 이용해 이미지맵을 만들고, 태그의 shape속성으로 이미지맵의 형태를 지정, rect, circle, poly,.... 그리고 coords속성으로 좌표갑을 지정한다. 참고 : http://www.homejjang.com/05/imagemap.php 링크가 걸려 있는부분은 벌이 있는 부분이었다. 클릭하니 아래와 같이 인증을 요구하는 창이 떴고, 위에서 주석으로 un과 pw는 username과 password의 줄임말임을 알 수 있었다. un: 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah..
# 여섯 번째 문제마찬가지로 사진만 있어서 소스를 보았다. 아래 주석에는 별다른 이야기가 없고, 눈에 띄는 단어는 zip이라는 주석이다. 혹시나해서 url을 .zip으로 바꿔보니 아래와 같이 파일을 다운받을 수 있었다.http://www.pythonchallenge.com/pc/def/channel.zip 910개의 텍스트 파일이 압축되어있엇다. readme.txt라는 파일이 아래은 아래와 같은 내용을 담고 있었고, 909개의 파일은 모두 지난 4번 문제와 비슷하게 이루어져 있었다.(Next nothing is ______)시작 숫자는 90052이다. 처음에는 뭣도 모르고 우선 압축을 푼 후 아래와 같이 쉽게 코드를 짤 수 있었다. # pc6 path = "./channel/" num = 90052 fo..
# 다섯 번째 문제발음해라? 소스를 보니 아래와 같았다.peak hell과 비슷한 소리? 우선 banner.p를 들어가 보니 아래와 같았다.아, peak hell은 피클(pickle)이라는 힌트를 주려는 것 같다. python에 pickle이라는 모듈이 있고, 아래는 자료를 pickle을 이용해 dump했을 때 파일에 써지는 형태이다(S, p1, p2 같은 것들이 보이면.... ) 파일을 읽어서 처리해야 할 듯 하므로 파일로 저장해준다. pickle모듈은 간단히 아래와 같이 사용한다. 자료를 파일에 쓸때는 dump, 파일을 자료로 쓸때는 load를 사용. # pc5 import pickle f = open('pc5.txt') load = pickle.load(f) print load 결과는 아래와 같이 ..
# 네 번째 문제 아무런 설명 없이 그림만 딸랑 있다. 그림에 링크가 걸려있어 클릭해보니 아래와 같은 창이 뜬다. url을 보니 뒤에 nothing=12345라는게 붙어있고, 다음 nothing는 44827이라고 한다. 다시 전 페이지로 돌아와 소스를 보니 힌트가 주어져 있다. urllib를 사용하고, 400번 안에는 끝날거라고 한다. 아마 저 숫자를 몇 백 페이지 동안 넘겨야 하는 듯 싶다. 그렇다면 http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345 페이지에 접속해 내용을 읽은 후 숫자를 얻어와서 nothing를 바꾼 페이지에 다시 접속, 이를 반복해면 될 듯 하다. # pc4 import urllib url = "http://www..
# 세 번째 문제작은 문자 하나가 각 사이드에 3개의 큰 보디가드로 둘러쌓여있다? 우선 소스를 보았다.아, 양쪽이 대문자 3개씩으로 둘러쌓여있는 소문자를 찾으면 될 것 같다. 마찬가지로 길기때문에 파일에 저장시켰다. 파일을 한 줄 씩 읽어서 확인하면 다음줄과 이어지는 끝부분을 처리하기 힘들 것 같아서한번에 읽은 후 엔터를 없애 한줄의 문자열로 만들어 주었다.그리고 소문자를 찾아 앞에 3개가 대문자이고, 뒤에 3개가 대문자인지, 또 앞뒤로 4번째는 대문자가 아닌지 확인하는 코드를 아래와 같이 작성하였다. #pc3 import string f = open('pc3.txt', 'r') r = "" while 1: line = f.readline() if not line: break else: r += line..
# 두 번째 문제 책에 있는 문자를 인식하라고?? 아... 페이지 소스에 있을 거란다. 소스 보기를 하니 아래와 같이 문제가 나와있다. 아래 복잡해 보이는 것들에서 희귀한? 문자를 찾으란다. 많이 나오는 것들을 다 지우면 될 듯 하다. 우선 복잡한 문자들을 pc2.txt라는 파일에 저장해주었다. 이 파일을 읽어서 많아 보이는 특수문자들을 다 지우는 코드를 아래와 같이 짜보았다. #pc2 import string f = open('pc2.txt','r') while 1: line = f.readline() if not line: break else: print line.strip(string.punctuation) f.close() 한 줄씩 읽어서 특수문자를 없앤 line을 출력하다 보니 결과가 너무 길어..
# 첫 번째 문제 K를 M으로, O를 Q로, E를 G로, 알파벳이 2칸씩 당겨졌음을 알 수 있다. A는 C, B는 D, C는 E, .... 위의 규칙을 가지고 보라색의 알아볼 수 없는 글씨를 알아 볼 수 있게 해야 된다. 개인의 생각에 따라 코딩은 다양하게 나올 듯 싶다. 나는 아래와 같이 코딩했다. #pc1 import string alpha = string.ascii_lowercase str = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pca..