Python 140

(나중 참고용) 캡쳐 프로그램, 후킹모듈 기본

pyHook : https://pypi.python.org/pypi/pyHook pywin32 : http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/ http://k1rha.tistory.com/432 원래의 목적은 미리 실행시키고 포커스가 해당 cmd에서 떨어져도 스페이스바를 누르면 캡쳐가 되고, 해당 캡쳐화면은 내가 지정한 폴더 내부에 저장하는것이다. 종종 빠른 시간 내에 사진을 찍어서 전송할 일이 있다. 매번 스마트폰으로 사진을 찍고(내 화면을 찍음.) 하는게 매우 귀찮고, 또 느려서 전역적으로 후킹을 해서 스페이스바가 눌렸으면 현재 화면을 캡쳐하고, z를 두번 누르면 해당 캡쳐폴더를 압축해놓는게 프로그래밍의 목표였는데.... 일단..

pyqt를 이용한 나만의 웹툰 뷰어 만들기2 (개선)

추가 개선 : http://qkqhxla1.tistory.com/358 1차 제작 : http://qkqhxla1.tistory.com/333 지난번의 단점.1. 레진코믹스 웹툰 파싱하는데 시간이 너무 오래 걸림.2. 레진코믹스 같은 경우 로그인해서 만화를 볼 수 있는데 난 구현을 그냥 페이지 요청으로 구현해서 로그인 구현이 안 됬음. 로그인상태 유지하는걸 구현하거나 쉽게 로그인하도록 구현3. 마우스 스크롤로 페이지를 내릴때 내려가는 양이 적어서 손이 아픔. 스크롤 양 조절.4. py2exe로 exe로 만들었는데 그림을 엑박으로 받아옴 (왜이런지는 모르겠네요 망...) 이것부터 빨리 고쳐야될듯 개선완료개선된것들은 다 취소선처리 쓰면서 찾은 문제점.1. 레진코믹스 웹툰 최신 무료회차 가져오는 파싱 문제. ..

Python/2.7 for fun. 2015.05.21

나만의 편한 프록시 실행파일 만들기 2.

http://qkqhxla1.tistory.com/337 글에서 만들려다가 삽질만 하고 실패했었는데, 우연히 adm1nkyj님의 블로그를 돌아다니다가 해법을 찾았다. 이런 엄청난 우연이...... 참조.http://blog.naver.com/adm1nkyj/120212579819http://yszhou.blogspot.kr/2011/04/toggle-proxy-settings-in-windows.html 코드를 짜기전에 실제로 불편함을 해소하기 위한 프로그램이었으므로 어떻게하면 최소한의 동작만을 할까 고민했다. 처음에는 gui버튼을 만들어서 프록시 옆에 붙이기로 했다.(on/off버튼.) 그런데 생각해보니 gui버튼이 프록시 옆에 붙어있으려면 exe가 계속 실행되어야 하고, 리소스를 많이 잡아먹을거라 생..

Python/2.7 for fun. 2015.05.14

canyouhack.it Programming Challenge 3 Lost!

http://canyouhack.it/Hacking-Challenges/Programming-Challenges/Lost/최소한의 짧은 길을 찾는 프로그래밍을 하는 문제이다. http://canyouhack.it/Content/Challenges/Programming/Prog3.php 를 들어가보면. 대충 요런식의 길이 나오는데, 초록색부터 빨간색까지 가는 최소의 길 수를 5초안에 계산해서 내면 된다.(초록색과 빨간색 칸도 포함하여 낸다.) 예시로 위의 사진은 72칸이다. 돌아다니다가 설명도 잘되있고 구현도 잘되있는 사이트를 찾았다. A*알고리즘이란다.http://www.laurentluce.com/posts/solving-mazes-using-python-simple-recursivity-and-a-s..

canyouhack.it Programming Challenge 2 Sudoku!

스도쿠 그림이 나오고, 해당 스도쿠 그림이 있는 부분을 파싱해서 데이터를 잘 가져와서 문제를 푼 다음, A,B,C,D,E,~이런식으로 이어서 3초안에 다 계산해서 보내면 된다. 다른곳에서 알고리즘을 가져왔다.http://code.activestate.com/recipes/578140-super-simple-sudoku-solver-in-python-source-code/ 코드. # -*- encoding: cp949 -*- import urllib2 import re import random import os import operator session = 본인 세션 # GLOBAL VARIABLES grid_size = 81 def isFull (grid): return grid.count('.') ==..

나만의 편한 프록시 실행파일 만들기 1. (방법론)

웹해킹시 프록시를 종종 사용하는데 불편해서 만들려고 했었다. burp-suite를 사용하는데, 이걸 사용하려면 cmd를 켜서, java -jar bur~을 쳐서 프록시를 키고, 크롬의 속성창에서 인터넷 속성을 들어가서 프록시 사용을 체크하고확인누르고 나와서 사용, 사용안할려면 다시 들어가서 체크를 해제하고 확인누르고.. 이게 은근히 짜증났다. 그래서. exe를 실행만 하면 프록시가 켜지면서 동시에 알아서 프록시 사용 모드로 바뀜-> 버튼이 하나 나타나는데, 버튼 클릭 여부에 따라서 프록시 사용 모드가 on/off로 바뀜. 이렇게 편안한 프록시용 exe를 만들어보려고 했는데 실패했다. 아래는 프록시가 바뀌었는지 레지스트리를 확인하고 체크하는 코드이다. # -*- encoding: cp949 -*- from..

Python/2.7 for fun. 2015.04.27

python websocket 기초 참고용.(그냥 소켓 아님.)

나중에 쓸것같아서 기본적인것만 적어둠. 웹소켓 가장 기본적인 통신 예제이며, 윈도우에서 작동을 확인했다. 이거 파이썬 예시를 한동안 못찾다가 스택오버플로우에서 기초적이고 좋은 예시를 발견해서 가져다가 씀. 웹소켓 공식 문서 : http://dev.w3.org/html5/websockets/웹소켓 테스트용 사이트 : https://www.websocket.org/echo.html source : http://stackoverflow.com/questions/23562465/websockets-with-tornado-get-access-from-the-outside-to-send-messages-to-clien tornado : https://pypi.python.org/pypi/tornado 서버 실행시키..

파이썬다운(?) 코드.

여태까지 파이썬으로 이것저것 짜 보면서 왠만한건 다 만들수 있었고, 어느정도 익숙해졌다고 생각했는데 여태 파이썬을 제대로 못쓴것같다. c에 익숙하다가 파이썬으로 넘어와서 그런지 파이썬다운(?) 코드를 잘 못 짜는것 같다.(사실 c는 보안과는 다른 이유로 지금도 자주 쓰고있긴 하다.) 네이버에서 자료를 찾다가 한 질답을 보았는데 코드를 보고 신선한 충격을 받았다. (역시 고수의 코드를 살피기만 해도 도움이 된다.) http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=223407592&qb=7YyM7J207I2s&enc=utf8§ion=kin&rank=4&search_sort=3&spq=1 별거 아닌데 나같은경우 zip이나 dict같은건 그냥 개념..

파이썬 출력 format관련.

http://pyformat.info/ 의 내용을 다 정리해옴. 반은 알고 반은 모르는 출력형식이다. 직접 해봐서 익히거나 필요할때 찾기용으로 적어둠. http://khanrc.tistory.com/entry/Python-String-Format-Cookbook 에도 꽤 유용한 정보가 많다. # -*- encoding: cp949 -*- print '%s %s' % ('one', 'two') #오래된 방식의 기본 출력. print '{} {}'.format('one', 'two') #새로운 방식 print '{1} {0}'.format('one', 'two'),'\n' #이런식으로 바꿔서 출력 가능함. print '%10s' % ('test', ) #오래된 방식의 해당 자리에 맞춰서 출력함. 오른쪽에 맞..

pyqt를 이용한 나만의 웹툰 뷰어 만들기 1.

이 프로그램에서 더 개선됨 : http://qkqhxla1.tistory.com/347 웹툰을 좋아하는 나는 매번 네이버, 다음, 레진코믹스 각각 따로 들어가서내가 좋아하는 웹툰을 골라서 보는 과정이 조금은 귀찮았다. (매번 클릭하고 찾는 그런 일련의 과정들이.) 그래서 나만의 웹툰 뷰어를 만들어보기로 했다. 실행시키는 즉시 오늘 요일의 모든 웹툰들 중에서, 내가 좋아하는 웹툰들 목록을 파싱해와서 그것들만 따로 뷰어로 보여주는것이다. 매 요일의 웹툰중에서 내가 가장 좋아하는 웹툰은 txt에 적어놓고, 이것만 참조해서 뷰어에 나온다. (원래는 소스코드안에 하드코딩했지만 자주 변경이 일어날것 같아서 txt파일로 변경) 나는 탭을 옮겨다니면서 웹툰을 감상하기만 하면 된다. 실행시키는 즉시 이렇게 뜬다. (참고..

Python/2.7 for fun. 2015.04.13

hack this site Programming missions : Parse an XML file

https://www.hackthissite.org/missions/prog/4/ 시작하면 시간이 2분이 주어진다. 2분이 주어진다는건 프로그래밍 과정중 하나쯤은 프로그래밍을 안하고 손으로 노가다해도 된다는 의미이다.(난 마지막에 나온 숫자들을 판별하는것에 시간을 썼다. 즉 결과가 나오면 보고 직접 타이핑했다는 의미) 들어가면 랜덤하게 xml파일이 하나 나오고, 그 xml파일대로선과 호를 그린 후 파랑,녹색,빨강,노랑,검정(원래는 흰색인데 내가 흰색대신 검정으로 바꿈.) 순서대로 읽어서 '파랑,녹색,빨강,노랑,검정' 과 같은 형식으로보내면 통과이다. python의 matplotlib을 참조했다. 이것은 파이썬에서 매트랩을 쓸수 있는 모듈이다. 하는 방법은. http://matplotlib.org/user..

wargame.kr pyc_decompile

http://wargame.kr:8080/pyc_decompile/ bughela.pyc를 준다. 이걸 해석해서 원하는 flag를 입력하면 된다. 이걸 우리가 보기 좋게 변환하는 모듈이 있다. uncompyle2모듈이다. 다운로드 : https://pypi.python.org/pypi/uncompyle2/1.1다운받아서 설치 후 import uncompyle2 with open("bughela.py", "wb") as fileobj: uncompyle2.uncompyle_file("bughela.pyc", fileobj) 이렇게 실행한다. 이 코드를 실행하면 bughela.py로 좋게 변환되어있다. 이게 아니라도 를 이용하면 된다. (Hide님의 글에서 가져왔음. http://hides.tistory.c..

분수 관련 fraction과 struct모듈

fraction모듈은 파이썬에서 정밀한 분수 처리 등에 이용된다.docs : https://docs.python.org/2/library/fractions.html#fractions.Fraction간단한 예제. # -*- encoding: cp949 -*- from fractions import Fraction print Fraction(1,5) #인자가 2개일경우 첫번째인자는 분자, 두번째인자는 분모. print Fraction(1.5) #인자가 하나일경우 해당 소수를 분수로 변환해줌. print sum([Fraction(1,i) for i in range(1,101)]) #1/1 + 1/2+ 1/3 + 1/4.... 1/100의 분수를 구하는 예제. print float(sum([Fraction(1,..

네이버 블로그에서 최근에 올라온 음악들 다운받기 2 코딩, xml다루기

이전글. http://qkqhxla1.tistory.com/311 코딩한 결과. 나중에도 필요할 거 같으므로 주석은 최대한 자세히 써놓았다. xml파싱하는 라이브러리는 lxml을 썼다. 다운로드는 콘솔에서 wget으로 처리했다. 공식 홈페이지 : http://lxml.de/ 다운로드 : https://pypi.python.org/pypi/lxml/ 튜토리얼 : http://lxml.de/tutorial.html 아래쪽에 개선한 코딩이 있습니다 이건 그냥 뼈대 # -*- encoding: cp949 -*- import urllib2,re,os import codecs import subprocess from lxml import etree outer = urllib2.urlopen(urllib2.Reque..

Python/2.7 for fun. 2015.03.15

네이버 블로그에서 최근에 올라온 음악들 다운받기 1 블로그 구조 분석

동기.종종 네이버 블로그에서 코딩하면서 들을 음악을 다운받는다. 개인적으로 리듬게임의 음악이 신나서 시간가는줄 모르고 잘 듣고 집중도 잘되는것같다. http://blog.naver.com/diamonds8/220296189977 이 분의 블로그의 카테고리에 리듬게임음악 등을정리해서 자주 포스팅이 되는데, 매번 들어가서 받을게 있는지 확인하고 만약 내가 안 받은 음악이면 하나하나 다운받기 귀찮아서..(특히 일본어로 된 음악은 있는지 찾기도 힘들다.) 가져오는 스크립트를 하나 짰다. 그런데 다운받기 전에 네이버 블로그의 구조분석을 약간 해야됬다. 계획.1. 해당 음악 카테고리의 최근 글들의 음악 목록을 분석한다.2. 음악 목록중 내가 이미 가지고 있는 음악이면 무시하고, 새 음악이면 다시 다운 받는다.3. ..

Python/2.7 for fun. 2015.03.15

파이썬을 더 멋있게 쓰기위한 함수, itertools 모듈

파이썬 코드를 더 간지나게 짜기 위한 함수들.. 1. reducemap과 비슷한거지만 조금 다르다. 두번째인자로 순서형 자료(리스트같은거.)를 받는데 이걸 받아서 첫번째 함수를 실행시킨다. 첫번째 함수로 반드시 인자가 두개씩 들어가게된다. 두번째로 들어온 인자가 2개 이상이면, 차례차례 들어가게 된다. import operator print operator.add(1,2) print reduce(operator.add,[1,2,3,4,5]) #((((1+2)+3)+4)+5) 의 순서로 함수가 실행된다. map은 이런거 안됨. 2. apply첫번째 인자로 함수를 받지만 두번째 인자로는 첫번째 인자 함수의 인자 갯수만큼만 받을 수 있다. reduce처럼 자동으로 만들어서 실행시키는게 안됨. print app..

(편의) pyqt를 이용한 gui 만화책 정리 스크립트.

pyqt는 처음 사용한다. 앞에서 gui 멀티쓰레드 채팅 서버를 만들었을때는 tkinter로 만들었었는데... tkinter는 모든걸 코드로 조절해야 하기 때문에 gui요소들을 원하는 위치로 배치하기가 어렵다. 반면에 pyqt는 c#에서 gui를 프로그래밍 하는 것처럼 마우스로 원하는 위치에 배열할수 있어서 편하다.다만 pyqt는 디자인해서 만들어진 .ui파일을 다시 .py로 변환해야 된다는게 좀 짜증나긴 한다.이러한 불편함이 있지만 그래도 마우스로 원하는 위치에 gui요소들을 배치할수 있다는 장점이 더 커서,gui사용시 pyqt를 사용하기로 했다.(사실 별로 하지도 않을 것 같지만..) 다운로드 : http://www.riverbankcomputing.com/software/pyqt/download참고..

Python/2.7 for fun. 2015.03.01

(편의) 만화책 정리 스크립트.

가끔 인터넷같은데서 만화를 다운받아서 볼 때가 있는데.... 예를 들어 최신에도 계속 나오는 만화같은경우 127화. 128화 이렇게 화마다 폴더가 있다. 그리고 해당 폴더안에는 달랑 사진이 20장 이내로 들어있어서.... 알집으로 보다가 20장이 꽉차면 알집을 다시 끄고 뒤로 한번 온 뒤에 다음 화의 폴더를 누른후 알집이 켜지길 기다려야 한다. 이게 엄청나게 불편하다. 매번 짜증났는데 오늘 할것도없어서 정리해주는 스크립트를 만들어보기로 함. exe를 실행한 후 해당 만화 폴더를 끌어오면 알아서 내부의 .jpg .png의 확장자가 있는 사진파일을들 한 폴더에 다 정리해준다. 나 혼자만 사용하려고 만든거기 때문에 버그가 많을 수 있음.15/03/01 예외처리 추가. 위의 캡쳐 내용과 일부 실행 결과가 다를 ..

Python/2.7 for fun. 2015.02.27

pyv8 (python javascript engine)

파이썬에서 자바스크립트 소스를 실행시킬수 있는 파이썬용 자바스크립트 엔진이다. 개인적으로 나름 많이 유용하다고 생각한다. 프록시에서 다른 사이트를 들어가거나, 네이버에서 로그인 시 자바스크립트로 암호화된 값을 던져주는데 이 값을 잘 받아서 쿠키에 설정을 잘 해야 동작이 잘 된다. 파이썬으로 자동으로 프록시에서 다른 사이트로 접속하는 스크립트를 짜려고 할 경우 이 자바스크립트값을 받아올 수가 없다.(확인 버튼을 누르는 순간 값이 생성되기 때문.) 그렇다고 자바스크립트를 일일히 다 해석해서 파이썬에 코드로 짜넣을 수가 없다.(천줄 이상의 긴 자바스크립트이기 때문에) 그럴 경우 자바스크립트 엔진을 이용해서 알아서 연산결과를 파이썬 코드로 가져와라~ 는 식으로 코드를 짜게되면 매우 편하다. 처음에 자바스크립트 ..

py2exe, (편의) 티스토리에 맞는 파이썬 소스코드 변환기

파이썬 파일을 실행파일(.exe)로 만들어줌. 다운로드 : http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 튜토리얼 : http://www.py2exe.org/index.cgi/Tutorial 옵션 : http://www.py2exe.org/index.cgi/ListOfOptions 방법.1. setup.py를 만든다. #setup.py from distutils.core import setup import py2exe setup(console=['hello.py']) #hello.py는 우리가 exe로 변환시킬 .py파일. #hello.py는 지금 만든 setup.py와 같은 콘솔상에 있어야 하는것 같다. 2. exe로 변환시킬 hello.py를..

Python/2.7 for fun. 2015.02.23

파이썬의 멀티쓰레딩과 멀티프로세싱.

문제될시 댓글달아주시면 글 삭제하겠습니다. 파이썬코리아에서 공유된 링크에서 얻은 정보이다. http://www.slideshare.net/kthcorp/h32011c6pythonandcloud-111205023210phpapp02?from_m_app=ios 에서 정보를 얻었으며 발표자는 '하용호' 님이다. 파이썬 클라우드에 대해서 발표를 하셨었는데 중간에 읽다가 멀티쓰레딩과 멀티프로세싱을 비교하는 부분이 개인적으로 얻어가는것 같아서 가져왔다. 이건 2버전얘기고 3버전에서는 바뀌어간다고 한다 : http://mydb.tistory.com/245여태까지 난 멀티프로세싱과 멀티쓰레딩은 거의 다른게 없다고 생각했다... 쓰레드는 프로세스의 하위개념이다. 나머지 차이는 별로 없는걸로 알고있는데 그게 아니었다.. ..

scapy 기초.

지인의 scapy 사용을 보고 해보려다가...윈도우용 scapy를 파이썬 2.7버전에 깔려다가 실패했다. 설치는 잘 된다. 다만 scapy안에서 dnet관련해서 에러뜨는 부분이 존재해서 삽질을 몇일동안 하다가 그냥 포기한다. 나 말고 고집이 생겨서 설치해보려는 사람이 있으면 진짜 꼭 필요한 상황이 아니고서는 시도해 보지 않기를 바람.... (아니면 2.6버전에 깔던지.) 일부 모듈중에 패치가 안된 모듈을 mingw까지 깔아서 재컴파일해봤지만 시간만 날렸....포기하고 리눅스에서 설치해봤는데 1분도 안걸려서 설치됬다. 앞으로 다시는 scapy를 윈도우에 설치하지 않겠습니다.설치 관련 url : http://www.secdev.org/projects/scapy/doc/installation.htmlscapy..

pythonpy, 리버스 커넥션 쉘(python 버전)

pythonpy설치.http://codingdojang.com/scode/371 에서 가져왔습니다. pip은 파이썬 관련 패키지를 설치할 때 가장 많이 사용하는 툴입니다.참고 : https://pypi.python.org/pypi/pip하지만 파이썬 설치 시 pip은 포함되지 않기 때문에 다음과 같은 방법으로 pip을 먼저 설치해 주어야만 합니다.윈도우즈윈도우즈의 경우는 다음 URL에서 바이너리를 다운받아서 설치하는게 가장 간편하겠네요:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip리눅스윈도우즈가 아니면 pip 을 설치하는 순서는 다음과 같습니다.1. easy_install 설치다음의 URL에서 distribute zip 파일을 다운로드 받은 후에 설치합니다.https..

스크린샷 찍는 pyscreenshot, 소리 재생 winsound 모듈.

pyscreenshot.공식 홈페이지 : https://pypi.python.org/pypi/pyscreenshot 파이썬으로 스크린샷을 찍을 수 있다.(별게다되네;;) 애초에 이걸 찾았던 이유는 웹게임의 프로그래밍 문제.... 중에서 문자인식 문제가 있는데, 문자가 말 그대로 그림 내부의 문자가 아니라 자바스크립트로 그려지는 문자라서 직접 손으로 캡쳐를 해서 분석을 해야한다. 물론 내가 직접 하는 방법도 있겠지만 그냥 찾아보니 나오고, 또 사용방법이 매우 쉬워보인다. 윈도우에도 설치는 가능. 공식 docs의 예제 코드. 아래에 인자로 들어가는 bbox는 캡쳐할 영역같다. (10,10)~(510,510) 웹게임 용도가 아니더라도 화면상에서 정확하게 일정 부분을 캡쳐해야 할 경우에 유용할 듯 싶다. # -..

rarfile module ( DareYourMind programming 3 )

docs : http://rarfile.readthedocs.org/en/latest/api.html download : https://pypi.python.org/pypi/rarfile/ 그리고 압축을 풀 unrar : rarfile을 커맨드라인으로 설치한다. 다운받은 rarfile경로로 들어가서. python.exe setup.py install. 압축을 풀 unrar을 실행시켜서 UnRAR.exe파일이 나오면 그걸 원하는 경로에 갖다둔다.(나같은경우는 C:\의 개인폴더.) rarfile이 설치된 경로로 들어간다.(Libs에서 rarfile.py를 찾아보면 나옴.) rarfile.py파일을 열어서 #: 'unrar', 'rar' or full path to either oneUNRAR_TOOL = "..

DareYourMind programming 1~2, 5, 9

http://www.dareyourmind.net/ 1. 항상 통과의례같은 요청 빨리보내기 문제. # -*- encoding: cp949 -*- import urllib2,re req = urllib2.Request('http://www.dareyourmind.net/prog1.php') req.add_header('cookie','PHPSESSID=ee20pn4vmdh97melrb0mh6ei64') password = re.findall(": '(.*?)'",urllib2.urlopen(req).read())[0] print password req = urllib2.Request('http://www.dareyourmind.net/menu.php?page=programming1&checked='+pas..

hack this site Programming missions : String manipulation

This level is about string manipulation.In this challenge, you will be given a string. Take all the numbers from the string and classify them as composite numbers or prime numbers. You should assume all numbers are one digit, and neither number 1 nor number 0 counts. Find the sum of every composite number, then find the sum of every prime number. Multiply these sums together. Then, take the firs..

hack this site Programming missions : Reverse Ascii Shift

Generated String: 60/59/56/67/24/38/48/45/39/ Shift: -11 와 같은 형식으로 랜덤으로 string이 매번 생성되는데, 구분자가 매번 달라진다. 예시로는 /를 썼지만 $가 나올수도있고, "이나 .도 나오는걸 봐서 구분자도 랜덤이다. Shift한 string이 위의 만들어진 string이므로 Shift값을 뺀 연산의 결과값을 출력하면 된다. # -*- encoding: cp949 -*- import urllib2,re req = urllib2.Request('https://www.hackthissite.org/missions/prog/11/index.php') req.add_header('cookie','PHPSESSID=쿠키') req.add_header('ref..