Escáner de red en Python

Un escáner de red es una herramienta importante para analizar los hosts que están disponibles en la red. Un escáner de red es un escáner de IP que se utiliza para escanear las redes que están conectadas a varias computadoras.

Para obtener la lista de hosts disponibles en una red, existen dos métodos básicos:

  • Solicitud de eco ICMP

    También se conoce mediante el uso de ‘comando ping’. Un paquete ICMP se envía a un host usando la dirección IP y si se recibe el eco ICMP, eso significa que el host está en línea y está recibiendo las señales. Para esto, es necesario obtener todas las direcciones IP para las que desea probar si el host está conectado o no. Este método funciona asumiendo que los dispositivos de red tienen habilitado ICMP.

    import subprocess
      
    for ping in range(1,10):
        address = "127.0.0." + str(ping)
        res = subprocess.call(['ping', '-c', '3', address])
        if res == 0:
            print( "ping to", address, "OK")
        elif res == 2:
            print("no response from", address)
        else:
            print("ping to", address, "failed!")

    Producción:

    Este código itera sobre todas las direcciones IP disponibles, les hace ping y busca la respuesta. Si se recibe el eco, significa que el host está conectado y, en caso de que no se reciba ningún eco, parece que el host no funciona.
    Nota: Los cortafuegos personales o los cortafuegos generales a menudo se configuran en el llamado «modo sigiloso», que se usa para no reaccionar a las requests de eco ICMP.

  • Escaneo TCP

    Para superar los inconvenientes del método de solicitud de eco, se introduce el método de escaneo TCP que funciona con el método de reconocimiento de tres vías. Este método tiene la suposición previa de que los hosts en las redes son puertos abiertos y tenemos que adivinar qué puerto está abierto o no. Los puertos difieren en el sistema operativo en el que está utilizando. Diferentes sistemas operativos tienen puertos dependientes abiertos que se enumeran a continuación.

    • Linux: [20, 21, 22, 23, 25, 80, 111, 443, 445, 631, 993, 995]
    • ventanas: [135, 137, 138, 139, 445]
    • mac: [22, 445, 548, 631]

    Método de apretón de manos de 3 vías

    Un protocolo de enlace de tres vías es un método utilizado en una red TCP/IP para crear una conexión entre un host/cliente local y un servidor. Es un método de tres pasos que requiere que tanto el cliente como el servidor intercambien paquetes SYN y ACK (reconocimiento) antes de que comience la comunicación de datos real.
    Un protocolo de enlace de tres vías se utiliza principalmente para crear una conexión de socket TCP. Funciona cuando:

    • Un Node cliente envía un paquete de datos SYN a través de una red IP a un servidor en la misma red o en una externa. El objetivo de este paquete es preguntar/inferir si el servidor está abierto para nuevas conexiones.
    • El servidor de destino debe tener puertos abiertos que puedan aceptar e iniciar nuevas conexiones. Cuando el servidor recibe el paquete SYN del Node cliente, responde y devuelve un recibo de confirmación: el paquete ACK o el paquete SYN/ACK.
    • El Node cliente recibe el SYN/ACK del servidor y responde con un paquete ACK.

    Al finalizar este proceso, se crea la conexión y el host y el servidor pueden comunicarse.

    #importing socket module
    import socket
      
    #creates a new socket using the given address family.
    socket_obj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      
    #setting up the default timeout in seconds for new socket object
    socket.setdefaulttimeout(1)
      
    #returns 0 if connection succeeds else raises error
    result = socket_obj.connect_ex((addr,port)) #address and port in the tuple format
      
    #closes te object
    socket_obj.close()
  • Este artículo es una contribución de Rishabh Bansal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

    Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *