본문 바로가기

Programming/Python Program

WIFI 비밀번호 알아내기 with python | Cracking WIFI PASSWORD with brute force on python Wifi를 크래킹 하는 도구들은 상당히 많다. 그러나 대부분 유닉스(또는 리눅스) 명령어를 충분히 숙지하여야 이해하는데 무리가 없을 것이다. 이번에는 아주~ 간단(?)히 파이썬을 이용하여 WIFI(무선인터넷) 패스워드를 찾아보려고 한다. 단순 무식한 방법인 brute force 를 이용해서 말이다. brute force는 쉽게 말하면 단순하게 모든 패스워드를 입력해보고 아니면 다음 패스워드, 그래도 아니면 또 다른 패스워드....... 이렇게 일련의 패스워드들을 프로그램이 자동으로 하나씩 대입하여 찾아내는 방법이라고 보면 된다. 각설하고 아래는 저의 컴퓨터 환경(맥을 사용합니다)에서 주변(카페)에서 찾을 수 있는 무선 인터넷을 찾고, 패스워드를 brute force해 보도록 하겠습니다.위는 전체코드이며 .. 더보기
Zip 파일 비밀번호 알아내기 by brute force on python | Unlock Password Protected Zip file using python 간단한 brute force python code 를 만들어 보려고 한다. 압축파일로 흔히 쓰이는 Zip file 형태가 비밀번호로 보호가 되고 있는데 비번을 잊어버렸을 경우 어떻게 할까? 머리를 쥐어 짜서 비번이 생각나기를 학수고대 할 수밖에 없을까? 이럴때 유용하게 심플한 코드를 만들어 해결을 할 수 있다. 아래는 단순한 파이썬 코드이다. 개략적으로 설명을 하자면, 딕셔너리(일반적으로 수 많은 단어들이 들어 있는 파일)파일을 가지고 있다면 그것을 이용하여 zip파일을 컴퓨터가 하나씩 열쇠구멍에 넣어 돌려보게 하는 것이다. 흔히 크래커들은 일반적으로 많이 사용되는 혹은 빈도수가 높고 비밀번호로 유용한 단어들의 리스트를 가지고 프로그램을 돌려 빠른 시간내에 해당 시스템의 비밀번호를 알아낼 수 있다. 여기.. 더보기
파이썬으로 코스피200 종목코드, 회사명 가져오기 | get kospi200 data using python 주식 관련 문의를 주시는 분들이 몇 분 계셔서 간단히 KOSPI200 의 종목코드와 회사명을 네이버에서 가지고 오는 코드를 소개해 보고자 합니다.아래는 포털 사이트 네이버의 증권 섹션입니다. 코스피200 의 데이터를 가지고 오기 위해 관련 정보를 알아야 하기에, 왼쪽의 코스피200 이라고 명기된 부분을 클릭하면 아래와 같은 화면이 나옵니다. 여기에서 아래 그림처럼 된 부분만 따로 확인하기 위해서 이 부분의 주소만을 웹브라우저 주소창에 넣어주면 코스피200 회사들의 당일 주가 데이터들만 나타나게 됩니다. 해당 주소는 http://finance.naver.com/sise/entryJongmok.nhn?&page=1 입니다. 이제 여기서 html 코드를 확인하기 위해 각각의 웹브라우저마다 이름이 다른 속성, .. 더보기
실시간 내 주가를 알려주는 Python Code 이번에는 실시간 주식 데이터를 가져와서 시시각각 동향을 출력하게 하려고 한다. 그 후에는 내가 보유한 종목의 주가 흐름을 계속 추적하고, 더 나아가 컴퓨터가 보유종목의 주가를 계속 오디오로 알려주게 하는데까지 알아보려고 한다. 포털사이트 다음의 증권에 올라오는 종목 시세를 참고하였다. 옛날 같으면 포털사이트에서 제공하는 주가는 20분 지연 시세를 제공하여 효용성이 많이 떨어졌던게 사실이다. 그러나 이제는 실시간 시세를 제공하고 있으므로, 증권사에서 제공하는 데이터 못지않게 빠르고 정확하다. 그래서 다음 사이트의 데이터를 가지고 와서 뚝딱뚝딱 기름칠해서 내가 필요로 하는 정보만을 추출하였다. 아래는 그 코드이다. import urllib.request, time, os, re, csv, sys def fe.. 더보기
왜 파이썬에서 멀티 프로세스를 사용하는가? | Why do we use multiprocess in python? 파이썬에서 멀티 쓰레드(Multi Thread)와 멀티 프로세스(Multi Process)를 사용하는 경우가 종종 있다. 그런데 왜 이런 모듈을 사용할까? 이유는 간단하다. 동일한 작업과정을 단시간에 효율적으로 처리하기 위해서다. 아래는 주식 분석 코드의 일부분만을 발췌해 보았다. Stock() 이라는 클래스를 정의하고 그 처리하는 과정과 처리하는데 소요된 시간을 표기하였다. 코스피, 코스닥 종목이 현 시점에서 도합 2,000 여 종목이 된다. 이를 하나씩 읽어들여 DB에 저장된 값으로 분석을 할 수도 있고, 인터넷이 연결되어 있다면 바로 주식 데이터를 다운받아 처리할 수도 있다. 이 중 하나의 방식으로 전 상장종목을 처리해 보았다. 대략 3822초가 소요되었다. 그러니까 1시간하고 약 4분 정도 걸린셈.. 더보기
주식 정보 데이터베이스(db) 구축하기 by using python | storing stock data into database(DB) by using python 몇 년 전부터 db에 저장된 데이터를 이용해서 종목 발굴 알고리즘을 돌려놓고 있으며, 이를 이용해 특이점이 발견된 종목은 바로바로 문자 or email 등을 통해서 알려주고 관련 데이터를 저장하게 하는 시스템을 구축해 놓은 상황이다. 관련해서 문의 글이나 메일 혹은 문자를 통해 방법을 문의하는 글이 있어 개략적이나마 기본 개념을 작성해 두려고 한다. 우선 파이썬을 이용해서 주식 데이터를 데이터베이스(db)에 저장하는 작업을 하려고 한다. 이를 위해 기본 개념 몇몇을 알고 있어야 하지만, 관심이 있으신 분들은 관련 정보를 공부해 보시길 바란다. 가장 먼저 파이썬이라는 프로그램의 기본 개념을 익혀야 할 것이다. 그런 다음 관련 모듈을 설치, 기본 문법등을 차근차근 학습하면 될 것이다. 아래 코드는 완전한 코.. 더보기
파이썬을 이용한 구글 이미지 다운로더 만들기 | Making Image Downloader from google image by using Python 글을 쓰거나, 이미지 작업을 필요로 할 때, 인터넷 상에서 많은 이미지들을 검색 및 다운, 활용하는 사례가 많을 수 있다. 그럴 때마다 인터넷에 접속해서 관련 이미지를 찾아서 다운받고 활용하는게 상당히 번잡스럽게 느껴지곤 한다. 이를 위해 누군가 관련 이미지들을 폴더에 다운받아 놓아주었으면 할 때가 있는데, 걱정마시라(?) 우리에게는 프로그래밍 언어가 있다. 이번에는 파이썬으로 내가 필요로 하는 이미지를 하나의 폴더에 좌~악 받아주게 해 보려고 한다. 언제나 그렇듯, 이걸 왜 만들어 할 때가 있는데, 같은 작업을 계속 반복적으로 하는 것 보다, 단순 반복작업은 그냥 컴퓨터가 알아서 하게 만들어두면 얼마나 편하겠는가. 우리는 호모 사피엔스이다. 구석기 시대의 유물인 노가다 작업(?)은 그만 두시라. 처음부.. 더보기
find files and folders recursively in Python Using glob and iglob. Python 3.5+ Starting with Python version 3.5, the glob module supports the "**" directive (which is parsed only if you pass recursive flag):import glob for filename in glob.iglob('src/**/*.c', recursive=True): print(filename)If you need an list, just use glob.glob instead of glob.iglob. Python 2.2 to 3.4 For older Python versions, starting with Python 2.2, use os.walk to recursively walk a direc.. 더보기
PyQt installation with python3 on Mac OS X by using HOMEBREW You can install it with homebrew using the --with-python3 flag:unset PYTHONPATH brew install sip --with-python3 brew install pyqt --with-python3And relink the site packages if necessary. 더보기
[Folder Action] - 이미지에 나의 서명(signature) 만들어 넣기 with python program - 3 이전 시간에 만든 여러장의 이미지에 사인(서명)을 넣는 코딩을 활용해서 이번시간에는 특정 폴더에 대상 파일들을 떨구면, 자동으로 서명된 이미지 파일들을 돌려주게하는 폴더액션(맥의 오토메이터 활용)을 만들어 보도록 하겠습니다. 우선 터미널을 띄워주고 shell script 를 하나 만들어 주려고 합니다. 아래와 같이 make_multiple_signature.sh 라는 이름을 가지는 bash 스크립트를 만들도록 하겠습니다.▼ 파이썬이 있는 경로를 앞에 적습니다. 저는 현재 파이썬 배포판 중의 하나인 아나콘다를 사용하고 있습니다. 그래서 앞 부분에 아나콘다의 파이썬 경로인 '~/anaconda/bin/python' 을 넣어줍니다. 뒤에는 이전 시간에 만들어 둔 파이썬 파일의 경로를 넣어 줍니다. 파인더에서 .. 더보기
이미지에 나의 서명(signature) 만들어 넣기 with python program - 2 from PIL import Image, ImageDraw, ImageFont import os, glob target_image = Image.open('/Users/SH/Desktop/Signature/python_logo.png') fontsFolder = '/Library/Fonts/' selectedFont = ImageFont.truetype(os.path.join(fontsFolder,'Zapfino.ttf'),15) draw = ImageDraw.Draw(target_image) draw.text((200,150), 'Creative Works for jason', fill='white', font=selectedFont) target_image.save('/Users/SH/Desktop/.. 더보기
이미지에 나의 서명(signature) 만들어 넣기 with python program - 1 안녕하세요. 이번에는 파이썬 프로그래밍을 이용해 이미지(사진)에 나만의 서명(signature)를 만들어 넣어 보겠습니다. 단순하게 하나의 이미지에 넣어 보는 방법을 알아보고, 추후에 특정 폴더내에 있는 모든 이미지에 넣는 방법을 알아보겠습니다. 그런 연후에는 폴더에 떨구기만 하면 서명이 된 이미지들을 뱉어내게 하는 자동화 스크립트도 만들어 보겠습니다. 그럼 시작하겠습니다. 우선 아래와 같은 파이썬 로고 이미지가 있습니다. 여기에 제 블로그 이름인 'creative works for jason' 이라는 글을 넣어 보겠습니다. 글이 아니라 이미지도 넣을 수 있지만, 여기서는 다루지 않겠습니다.▼ 이미지를 다룰 예정이므로, 관련 모듈들을 불러옵니다. ImageDraw 는 그림에 글을 써 넣을때 사용하는 모듈.. 더보기
[PYTHON] 간단히 이미지(사진)들 합치기 by using python - Merge images by using python program. 안녕하세요. 이번에는 여러장의 이미지(사진)들을 하나의 파일로 병합(합치기)하는 과정을 파이썬을 이용해서 코딩해 보겠습니다.주로 이미지를 다룰때는 이미지 관련 툴(가령 포토샵)들을 많이 사용을 합니다. 그러나 이런 툴들을 다루더라도 여러장의 파일들을 열고 사이즈에 맞게 붙이고 크기 조절하고 저장하고 일련의 과정들을 거쳐야합니다. 다소 번거로울 수도 있는 이런 일들을 프로그램으로 간단히 처리하게 하려고 합니다. 물론 디테일한 프로세싱은 상기의 툴을 이용하는게 나을수도 있습니다. 그래서 여기서는 단순하게 몇장의 이미지들을 같은 규격의 사이즈로 크기 조절 후 가로형태로 나란히 붙여주게끔만 하겠습니다. 이를 잘 숙지하고 응용을 한다면, 여느 프로그램 못지않은 나만의 툴을 구현할 수 있을 것입니다. 각설하고 시작.. 더보기
[PYTHON] 파일 찾아 활용하기 using python glob 파이썬을 이용해서 특정 디렉토리(폴더)에 있는 파일을 이용할 경우가 잦은데, 이 때 유용하게 사용할 수 있는 명령어가 바로 glob 이다. glob 명령어를 이용해서 폴더 내에 있는 모든 파일들을 찾아 파일명을 나열하였다. 추후 이를 이용한 실용 예제를 다뤄보도록 하자.▼ 더보기
GTK VS Qt in Python Development Frameworks. GTK vs QtGTK+ and Qt are open-source cross-platform User Interface toolkits and development frameworks. These are the two most popular frameworks in use for GNU/Linux and BSD because they are open-source and give developers a powerful toolkit to design Graphical User Interfaces. GTK+ is used as the standard toolkit for the GNOME and Xfce Desktop Environments while Qt is used for KDE Plasma and L.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 7. 완결편 이번 시간에는 그동안 만들어 둔 함수들을 가지고 종합적으로 다루어 보도록 하겠습니다. 1편 소개편에서 말씀드린것 처럼 이것을 가지고 자신에게 보다 더 유용한 방향으로 수정, 편집해서 사용하시면 도움이 되리라 봅니다. 그럼 시작해보겠습니다. 1. 가장 처음 만들어 둔 main.py로 이동을 합니다. 여기에서 위와 같이 앞에서 만든 함수들을 불러옵니다. 2. ROOT_DIR 를 'sites' 라는 이름으로 지정을 해주었습니다. 향후 이 'sites' 폴더 밑에 각 사이트의 정보가 쌓이게 될 것입니다. 3. ROOT_DIR을 만들어 줄 것입니다. 아직 create_dir 함수를 정의하지 않았는데, 이는 아래에서 다룰 예정입니다. 4. 이제까지 만든 함수들을 종합적으로 다룰 함수 'gather_info'를 정의.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 6. whois 이제 거의 짧은 여정이 끝이 나갑니다. 이번 시간에는 'whois' 를 파이썬으로 구현해 보겠습니다. 1. whois.py 파일을 만들어 줍니다. 2. 여느때와 마찬가지로 os 를 임포트 해 줍니다. 3. whois 를 얻기 위한 함수를 정의해 줍니다. 4. 명령어에 "whois " + url 이 들어갈수 있도록 변수를 지정합니다. 한가지 주의할 점은 whois 뒤에 공백(스페이스)을 넣어 주어야 합니다. 아니면 whois 와 조사할 타겟 사이트가 붙어버려 명령이 수행 안되니까요. 5. 그렇게 지정한 명령어를 프로세스로 지정. 7. 지정된 프로세서를 result 에 넘겨주면서 string 로 컨버팅해줍니다. 8. 이렇게 컨버팅 된 result 를 리턴하면 끝입니다. 9. 이제 확인! 아래와 같이 프린트를.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 5. robots.txt 이번 시간에는 robots.txt 에 대해 알아보려고 합니다. robots.txt 파일이 어떤 역할을 하냐면, 웹을 만들때 구글이나, 야후, 네이버, 다음과 같은 검색엔진에서 크롤링(사이트를 프로그램으로 자동 저장하는것)을 하는데 이때 민감한 페이지나 관리자 페이지 같은것은 크롤링 하지 못하게 텍스트 파일 형태로 작성해 둔 것입니다. 보다 자세한 사항은 Robots.txt 링크를 참조하시면 이해하실 수 있을것 입니다. 자 그럼 시작해 보겠습니다. 1. 우선 robots_txt.py 파일을 만들어 주고 import urllib.request 를 작성해 줍니다. urllib 와 request 는 웹과 관련된 파이썬 모듈입니다. 2. io 또한 임포트 해줍니다. 3. get_robots_txt 함수를 정의하고.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 4. Nmap Port Scan 이제 타겟 서버의 아이피 주소까지 얻었습니다. 이제부터는 nmap을 사용하여 타겟 서버의 포트 개방 여부를 확인하고, 어떤 프로세서가 러닝되고 있는지 확인하려고 합니다. 그러기 위해서는 'NMAP' 이 설치가 되어 있어야 합니다. 맥을 사용하시는 분들이라면 homebrew 를 설치하신 이후에 brew install nmap 을 하시면 설치하실수 있습니다. 물론 리눅스를 설치하고 계신분은 바로 인스톨 하시면 됩니다. NMAP 으로 확인하려고 하는 결과를 먼저보여 드리면 아래 그림과 같습니다. 앞에서 얻은 tistory.com 의 아이피 주소인 180.70.93.117 을 넣어보니 http 프로토콜의 포트번호인 80번과, https의 포트번호인 443만 개방되어 있는것을 확인하실 수 있습니다. 자 그럼 본격.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 3. IP Address 2편에서 tld(Top Level Domain)을 얻었습니다. 이제는 스캐닝을 할 웹사이트의 ip address 를 얻을 필요가 있습니다. 위와 같이 티스토리의 아이피는 180.70.93.117 이네요. 그렇지만 우리가 원하는 정보는 이 IPv4에 해당하는 숫자만 필요합니다. 즉, 프로그램적으로 앞부분의 'history.com has address ' 이 부분을 날려버리면 됩니다. 혹은 뒷 부부만 선택적으로 받아들이게 하면 됩니다. 1. 아이피를 얻기위해 위와같이 파일을 만들어 줍니다. 2. 위의 터미널에서 보여진대로 특정 정보만 취사선택 하기위해 이번에도 os 를 임포트 해줍니다. 3. 아이피 정보를 얻기 위한 함수를 선언. 4. 위의 터미널에서의 명령을 파이썬으로 프로그램적으로 구동 시키기 위한 방법.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 2 최상위 레벨 도메인 이름 Top level of Domain 은 가령. 티스토리 같은경우 http://www.tistory.com 이렇게 URL 이 있다고 하면 여기에서는 history.com 이 부분이 top level of domain 에 해당한다. 즉, 프로토콜(http), WWW 은 제외단되는 말이다. 터미널창에서 보다 자세히 확인해 보자. 위와 같이 터미널에서 프로토콜, www을 함께 넣으면 whois 명령어가 인식을 못하니 제대로 넣으라고한다. 그럼 아래처럼 하면 어떻까? 티스토리의 정보가 쫘~~악 뜬다. 음..과금 담당자의 연락처라든지.... ㅎㅎ 자 그럼 이러한 정보를 smooth하게 한방(?)에 해결하기 위해 시작해보자. 1. domain_name.py 파일을 만들어 주고 from tld import get_tl.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 1. 소개 파이썬을 이용해 간략한 웹사이트 스캐너를 만드는 과정을 소개하려 한다. 프로그래밍을 공부하는 분들에게 조금이나마 도움이 되었으면 하는 바람으로 이 글을 작성합니다. 금일 기준(2015년 10월 30일) 정말 개략적인 소개입니다. 여기에 아이디어를 덧붙여 본인에게 맞는 프로그램을 작성해 보시면 유용하리라 생각합니다. 자 그럼 시작해 보겠습니다. 우선. 이글은 파이썬이 어떤것이며, 본인의 컴퓨터에 깔려 있다는 전제하에 진행됩니다. 추후 기초적인 것부터 소개하는 글을 따로 올리겠지만, 현 시점에서는 건너띄고 진행하겠습니다. 또한, 베이스 OS 는 리눅스이면 금상첨화일 것입니다. 저는 맥에서 'Homebrew'를 이용해 리눅스 명령어를 설치해 사용하고 있습니다. 그리고 아래 IDE 툴은 Pycharm 이라고 불.. 더보기