대충 흑백이 이진수같다는건 알았지만 어떻게할줄 몰라서 여기저기 물어봤었는데....
사진에서 1픽셀씩 얻어와서 8자리씩 끊은 후 그걸 십진수로 만들고 아스키코드로 만들면
글자가 된다고 한다. 근데 키값은 얻었는데 문제에 image.php로 전송하라고만 있을뿐
GET인지 POST인지 변수는 뭐로줘야하는지 안알려줘서 이것저것 다해봤는데도 답이 안나온다.
그래서 그냥 답만 내고 포기....
import os,sys,urllib2,Image def download_photo(img_url, filename): file_path = "%s%s" % ("C:\\Users\\Ko\\Documents\\Visual Studio 2012\\Projects\\PythonApplication27\\", filename) downloaded_image = file(file_path, "wb") req = urllib2.Request('http://www.enigmagroup.org/missions/programming/4/image.php') req.add_header('Cookie','enigmafiedV4=내 쿠키값') image_on_web = urllib2.urlopen(req) while True: buf = image_on_web.read() if len(buf) == 0: break downloaded_image.write(buf) downloaded_image.close() image_on_web.close() return file_path download_photo("http://www.enigmagroup.org/missions/programming/4/image.php", "image.png") im = Image.open('image.png') print im.size bin = '' for i in range(1,im.size[1]+1): #이미지 픽셀 가로세로 크기 얻어와서 bin에 하나로 주륵 잇는다. for j in range(1,im.size[0]+1): bin += str(im.getpixel((j-1,i-1))) answer = '' before = 0 for i in range(1,im.size[1]*im.size[0]+1): #bin에서 돌아가면서 if i%8==0: #8글자마다 자름 answer += chr(int(bin[before:i],2)) #2진수를 십진수로 변화시켜서 아스키코드에 의해 문자로 만든 후 그걸 answer에 잇는다. before = i print answer print answer[answer.find(':')+1:]
참고하라고 받은 코드인데......(제가 짠게 아니라 받은 겁니다.) 어떻게 이렇게 간단히 코드가
짜여지는지 놀랍다. 여기에 올려놓고 분석해야지...
from Image import open def sp(s, n): return [s[i*n:i*n+n] for i in xrange(len(s)//n)] im = open('image.png', 'r') x, y = im.size data = '' for dy in xrange(y): for dx in xrange(x): data += str(im.getpixel((dx, dy))) print data print ''.join(map(lambda x: chr(int(x, 2)), sp(data, 8)))
'Python > 2.7 simple coding(+ c++)' 카테고리의 다른 글
hack this site Programming missions : Unscramble the words (0) | 2014.11.15 |
---|---|
Enigmagroup missions/programming 6 (0) | 2014.11.09 |
Enigmagroup missions/programming 5 (0) | 2014.11.05 |
Enigmagroup missions/programming 3 (0) | 2014.11.03 |
Enigmagroup missions/programming 2 (0) | 2014.11.03 |