Skip to main content
  1. Scripts/
  2. Python/

Escaner de puertos

·295 words·2 mins· ·
Escaner Reconocimiento Port_scanner
Fouen
Author
Fouen
Soy un joven informatico interesado en la ciberseguridad
Table of Contents
Es un escaner de puertos muy sencillo

Código
#

import socket
import sys
from termcolor import colored


host = input("IP: ")

port_1 = int(input("\nPrimer puerto: "))
port_2 = int(input("\nÚltimo puerto: "))

def connection():

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(1)
    return s


def port_scanner(port):

    s = connection()

    try:
        s.connect((host, port))
        print(colored("\n> ", 'green') + "El puerto %d esta abierto" % (port))

    except socket.timeout:
        
        print(colored("\n< ", 'red') + "Se ha excedido el tiempo de espera")
        sys.exit()

    except ConnectionRefusedError:
        pass

    except socket.gaierror:
        print(colored("\n< ", 'red') + "La IP no es válida")
        sys.exit()

	except KeyboardInterrupt:
        sys.exit()
        
    s.close()

def ports():
    
    threads = []

    for port in range(port_1, port_2):
        
        port_scanner(port)

def main():

    ports()

if __name__ == '__main__': 

    main()

Cómo funciona?
#

1. Entrada de IP y rangos de puertos:
#

  • El usuario ingresa la dirección IP que desea escanear (host).
  • Luego, ingresa el rango de puertos que desea escanear, especificando el primer (port_1) y el último puerto (port_2).

2. Función connection():
#

  • connection() crea y configura un socket TCP (SOCK_STREAM) con un tiempo de espera (settimeout) de 1 segundo.
  • Retorna el objeto socket s.

3. Función port_scanner(port):
#

  • port_scanner(port) verifica la conexión al puerto específico port en la IP host.
  • Usa connection() para obtener un nuevo socket.
  • Intenta establecer una conexión (s.connect((host, port))).
  • Si hay un socket.timeout, indica que se ha superado el tiempo de espera para ese puerto y sale del programa con sys.exit().
  • Si hay un ConnectionRefusedError, significa que la conexión fue rechazada y pasa al siguiente puerto.
  • Si hay un socket.gaierror, indica que la IP no es válida y sale del programa con sys.exit().
  • Cierra el socket s al finalizar.

4. Función ports():
#

  • ports() itera a través de todos los puertos en el rango especificado (port_1 a port_2).
  • Para cada puerto, llama a port_scanner(port) para verificar la conexión.