Sobes.tech
Junior

Comment vérifier si un port est ouvert sur un hôte distant ou local ?

sobes.tech IA

Réponse de l'IA

Pour vérifier si un port est ouvert sur un hôte distant ou local, vous pouvez utiliser les méthodes suivantes :

  1. netcat (nc) : Outil universel pour travailler avec des connexions réseau.

    • Hôte local :
      nc -zv localhost <port>
      
    • Hôte distant :
      nc -zv <hôte_distant> <port>
      

    Les options -z (mode zéro-I/O) et -v (verbeux) sont utilisées pour scanner sans envoyer de données et pour afficher des informations détaillées.

  2. telnet : Protocole pour la gestion à distance, utilisable pour vérifier la connexion sur le port spécifié.

    • Hôte local :
      telnet localhost <port>
      
    • Hôte distant :
      telnet <hôte_distant> <port>
      

    Si la connexion s'établit (généralement une invite ou une ligne vide apparaît), le port est ouvert. Pour fermer, appuyez sur Ctrl+], puis tapez quit et appuyez sur Entrée.

  3. nmap : Analyseur de ports puissant. Nécessite une installation.

    • Hôte local :
      nmap -p <port> localhost
      
    • Hôte distant :
      nmap -p <port> <hôte_distant>
      

    La sortie indiquera l'état du port : open, closed ou filtered.

  4. < /dev/tcp ou < /dev/udp (dans Bash) : En Bash, on peut utiliser des descripteurs de fichiers pour créer des connexions TCP ou UDP.

    • Hôte local (TCP) :
      timeout 1 bash -c "cat < /dev/tcp/localhost/<port>" 2>/dev/null && echo "Port <port> est ouvert" || echo "Port <port> est fermé"
      
    • Hôte distant (TCP) :
      timeout 1 bash -c "cat < /dev/tcp/<hôte_distant>/<port>" 2>/dev/null && echo "Port <port> est ouvert" || echo "Port <port> est fermé"
      

    timeout est utilisé pour éviter le blocage si le port est fermé. 2>/dev/null masque les erreurs. Cette méthode ne fonctionne pas pour UDP.

  5. Python : Utilisation de sockets pour la vérification.

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Définir le délai d'attente
        try:
            s.connect((host, port))
            print(f"Le port {port} sur {host} est ouvert")
        except (socket.timeout, ConnectionRefusedError):
            print(f"Le port {port} sur {host} est fermé ou filtré")
        finally:
            s.close()
    
    # Exemple d'utilisation
    check_port("localhost", 80)       # Vérification de l'hôte local
    check_port("google.com", 443)  # Vérification de l'hôte distant
    

Le choix de la méthode dépend des outils disponibles, du système d'exploitation et de la nature de la tâche. netcat et nmap sont parmi les outils les plus flexibles et informatifs.