Files
scan_ip/scan_ip.py
Gilles Soulier 3fed441a5b
All checks were successful
continuous-integration/drone Build is passing
Augmentation du timeout et correction des tests
2025-01-04 12:54:08 +01:00

56 lines
1.9 KiB
Python

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}.")