Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 운영체제
- PYTHON
- 컴퓨터네트워크
- Go
- S3
- 파이썬
- airflow.cfg
- 데이터 엔지니어링
- 데브코스
- dockerfile
- sql
- TIL
- 가상환경
- HADOOP
- 자료구조
- 데이터 파이프라인
- Django
- Docker
- redshift
- AWS
- 종류
- 컴퓨터 네트워크
- 데이터베이스
- linux
- TCP
- airflow
- 데이터 웨어하우스
- http
- 정리
- 데이터엔지니어링
Archives
- Today
- Total
홍카나의 공부방
[컴퓨터 네트워크] 6-1. 파이썬 포트 스캐닝(Port Scanning) 구현 본문
포트스캐닝(Port Scanning)이란
특정 시스템 혹은 네트워크에서 어떤 포트가 열린 채로 서비스를 진행하고 있는지 알아내는 과정이다.
포트별로 직접 접속하여 스캔하는 방식인
TCP Connect scan을 Python으로 구현해보자.
이는 대상 시스템에 로그 엔트리를 생성하기 때문에
가장 일반적인 포트 검색 유형이자 네트워크 침입에 사용되는 포트 검색 유형 중 하나다.
# do port scanning on localhost
import socket
def scan_ports(host, start_port, end_port):
open_ports = []
for port in range(start_port, end_port):
print(port)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.1)
result = sock.connect_ex((host, port))
if result == 0:
open_ports.append(port)
print(f'Port {port} is open')
sock.close()
return open_ports
scan_ports('127.0.0.1', 1, 65535)
socket module과 connect_ex() 메소드를 이용해서 대상 포트에 연결을 설정하였다.
연결이 성공하면, 포트가 열려 있고 포트 번호가 인쇄 된다.\
( 포트가 닫혀있는게 아닌 열려 있어야 특정 프로세스가 통신을 받을 준비를 하고 있다는 뜻이다. )
포트 스캔 시간을 변경하고 싶으면 sock.settimeout(0.1) 부분의 파라미터를 조정해주면 된다.
0~1023번의 포트는 well-known port로, IANA에서 각 포트 번호에 일반적으로 사용되는 서비스가
어떤 것인지 알아볼 수 있다. 예를 들어서 HTTP는 80번 포트, HTTPS 트래픽은 일반적으로 443번 포트를 통해 전송된다.
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
반응형
'Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] 7-1. IPv4 Datagram 구조, Fragment (0) | 2023.01.23 |
---|---|
[컴퓨터 네트워크] 6-2. Python의 psutil을 이용하여 열린 포트 찾기 (0) | 2023.01.11 |
[컴퓨터 네트워크] 5-4. 사설망과 스머프 공격 (0) | 2023.01.11 |
[컴퓨터 네트워크] 5-3. Special Address와 DHCP 응답/요청 (2) | 2023.01.09 |
[컴퓨터 네트워크] 5-2. Classless addressing (0) | 2023.01.03 |