Para listar los puertos abiertos junto con los procesos asociados a cada uno, en Windows, es posible recurrir al comando netstat, similar al de sistemas *nix.

Cada sistema operativo implementa su propia versión de netstat (network status). Por ejemplo, la versión de netstat de los sistemas FreeBSD es totalmente distinta a la versión disponible en sistemas GNU/Linux. El comando netstat de Windows, en cambio, es similar al disponible en Linux, aunque con menor cantidad de opciones:

C:\Users\Administrador>netstat -?

Muestra estadísticas del protocolo y conexiones TCP/IP actuales.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-s] [-p proto] [-r] [intervalo]

  -a            Muestra todas las conexiones y puertos de escucha.
  -b            Muestra el archivo ejecutable involucrado en la creación de
                cada conexión o puerto de escucha. En algunos casos, los
                archivos ejecutables reconocidos hospedan múltiples
                componentes individuales, y en esos casos, se mostrará
                la secuencia de componentes involucrados en la creación
                de la conexión o puerto de escucha; el nombre del ejecutable
                se mostrará entre [] en la parte inferior; en la parte
                superior estará el componente que llamó, y así sucesivamente
                hasta que se llegue a TCP/IP. Tenga en cuenta que esta
                opción puede tardar bastante tiempo y no se ejecutará
                correctamente si no cuenta con permisos suficientes.
  -e            Muestra estadísticas de Ethernet. Se puede combinar con la
                opción -s.
  -f            Muestra los nombres FQDN de direcciones externas.
  -n            Muestra números de puertos y direcciones en formato
                numérico.
  -o            Muestra el Id. del proceso asociado con cada conexión.
  -p proto      Muestra conexiones del protocolo especificado por proto;
                que puede ser TCP, UDP, TCPv6 o UDPv6. Si se usa con la opción
                -s para mostrar estadísticas por protocolo, proto puede ser
                TCP, UDP, TCPv6 o UDPv6.
  -r            Muestra el contenido de la tabla de rutas.
  -s            Muestra estadísticas por protocolo. De forma predeterminada,
                se muestran para IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP y
                UDPv; se puede utilizar la opción -p para especificar un
                subconjunto de los valores predeterminados.
  intervalo     Vuelve a mostrar las estadísticas seleccionadas, haciendo
                pausas en el intervalo de segundos especificado entre cada
                muestra. Presione Ctrl+C para detener la actualización de
                estadísticas. Si se omite, netstat imprimirá la información
                de configuración una vez.


Entonces, para listar todas las conexiones (con formato numérico) junco con el ID de proceso asociado, es posible ejecutar:

netstat -ano

Sin embargo, si sólo interesa quedarse con los puertos abiertos (en estado listening), es necesario "grepear". Claro que en Windows no existe el comando grep, aunque existe findstr, el cual es bastante decente:

C:\Users\Administrador>findstr -?
Busca cadenas en los archivos.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
        [/F:archivo] [/C:cadena] [/G:archivo] [/D:lista_directorios]
        [/A:atrib_color] [/OFF[LINE]] cadenas [[unidad:][ruta]archivo[ ...]]

  /B          Hace coincidir los modelos si están al principio de la línea.
  /E          Hace coincidir los modelos si están al final de la línea.
  /L          Literalmente usa cadenas de búsqueda.
  /R          Usa cadenas de búsqueda como expresiones regulares.
  /S          Busca archivos que coinciden en el directorio actual y en todos
              los subdirectorios.
  /I          Especifica que la búsqueda no distingue mayúsculas de minúsculas.
  /X          Imprime líneas que coinciden con exactitud.
  /V          Sólo imprime líneas que no contienen una correspondencia.
  /N          Imprime el número de la línea antes de la línea que coincide.
  /M          Sólo imprime el nombre de archivo si el archivo contiene una
              correspondencia.
  /O          Imprime un carácter de desplazamiento antes de las líneas que
              coinciden.
  /P          Omite archivos con caracteres que no son imprimibles
  /OFFLINE    No omite archivos con el atributo "sin conexión" establecido.
  /A:atr     Especifica atributos de color con dos dígitos hexadecimales.
              Consulte "color /?"
  /F:archivo  Lee la lista de archivos desde el archivo especificado
              (/ significa consola).
  /C:cadena   Usa una cadena especificada como una búsqueda de cadena
              literal.
  /G:archivo  Toma la búsqueda de archivos desde el archivo especificado
              (/ significa consola).
  /D:dir      Busca un signo de punto y coma de la lista delimitada de
              directorios
  cadenas     Texto que se va a buscar.
  [unidad:][ruta]archivo
              Especifica el archivo o archivos que se van a buscar.

Usa espacios para separar múltiples cadenas de búsqueda a no ser que
el argumento lleve un prefijo con /C.  Por ejemplo, 'FINDSTR "qué tal" x.y'
busca "qué" o "tal" en el archivo x.y.  'FINDSTR /C:"qué tal" x.y' busca
"qué tal" en el archivo x.y.

Expresión regular de referencia rápida:
  .        Comodín: cualquier carácter
  *        Repetir: cero o más ocurrencias de un carácter previo o de clase
  ^        Posición de línea: comienzo de la línea
  $        Posición de línea: fin de línea
  [clase]  Clase de carácter: cualquier carácter en la serie
  [^class] Clase inversa: cualquier carácter que no esté en la serie
  [x-y]    Intervalo: cualquier carácter que esté dentro del intervalo
           especificado
  \x      Escape: uso literal de un metacarácter x
  \<xyz   Posición de palabra: principio de palabra
  xyz\>   Posición de palabra: fin de palabra

Para obtener una información más completa sobre expresiones regulares de
FINDSTR referirse al Comando de referencia Command en línea.

En definitiva, para listar todos los puertos abiertos, junto con el ID de proceso asociado, ejecutar:

netstat -ano | findstr LIST

Por ejemplo:


Tal vez pueda interesarte


Compartí este artículo