뉴비에욤

0x0 Python Tutorials - Getting Started pt2 본문

primalsecurity.net/Python Tutorials

0x0 Python Tutorials - Getting Started pt2

초보에욤 2015. 9. 7. 14:01

이전 포스팅에 이어 이번 튜토리얼에서도 파이썬의 기본적인 컨셉을 보여줄 것이다. 파이썬 코드를 함수,클래스,"sys" 모듈을 이용하여 작성할 것이다.

 

 

 

파이썬 기본(뼈대) 스크립트

 

아래 사진은 파이썬 스크립트를 실행시키는 기본적인 코드이다. 운영체제에게 "#!/usr/bin/python"을 이용하여 어떤 인터프리터를 사용할지 알려준다. 그 다음 "def main():"을 이용하여 main 함수를 정의한다. 그리고 마지막 2개의 라인은 "main()" 함수를 처음 실행하게 해주는 코드이다. 당신은 코드의 가독성과 수정을 용이하게 만들기 위해 스크립트 파일 내에 다른 함수를 추가적으로 정의할 수 있다.

 

 

 

 

 

 

함수

 

함수의 영향력을 높이는(잘 사용하기 위한) 일반적인 방법은 어떤 액션을 수행하고 결과를 리턴하는 코드를 사용하는 것이다. 아래의 사진은 이런 개념을 보여주는 의사 코드의 예제이다.

 

 

 

 

 

 

클래스

 

클래스를 사용하여 코드를 작성하는것은 약간 다른 개념이기 때문에 처음에는 어려울 수 있다. 만약 "정의/선언" 이라는 개념을 이해했다면 당신은 클래스를 데이터와 정의(선언)의 집합이라고 생각할 수 있다. 따라서 클래스는 이와 관련된 속성과 메소드를 가지게 된다. 클래스를 선언하면 나중에 클래스의 속성과 메소드를 상속받는 객체를 생성할 수 있는데 이를 "객체 지향 프로그래밍"이라 한다.

 

개념이 잘 잡히지 않는다면 아직 "클래스"를 사용하는 것은 그리 추천하고 싶지 않다. 왜냐하면 클래스를 사용하지 않아도 프로그래밍은 가능하다. 하지만 클래스를 사용하면 코딩을 조금 덜 할 수 있다. 아래의 사진에서 우리는 "class" 라는 키워드를 사용하여 "Domain" 클래스를 선언하였다.  클래스에서 사용되는 가변 메소드들은 "Domain" 타입의 객체들을 생성할 때 이용될 수 있다.

 

 

 

위 2개의 사진에서 볼 수 있듯이, "Domain" 타입의 객체를 생성하고 해당 클래스와 관련된 메소드를  실행할 수 있다. 다시한번 말하지만 클래스의 개념이 헷갈릴 수 있다. (특히 일반적인 프로그래밍 방법론과 파이썬의 개념을 이제 막 배운 상태라면)  위 사진의 코드에서 새로운 클래스를 선언하면서 클래스의 개념을 확실히 이해하길 바란다.

 

 

 

 

 

"sys" 모듈을 사용하여 CLI 인자 핸들링하기

 

이번 포스팅에서 마지막으로 사용하는 모듈은 "sys" 이다. 이 모듈은 주어진 CLI 인자를 스크립트 내의 변수에 저장할 수 있게 해준다. 해당 모듈의 문법은 간단한 편인데, "sys.argv[0]" 은 실제 스크립트 파일의 이름이고 그 다음부터 입력된 인자들은 순서대로 각각의 숫자에 대입 된다. 아래의 예제를 보도록 하자.

 

 

위 스크립트를 커맨드 라인에서 몇몇의 인자와 함께 실행하면 아래 사진과 같은 결과를 보여준다.

 

 

파이썬 코드를 좀 더 구체적으로 작성할수록 이런 모듈과 내장 함수는 큰 도움이 될것이다. 따라서 개념을 확실히 이해하길 바란다. 다음 포스팅은 기본적인 포트 스캐너를 이용하여 파이썬을 이용해서 네트워크 커넥션(연결)의 컨셉을 소개할것이다.

Comments