본문 바로가기
Q&A2021년 3월 14일1분 읽기

파이썬으로 포트 스캐너 만들 수 있나요?

홍
홍재원
조회 888댓글 2

파이썬 초보인데 nmap 같은 간단한 포트 스캐너를 직접 만들어보고 싶습니다. 가능할까요?

댓글 2

김김영삼5년 전

파이썬 socket 모듈로 간단한 포트 스캐너를 만들 수 있습니다:

import socket
import threading

def scan_port(host, port):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
result = s.connect_ex((host, port))
if result == 0:
print(f"Port {port}: OPEN")
s.close()
except:
pass

host = "127.0.0.1"
for port in range(1, 1025):
t = threading.Thread(target=scan_port, args=(host, port))
t.start()

이건 학습용이고, 실제로는 nmap이 훨씬 빠르고 정확합니다. 하지만 직접 만들어보면 TCP 3-way handshake와 소켓 프로그래밍을 이해하는 데 큰 도움이 됩니다.

반드시 자기 소유 시스템에서만 테스트하세요.

변변서영(guest)5년 전
이 글 보고 바로 실습해봤는데 잘 되네요!
Ctrl+Enter로 등록