Escáner de puertos simple usando sockets en Python

Prerrequisitos: Programación de sockets en Python

Antes de pasar a la programación, hablemos de los puertos. En este artículo, revisaremos los puertos virtuales de un servidor o sitios web, o localhost. Cada puerto tiene un número único. Hay 65.535 puertos disponibles en un host a partir de 0. Podemos asignar los puertos para cualquier servicio.

Ejemplo 1: en este programa, puede escanear una cantidad de puertos en un cierto rango.

Python3

# Here we import two modules, socket and time
 
import socket
import time
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
# here we asking for the target website
# or host
target = input('What you want to scan?: ')
 
# next line gives us the ip address
# of the target
target_ip = socket.gethostbyname(target)
print('Starting scan on host:', target_ip)
 
# function for scanning ports
 
 
def port_scan(port):
    try:
        s.connect((target_ip, port))
        return True
    except:
        return False
 
 
start = time.time()
 
# here we are scanning port 0 to 4
for port in range(5):
    if port_scan(port):
        print(f'port {port} is open')
    else:
        print(f'port {port} is closed')
 
end = time.time()
print(f'Time taken {end-start:.2f} seconds')

Producción: 
 

What you want to scan?: localhost
Starting scan on host: 127.0.0.1
port 0 is closed
port 1 is closed
port 2 is closed
port 3 is closed
port 4 is closed
Time taken 8.12 seconds

Nota: puede cambiar el rango en el bucle for para cambiar la cantidad de puertos que se escanearán. Para escanear un sitio web o un host, puede llevar cierto tiempo, así que tenga paciencia.

Ejemplo 2: si desea escanear un puerto en particular, elija esta solución.

Python3

# importing the sockets module
import socket
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
target = input('What you want to scan?: ')
 
# getting the ip address using gethostbyname
# function
t_IP = socket.gethostbyname(target)
print("Starting scan on host: ", t_IP)
 
 
def port_scan(port):
    try:
        s.connect((t_IP, port))
        return True
    except:
        return False
 
 
port = int(input("Enter the port number to be scanned: "))
 
if port_scan(port):
    print('Port', port, 'is open')
else:
    print("port", port, "is closed")

Producción:

What you want to scan?: localhost
Starting scan on host:  127.0.0.1
Enter the port number to be scanned: 135
Port 135 is open

Nota: Aquí estamos escaneando el localhost. Puede escanear cualquier host o sitio web. Si recibe algún error, entonces los sockets no pueden conectar el objetivo o tal vez cometió algún error en su código.

Advertencias : Sin permiso de la administración, escanear puertos de un servidor o un sitio web puede considerarse un delito. Hay muchos sitios web gratuitos disponibles para probar, puede usarlos.

Publicación traducida automáticamente

Artículo escrito por santanunandi01 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 *