Crearea unui Scanner de Porturi în Python

Configurare noua (How To)

Situatie

Iată un tutorial pentru crearea unui script simplu de scanare a porturilor folosind Python și biblioteca socket:

Tutorial: Crearea unui Scanner de Porturi în Python

În acest tutorial, vom crea un script Python simplu care va scana porturile deschise pe un anumit host (adresă IP).

Pasul 1: Importarea Bibliotecilor Necesare

Vom folosi biblioteca “socket” pentru a deschide conexiuni către porturile de pe un anumit host și “threading” pentru a îmbunătăți performanța scannerului nostru.

import socket
import threading
from queue import Queue

Pasul 2: Definirea Funcțiilor de Scanare

Vom defini funcțiile care vor face scanarea propriu-zisă și vor raporta porturile deschise.

# Define the target host
target = ‘127.0.0.1’ # Change this to the IP address you want to scan

# Define the port range
port_range = (1, 1024)

# Queue to manage the port numbers
queue = Queue()

# List to store open ports
open_ports = []

def port_scan(port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((target, port))
if result == 0:
open_ports.append(port)
sock.close()
except socket.error:
pass

def threader():
while True:
worker = queue.get()
port_scan(worker)
queue.task_done()

Pasul 3: Crearea Funcției de Scanare

Vom crea funcția principală care va iniția scanarea porturilor pe host-ul țintă.

def start_scan():
# Starting the threading process
for _ in range(100):
thread = threading.Thread(target=threader)
thread.daemon = True
thread.start()

for port in range(port_range[0], port_range[1] + 1):
queue.put(port)

queue.join()

print(“Open ports:”, open_ports)

Pasul 4: Rularea Scriptului de Scanare

Apelați funcția “start_scan()” pentru a începe scanarea porturilor pe host-ul specificat.

if __name__ == “__main__”:
print(f”Scanning target: {target}”)
start_scan()

Pasul 5: Optimizarea și Extinderea Scannerului de Porturi

Extindeți funcționalitatea scannerului de porturi pentru a include opțiuni precum:

  • Specificarea host-ului și a intervalului de porturi din linia de comandă.
  • Afișarea numelui serviciului care rulează pe porturile deschise.
  • Salvarea rezultatelor într-un fișier de jurnal.

Iată un exemplu de cum să citiți host-ul și intervalul de porturi din linia de comandă:

import sys

if len(sys.argv) == 2:
target = sys.argv[1]
elif len(sys.argv) == 3:
target = sys.argv[1]
port_range = (int(sys.argv[2].split(‘-‘)[0]), int(sys.argv[2].split(‘-‘)[1]))
else:
print(“Usage: python port_scanner.py <target> [port_range]”)
sys.exit(1)

print(f”Scanning target: {target} in range: {port_range}”)
start_scan()

Acest script vă permite să verificați rapid porturile deschise pe un anumit host și poate fi extins pentru a include funcționalități avansate de scanare și raportare.

Solutie

Tip solutie

Permanent

Voteaza

(5 din 13 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?