치명적 파이썬 (Violent Python) – 0x01 Zip파일 크래커

치명적 파이썬 챕터 01에서는 첫번째 파이썬 프로그래밍 예제로 암호가 걸린 Zip 압축 파일 크래커를 소개하고 있다. 코드 자체가 복잡하지는 않으나 향후 파이썬 프로그래밍에 자주 활용될 수 있는 threading과 optparser 기능이 소개되므로, 이번 기회에 확실히 익혀두면 좋을 듯 하다. 이번 포스팅에서 다루게 되는 범위 : 치명적 파이썬 챕터 01 (~32Page)   전체 코드 소개 예제 파일은 아래 링크에서 다운로드 받을 수 있다. [Dictionary 파일] / [암호 적용된 Zip파일] [crayon-5b2bd18eecb00315530855/] 교재에서는 유닉스 패스워드 크래커 내용도 다루고 있으나, 이번 포스팅에서는 ZIP 파일 패스워드 크래커만 설명할 예정이다. 그럼 본격적으로 코드를 상세하게 살펴보도록 하자.   Import 영역 [crayon-5b2bd18eecb11795918668/] Zip파일 패스워드를 푸는데 필요한 라이브러리들을 Import 하는 부분이다. zipfile 라이브러리는 Zip으로 압축된 파일 객체를 생성할 수 있으며, Thread의 경우 쓰레드 기법을 통해 빠른 프로세스 처리를 도와준다. 마지막으로 optparse의 경우, 사용자 입력값을 파싱 처리한 후 미리 정의해둔 정의에 따라 해당 내용을 처리할 수 있게 해준다. 간단한 프로그램의 경우sys.argv[1]를 이용해서 Argument를 입력받는 방법도 있으나, 좀 더 유연한 프로그래밍을 위해서는 optparse를 적극적으로 활용하는 것이 좋겠다.   Extract_File 함수 영역 [crayon-5b2bd18eecb1a966340294/] 실제 압축 파일을 불러온 후 비밀번호를 대입하여 해제하는 영역이다. 함수 파라미터로 받은 zFile은 실제 압축 파일 객체를 가리키고 있으며, Password는 딕셔너리 파일에서 읽어들인 단어가 들어가게 될 것이다. try / Except 를 통해 예외 상황 (압축 비밀번호가 맞지 않을 경우) pass 하도록

Continue Reading

치명적 파이썬 (Violent Python) – 0x01 기초정리

치명적 파이썬(Violent Python) 스터디 한 자료를 정리해서 포스팅 할 예정이다. 일단 책 자체가 얇고 가벼운데다가, 필요한 핵심 내용들만 들어있어서 파이썬을 접해본 사람들에게 알맞은 교재라고 생각된다. 대부분의 코드는 2.x 버전 기준으로 작성될 예정이다. 이는 대부분의 Security 관련 라이브러리들이 2.x 버전에 더 최적화 되어 있기 때문이기도 하다. 이번 포스팅에서 다루게 되는 범위 : 치명적 파이썬 챕터 01 (~21Page)   변수 선언 C언어와는 달리 변수 선언해 있어서 타입을 별도로 지정할 필요가 없다. 이것만으로도 파이썬을 사용해야할 이유가 충분하다고 본다. [crayon-5b2bd18eee023900119393/]   문자열 처리 파이썬은 강력한 문자열 처리 라이브러리를 제공한다. 공식 홈페이지에 있는 정보 만으로도 충분히 활용법을 익힐 수 있다. 참고 자료 : https://docs.python.org/2/library/string.html?highlight=string# [crayon-5b2bd18eee031926812795/]   리스트 객체들을 배열로 저장할 수 있으며, 배열 구조이므로 당연히 인덱스를 통해 접근이 가능하다. 추가, 삽입, 제거, 인덱스화, 카운트, 정렬을 제공한다 (자체 메소드 제공) 참고 자료 : http://www.pythonforbeginners.com/lists/ [crayon-5b2bd18eee03a216116248/]   네트워크 (소켓 프로그래밍) 제공되는 Socket 모듈을 통해 네트워크 연결이 가능하다. 가장 많이 쓰이게 되는 모듈 중 하나가 될 것이다. 참고자료 : https://docs.python.org/2/library/socket.html?highlight=socket#socket 아래 예제는 간단하게 ftp 서버에 접속하여 배너 정보를 받아오는 코드이다. try, except 는 간단하게 예외처리를 할 수 있게 도와주므로, 자주 사용하도록 하자. [crayon-5b2bd18eee044021192262/]   함수(Function) def() 키워를 통해 함수를 만들 수 있으며, 코드 블록화를 통해 효율적인 프로그래밍이 가능하다. 함수 코딩은 다른 언어와 큰 차이가 없다. [crayon-5b2bd18eee04c255657271/]   반복문 동일한 행위를 여러번

Continue Reading

Site Footer

Sliding Sidebar

About Me

About Me

June Park