2 votes

Le script Python de scan de ports s'arrête sans erreur sur le port 80

J'ai un script python qui scanne les ports. Je scanne un hôte qui a 2 ports ouverts (22 et 80). Lorsque mon script atteint le port 22, je reçois un message avec "Port ouvert + services en cours d'exécution". Ensuite, le script continue ... Lorsqu'il atteint le port 80, il reste bloqué. Je ne sais pas pourquoi, je n'ai pas d'erreur.

Est-ce que quelqu'un peut revoir mon code car je ne trouve pas le problème. Merci

    for port in range(1,82):
            s = socket.socket()
            result = s.connect_ex((ip, port))
            s.close()
            if result == 0:
                    s = socket.socket()
                    s.connect((ip, port))
                    data = str(s.recv(1024))
                    s.close()
                    print ("Port {}: Ouvert  --  ".format(port) + (data))
            else:
                    print ("Port {}: Fermé".format(port))

2voto

neildeadman Points 143

Il faut attendre que la connexion se termine quand l'hôte/port cible n'est pas ouvert. Parfois, un routeur ou un hôte renverra rapidement une connexion refusée, mais par défaut, la plupart des services sont configurés pour être "furtifs" et ne répondent en aucune façon.

Vous pouvez contourner ce problème en utilisant la fonction setTimeout en Python sur le socket :

s.setTimeout(1.0)

Il accepte un nombre de secondes, mais il peut s'agir d'un nombre à virgule flottante comme 0.5 pour 500ms.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X