뉴비에욤
0x0 Python Tutorials - Getting Started pt1 본문
0x0 Python Tutorials - Getting Started pt1
초보에욤 2015. 9. 7. 01:58이번 포스팅은 파이썬과 프로그래밍을 처음 접하는 사람을 위한 "primalsecurity.net - Python tutorial" 시리즈의 첫 번째 글이다.파이썬은 수많은 정보 보호 커뮤니티에서 지원하는 매우 강력한 스크립트 언어이다. 여기서 "지원"이라고 하는 것은 많은 프로그램들이 파이썬으로 코딩 된다는 것과 파이썬 스크립트에서 많은 모듈을 지원한다는 것을 의미한다. 모듈은 특정 작업을 몇 라인 안되는 코드로 짤 수 있도록 다양한 기능을 제공한다.
이번 포스팅은 파이썬 2.x 버전과 리눅스를 사용한다는 가정하에 작성되었다. 파이썬 코드를 작성할 때에는 "파이썬 인터프리터"를 통해 직접 작성할 수도 있고 파일 안에 코드를 작성하여 실행할 수 있다. 대부분의 경우 코드를 직접 인터프리터에 작성하고 파일로 저장하기 전에 문법과 로직 등을 체크하는 것이 수월하다. 단 주의할점은 파이썬은 함수를 정의하거나, 루프, if/else 등을 사용할 때 들여쓰기를 사용하는 것이다. 해당 들여쓰기는 반드시 공백이나 탭으로 구분되어야 하며 한 파일 내에서 하나의 구분자(공백만 사용하거나 탭만 사용)만 사용되어야 한다.
파이썬 인터프리터
터미널에 "python"을 입력해보자.
이제 당신은 파이썬 인터프리터에 직접 코드를 작성할 수 있게 되었다. 아래 사진은 2개의 변수를 선언하고, "type()" 함수를 이용하여 문자열 변수를 생성했는지 정수형 변수를 생성했는지 알아내는 사진이다.
파이썬에 내장된 help() 변수를 이용하여 특정 함수에 대한 도움말을 얻을 수 있다. 파이썬을 좀 더 알아가기 이전에 "help()" 함수를 기억하길 바란다.
* 명령어 실행 결과가 너무 많아서 캡쳐하지 않았다. 반드시 본인의 인터프리터에서 입력해 보길 바란다.
종종 당신은 스크립트에서 무언가를 출력하기 위해 여러 변수들을 붙이고(연결) 하고 싶을 것이다. 이를 위해 정수형 변수를 "str()" 함수를 이용해 문자열 변수로 변환할 필요가 있다.
"IP" 변수는 이미 문자열로 선언되었기 때문에 "port" 변수처럼 캐스팅할 필요가 없다. 지금까지 당신은 기본적인 2가지 데이터 타입(문자열, 정수)을 보았다. 이제 당신은 각 데이터 타입에 따라 어떤 내장 함수가 존재하는지 알아낼 수 있다.
파이썬에서 문자열 변수는 특정한 오프셋을 명확히 정의할 수 있으며 주어진 문자열 변수를 "len()" 함수를 이용하여 길이를 체크할 수 있다. 이런것들은 문자열 변수를 좀 더 심화적으로 사용할 때 큰 도움이 될 수 있다.
문자열 변수에서 어떤 내장 함수를 사용할 수 있는지 보기 위해 "dir()" 함수를 사용할 수 있다.
이제 문자열 변수에서 제공하는 내장 함수를 다를 줄 알게 되었을 것이다. 주어진 함수에 대해 더 알아보기 위해서는 "help()" 함수를 사용할 수 있다.
* help(ip.split) 함수는 문자열 변수인 "ip" 변수에서 제공하는 "split" 내장 함수에 대한 설명을 보여준다.
"split()" 함수는 ':' 구분자를 기준으로 문자열을 리스트라는 데이터 타입으로 변환한다. 이는 문자열 내에서 특정 포지션을 추출할 때 사용할 수 있는 아주 유용한 문자열 함수이다. 예를 들어 리스트에서 그냥 ip 주소값을 추출하고자 한다면 리스트에서 해당 값의 인덱스를 사용하여 해당 값을 지정할 수 있다. 리스트에서는 "append()" 함수와 "remove()" 함수를 이용하여 아이템을 추가하거나 삭제할 수 있다.
파이썬 모듈
이전에 말했듯이 파이썬 모듈은 몇 줄 안되는 코드로 주어진 작업을 끝내기 위해 사용할 수 있는 기능이다. 파이썬은 매우 유용한 내장 모듈 (os,subprocess,socket,urllib,httplib,re,sys 등)을 기본적으로 제공하고 심지어 써드파티(3rd-party) 모듈 (cymruwhois,scapy,dpkt,spider 등) 역시 제공한다. 파이썬 모듈을 사용하기 위해서는 간단하게 "import 모듈_이름"을 입력하면 된다. "os" 모듈은 파이썬 코드에서 시스템 명령어를 실행시킬 수 있기 때문에 매우 유용한 모듈이다.
위 사진에서 볼수 있듯이 "os" 모듈은 꽤 많은 기능을 제공한다. 내가 자주 사용하는 기능은 입력한 명령어를 기본적으로 운영체제에서 실행시켜주는 "os.system" 이다. 아래의 예제에서는 "echo 'UHJpbWFsIFNlY3VyaXR5Cg==' | base64 -d" 명령어를 실행한 것이다.
파일 객체 생성
이제 파이썬에서 파일로부터 데이터를 읽고 쓰는 법을 보여줄 것이다. 아래쪽의 사진은 파일 객체를 생성하고, 해당 객체를 이용해서 데이터를 읽고 쓰는 것을 보여 준다. 파이썬을 사용하다 보면 종종 당신은 파일로부터 데이터를 읽고 어떤 연산을 수행한 뒤 해당 결과를 다시 파일로 작성할 것이다.
파이썬 인터프리터에서 이런 컨셉의 예제를 완벽하게 익히는 연습을 하길 바란다. 왜냐하면 이후 작성할 튜토리얼에서는 좀 더 복잡한 예제를 사용하는데 해당 예제에서 이런 기능을 사용할 것이기 때문이다. 파이썬 코드를 작성할 때 나는 2개의 독립된 터미널을 이용하는 것을 좋아한다. 하나는 코드를 작성할 때 사용하고 다른 하나는 작성된 스크립트를 테스트할 때 사용한다. 다음 튜토리얼에서는 클래스 그리고 "sys" 모듈을 이용하여 실제로 파이썬 스크립트를 코딩할 것이다.
'primalsecurity.net > Python Tutorials' 카테고리의 다른 글
0x4 Python Tutorials - Python to EXE (0) | 2015.09.08 |
---|---|
0x3 Python Tutorials - Fuzzer (0) | 2015.09.08 |
0x2 Python Tutorials - Reverse Shell (2) | 2015.09.07 |
0x1 Python Tutorials - Port Scanner (0) | 2015.09.07 |
0x0 Python Tutorials - Getting Started pt2 (0) | 2015.09.07 |