Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

martes, 7 de junio de 2016

Detectar si un puerto está abierto en un host específico.

El código original es de Mark Ribaul, yo sólo lo arreglé para testear un puerto específico (probado en Windows 7):


from socket import *
import sys

# http://serverfault.com/a/311580

if __name__ == "__main__":
    fTimeOutSec = 1
    sNetworkAddress = sys.argv[1].split(":")[0]
    aiPort = sys.argv[1].split(":")[1]

    setdefaulttimeout(fTimeOutSec)

    print ("Starting Scan...")
   
    s = socket(AF_INET, SOCK_STREAM)
    result = s.connect_ex((sNetworkAddress, int(aiPort)))

    if (result == 0):
        print ("OPEN: " + sNetworkAddress + ":" + aiPort)

    elif (10035 == result):
        print ("Timeout or inexistent host")
        pass
    else:
        print ("closed: " + sNetworkAddress + ":" + aiPort)

    s.close()

    print ("Scan Completed.")



He puesto el script en un archivo llamado "scan_port.py", y los argumentos que se le pasan son la ip y el puerto separados por dos punto, es decir, de la siguiente manera: "ip:puerto":


Aquí estoy probando con localhost, pero también funciona para ips remotas.