import socket import ipaddress import sys import time # Fonction pour tester si un port est ouvert sur une IP donnée def check_port(ip, port): try: # Créer une connexion à l'IP et au port spécifié with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.settimeout(0.30) # Timeout après 1 seconde result = s.connect_ex((str(ip), port)) # connect_ex retourne 0 si connecté return result == 0 # Si la connexion est réussie, le port est ouvert except socket.error: return False # Fonction principale pour scanner la plage d'IP et vérifier le port def scan_ip_range(ip_range, port): open_ips = [] count = 0 # Compteur d'IP avec le port ouvert # Générer toutes les adresses IP de la plage network = ipaddress.IPv4Network(ip_range) for ip in network.hosts(): # Afficher l'IP en cours d'analyse sur une seule ligne sys.stdout.write(f"Analyse de l'IP {ip}...\r") sys.stdout.flush() # Forcer l'affichage immédiat if check_port(ip, port): print(f"Port {port} ouvert sur {ip}") open_ips.append(str(ip)) count += 1 # Incrémenter le compteur si le port est ouvert else: pass # Rien à afficher si le port est fermé # Petit délai pour éviter une surcharge de mise à jour de la ligne time.sleep(0.02) return open_ips, count # Paramètres de l'application ip_range = '10.0.0.0/22' # Plage d'IP à scanner port = 80 # Port à vérifier # Lancer le scan open_ips, total_open = scan_ip_range(ip_range, port) # Afficher les résultats if open_ips: print(f"\nLes IPs avec le port {port} ouvert sont :") for ip in open_ips: print(ip) print(f"\nTotal des IPs avec le port {port} ouvert : {total_open}") else: print(f"\nAucune IP avec le port {port} ouvert dans la plage {ip_range}.")