본문 바로가기

Programming/Python Program

[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 4. Nmap Port Scan

이제 타겟 서버의 아이피 주소까지 얻었습니다. 이제부터는 nmap을 사용하여 타겟 서버의 포트 개방 여부를 확인하고, 어떤 프로세서가 러닝되고 있는지 확인하려고 합니다. 그러기 위해서는 'NMAP' 이 설치가 되어 있어야 합니다. 맥을 사용하시는 분들이라면 homebrew 를 설치하신 이후에 brew install nmap 을 하시면 설치하실수 있습니다. 물론 리눅스를 설치하고 계신분은 바로 인스톨 하시면 됩니다. 

NMAP 으로 확인하려고 하는 결과를 먼저보여 드리면 아래 그림과 같습니다.


앞에서 얻은 tistory.com 의 아이피 주소인 180.70.93.117 을 넣어보니 http 프로토콜의 포트번호인 80번과, https의 포트번호인 443만 개방되어 있는것을 확인하실 수 있습니다.


자 그럼 본격적으로 위와 같은 결과를 프로그래밍으로 구현하는 것을 시작해 보겠습니다.

1. os 를 임포트 해줍니다.

2. 함수를 정의 해 보겠습니다. get_nmap 이르는 함수는 첫번째 인자로 options, 두번째 인자로 ip 어드레스를 받습니다. 첫번째 인자인 옵션을 넣은 이유는 위의 터미널에서 '-F' 이 부분이 옵션인데, '-F' 는 패스트 옵션입니다. 즉 빠르게, 개략적인 정보만을 보여주게 됩니다. 보다 어그레시브하게 하려면 다른 옵션을 설정해 주어야 합니다. 이렇게 상황에 맞게 다른 옵션을 할당하기 위해 옵션 인자를 설정하였습니다.

3. command 에 nmap 명령어와 옵션, 그리고 스페이스 + IP를 할당해 줍니다.

4. 위의 command 를 실행해주기 위해 위와 같이 지정해 줍니다.

5. 위에서 지정된 프로세스를 읽어들인 후 스트링으로 컨버팅 해서 results에 넣어줍니다.

6. 이렇게 저장된 results 값을 리턴해 줍니다.

7. 자 여기까지 잘 되었는지 확인해 봐야겠죠? 프린트를 써서 위에서 만들어준 get_nmap 함수가 잘 작동하는지 확인해 보겠습니다.

8. 결과창에서 처럼 잘 나오네요. 수고 하셨습니다.


다음장에서 계속 이어가도록 하겠습니다. To be continued.....