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.
Leave A Comment?