“Life is too short You need python”. Python 3 소스코드 아카이브.

Protect your PyMySQL Connection – SSL, SSH Tunneling

들어가며 파이썬에서 MySQL 을 사용할 일이 있었다면 한번쯤 들어봤을 만한 PyMySQL 패키지입니다. DictCursor 등 아주 쉽고 사용자 친화적인 기능을 제공해줍니다. 이 글은 PyMySQL 패키지를 사용함에 있어 평문통신이 영 마음에 걸리는 분들을 위해 암호화 통신을 하는 법에 대해 다룹니다. 잘못된 내용이 있다면 알려주세요. PyMySQL 의 기본 설정 PyMySQL 을 이용, 별도의 설정 없이 접속한다면, 기본적으로 암호화…

Running Python Script On Docker

Python Docker 메뉴얼 들어가며 내가 잠을 자는 동안에도 PC가 대신 일해주면 얼마나 좋을까요. 자동화는 향상된 삶의 질을 위해 꼭 필요한 부분입니다. 최근 진행중인 프로젝트에 다량의 최신 샘플이 필요한 일이 있었습니다. 정상/악성 모두 말이죠. 샘플의 필요갯수가 1000 단위가 넘다보니 이미 손으로 해결할 수 있는 영역을 벗어난 상태였습니다. 해결방안은 찾아보던 중 마침 VirusTotal Private API 가 있으니…

Python multiprocessing

멀티프로세싱을 이용하면 멀티코어 CPU 상에서 성능을 드라마틱하게 향상시킬 수 있습니다. CentOS 7.5 의 C로 작성한 프로세스에서 동작하는 퍼포먼스 크리티컬한 파이썬 스크립트를 작성중에 있는데, 멀티 프로세스 처리를 C 언어에서 할 지, 파이썬 에서 할 지 고민하다 작성하게 됐습니다. 이 글은 pyton 2.7 을 기준으로 작성했습니다. 먼저 아래 코드를 보겠습니다. def md5_million_times(msg): md5 = hashlib.md5() for i…

How to retrieve home directory path

리눅스와 윈도우의 폴더 구분자 파이썬은 플랫폼에 구애받지 않는 특성상 PATH 와 같은 OS 종속적인 요소를 표현할 때 주의해야 할 필요가 있습니다. 윈도우의 경우 폴더 구분자는 \ 이고 리눅스의 경우 / 를 사용하기에 더욱 그렇습니다. 그래서 보통, PATH 를 편집 할 일이 있을 때 filepath = mypath + ‘\\’ + ‘myfile.txt’ 나 filepath = mypath +…

QMessageBox 예제

요즘 python3 와 PyQt5 를 활용한 GUI 프로그래밍 할 일이 많이 있었습니다. GUI 프로그래밍은 레퍼런스를 잘 보고 복붙해서 하면 좋은데 PyQt5 는 적당한 예제를 찾기 힘든게 사실입니다. PyQt4 예제만 잔뜩 나오죠. 레퍼런스는 C++로만 제공되서 더욱 어렵게 느껴집니다. 이에 제가 자주 쓰는 예제코드들을 하나씩 올려두려 합니다. 누군가에겐 도움이 됐으면 좋겠습니다. QMessageBox 는 윈도우의 MessageBox 와 그…

OLE Parser

OLE 파일을 파싱행주는 파이썬 소스코드입니다. 언제나 그렇지만 직접 만든 소스코드를 공개하는건 정말 부끄럽기 짝이 없는 일입니다. 하지만 누군가에겐 도움이 되길 바라며 이 글을 남깁니다. 가독성을 위해 어떠한 예외처리나 검증로직도 들어가 있지 않아 실제 악성 문서파일 등에 사용하기엔 무리가 있습니다. 중간에 잘못된 부분 등 미처 제가 챙기지 못한 점에 대한 피드백은 언제나 환영합니다. import struct import…

GUID 변환 스크립트

메모리 덤프 등에서 긁은 GUID 값을 그대로 검색하면 byte ordering 에 의해 원하는 결과가 나오지 않습니다. 그렇다고 0x10 이나 되는 GUID 를 손으로 수정하기도 눈알 빠지는 일이고요. little endian으로 저장된 GUID 를 검색하기 쉽게 big endian으로 변환해주는 파이썬 스크립트 입니다. 실행하고 명령창에 메모리에서 복사한 값을 붙여 넣는 식으로 동작합니다. GUID 구조체를 선언해두고 구조체에 이쁘게 값을…

IP Opfuscate

IP 난독화 보안 연구원 Osanda Malith 가 작성한 IP주소 난독화 코드입니다. 원본은 여기 서 찾을 수 있습니다. 처음 이 코드를 접했을 때 이렇게도 접속이 되나? 싶었지만 네 실제로 되는군요. 기존에도 SOCK_ADDR 구조체를 직접 갖다 쓰는 악성코드는 정적으로 IP를 탐지할 방법이 없긴 했지만, 단순한 문자열임에도 IP로 인식된단 점에서 해커 입장에선 더 쓰기 편해진게 아닐까 합니다. C로…

Pythonic way to convert strings numbers to integers in a list

파이썬으로 프로그램을 짜다 보면 파이썬다운 방식으로 구문을 쓰는게 참 재밌게 느껴진다. 실재로 pythonic way 란 키워드가 많이 노출되기도 하고, 파이썬다운 방식들은 일반적인 프로그래밍 언어와 달리 매우 인간의 언어와 비슷한다. 오늘은 리스트 내에 문자와 숫자가 혼재할 때 한번에 쉽게 바꾸는 파이썬다운 방식이 없을까 검색하다 찾은 방법을 기억해두기 위해 기록해둔다. oldnumbers = [111, 222, 333, ‘444’, ‘555’]…