typestar

port_scanner.py en Python

Escanear un host en busca de puertos abiertos de una lista común.

"""Escanea un host buscando puertos TCP abiertos de una lista común."""
import socket
import sys

COMUNES = {22: "ssh", 80: "http", 443: "https", 5432: "postgres",
          6379: "redis", 8080: "http-alt"}


def esta_abierto(host, puerto, timeout=0.5):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
        sock.settimeout(timeout)
        return sock.connect_ex((host, puerto)) == 0


def principal():
    host = sys.argv[1] if len(sys.argv) > 1 else "127.0.0.1"
    print(f"escaneando {host}")
    hallados = 0
    for puerto, nombre in sorted(COMUNES.items()):
        if esta_abierto(host, puerto):
            print(f"  {puerto:5d} abierto ({nombre})")
            hallados += 1
    print(f"{hallados} de {len(COMUNES)} puertos comunes abiertos")


if __name__ == "__main__":
    principal()

Cómo funciona

  1. connect_ex reporta si un puerto acepta.
  2. Un timeout corto agiliza los puertos cerrados.
  3. Los puertos abiertos se emparejan con nombres de servicio.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
27
Caracteres a escribir
733
Tokens
199
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 109 segundos.

Escribe este fragmento

Paso 1 de 3 en Bis; paso 39 de 41 en Herramientas de dominio.

← Anterior Siguiente →