Training: Net Ports
희한하게도 소스 포트를 설정하는 문제이다.(이런 문제는 처음 봄.) 소켓으로 보낼 생각을 하고,
소켓 옵션 설정하는 함수인 setsockopt함수에 뭔가 인자가 있어서 그걸로 어떻게 설정하면 될거라고
생각했는데 docs에 찾아봐도 없다.(내가 못찾은걸수도.) 구글링해보니
http://bytes.com/topic/python/answers/555361-how-set-source-ip-adress
에 어떤 분이 해결책을 적어주셨다.
서버를 여는것처럼 bind로 내 아이피 주소를 열고, 포트 인자로는 내 포트를 준다. 그 후에 바로 connect()함수로 내가 원하는 서버에 연결하면 bind된 아이피주소와 포트로 보내진다고 한다. 신기함.
# -*- encoding: cp949 -*- import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('192.168.219.143',42)) #소스 포트 설정. 42번 포트로 소스 포트를 설정한다. s.connect(('www.wechall.net',80)) message="""GET /challenge/training/net/ports/index.php HTTP/1.1 Host: www.wechall.net Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 Referer: http://www.wechall.net/challs/Coding/by/chall_score/ASC/page-1 Cookie: 쿠키 """ s.sendall(message) print s.recv(7000)
Can you read me
전에 포스팅을 두번인가 했던 pytesser로 잘 보정하고 인식하게 해서 보내면 된다.
http://qkqhxla1.tistory.com/190
# -*- encoding: cp949 -*- from pytesser import * import urllib2,Image def download_photo(filename): file_path = "%s%s" % ("C:\\Users\\Ko\\Documents\\Visual Studio 2012\\Projects\\PythonApplication37\\", filename) downloaded_image = file(file_path, "wb") req = urllib2.Request('http://www.wechall.net/challenge/can_you_readme/gimme.php') req.add_header('Cookie','쿠키') 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 while 1: req = urllib2.Request('http://www.wechall.net/challenge/can_you_readme/index.php') req.add_header('Cookie','쿠키') urllib2.urlopen(req).read() print 'downloading...' download_photo('captcha.png') im = Image.open('captcha.png') x=3 im.transform((im.size[0]/x,im.size[1]/x),Image.EXTENT,(0,0,im.size[0],im.size[1])).save('captcha.png') #크기보정. im = Image.open('captcha.png') for i in range(0,im.size[1]): #색깔보정 for j in range(0,im.size[0]): if im.getpixel((j,i)) > 0: im.putpixel((j,i),10) answer = image_to_string(im).rstrip() print 'answer =',answer req = urllib2.Request('http://www.wechall.net/challenge/can_you_readme/index.php?solution='+answer+'&cmd=Answer') req.add_header('Cookie','쿠키') read = urllib2.urlopen(req).read() if read.find('wrong') == -1: print read break
'Python > 2.7 simple coding(+ c++)' 카테고리의 다른 글
TheBlackSheep Programming 1~3 (0) | 2015.01.14 |
---|---|
WeChall Training: ASCII, Encodings: URL, Training: Crypto - Caesar I (0) | 2015.01.11 |
WeChall Training: Programming 1, Flow Over Astronomy (0) | 2015.01.04 |
lob gremlin->cobolt (4) | 2014.12.31 |
Security Override Programming 11~12 (0) | 2014.12.23 |