[python] 소켓 프로그래밍을 이용한 포트 스캐너 개발

인터넷 상의 다양한 네트워크 장비들은 포트라는 특정한 번호를 이용하여 통신을 합니다. 이때, 포트 스캐너(영어: port scanner)는 특정한 네트워크 장비의 여러 포트들 중에서 열려 있는 포트를 찾아내는 도구입니다.

이번 글에서는 파이썬을 사용하여 간단한 포트 스캐너를 개발하는 방법에 대해 알아보겠습니다.

소켓 프로그래밍 소개

소켓 프로그래밍은 네트워크 통신을 위한 일반적인 방법으로, 네트워크 통신을 위한 API를 제공합니다. 파이썬은 socket 모듈을 통해 소켓 프로그래밍을 지원합니다.

import socket

# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 호스트와 포트 연결
s.connect(("example.com", 80))

# 연결 닫기
s.close()

포트 스캐너 개발

이제 소켓 프로그래밍을 활용하여 간단한 포트 스캐너를 개발해보겠습니다.

import socket

target = 'example.com'

def port_scan(port):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(0.1)
        s.connect((target, port))
        print(f"Port {port} is open")
    except:
        pass
    finally:
        s.close()

for port in range(1, 1025):
    port_scan(port)

위의 코드는 example.com 호스트의 1번부터 1024번 포트까지 스캔하여 열려 있는 포트를 출력합니다.

소켓 프로그래밍을 이용하면 간단한 포트 스캐너를 개발할 수 있으며, 이를 통해 네트워크 보안 등 다양한 목적에 활용할 수 있습니다.

위 내용은 GeeksforGeeksReal Python에서 참고하여 작성되었습니다.