Escanear puertos abiertos con la terminal de MacOS

A partir de MacOS Big Sur, Apple descatalogo la utilidad de red, era una herramienta muy útil para hacer comprobaciones cuando algo fallaba en la red.

No entiendo el motivo ya que tenía una interfaz muy amigable para la mayoría de los usuarios, pero no te preocupes porque vengo con una solución para que no dependas de una herramienta de terceros. Hoy aprenderemos a comprobar uno o varios puertos abiertos de un ordenador remoto usando la terminal de MacOS, para ser exactos usaremos el comando netcat.

Vamos al lio, abrimos la terminal desde la carpeta de Utilidades, ejecutamos el comando nc, con la siguiente estructura para comprobar un puerto:

nc -zv direcciónIP_o_NombreDelEquipo NúmeroDePuerto

Esta es la estructura del comando para el escaneo de un rango de puertos

nc -zv direcciónIP_o_NombreDelEquipo PrimerPuerto-ÚltimoPuerto

Si no te queda muy claro, vamos con los ejemplos que viéndolo en acción siempre es más entendible 🙂

Ejemplos:

Comprobar si hay conexión SMB contra un PC

Aquí comprobamos si podemos llegar a puerto 445 de un equipo Windows llamado PC-RODOLFO.LOCAL

nc -zv PC-RODOLFO.LOCAL 445

Comprobar si hay conexión contra un servidor SMTP

En este ejemplo comprobamos si tenemos conexión contra el puerto 587 de SMTP.

nc -zv mail.labsmac.es 587

Comprobar un rango puertos

Aquí comprobamos un rango de puertos de un Mac que van del puerto 20 al 22.

nc -zv iMac-LabsMac.local 20-22

En este ejemplo, hemos elegido un rango bastante reducido pero imagínate que eliges un rango entre cientos de puertos, puede que se nos dificulte el ver los puertos abiertos (succeeded), así que vamos a filtrar su salida.

Filtrando el resultado

Si intentamos filtrar usando grep a través de la palabra succeeded, no va a funcionar…

El comando nc, arroja todo el resultado en forma de error (STDERR), por eso no funciona grep. Por ejemplo, si ejecutamos el comando anterior pero redirigimos los errores a null, no veremos nada, porque estamos redirigiendo los errores a null.

La solución es redirigir (2>&1) STDERR a STDIN, y luego usar grep, de la siguiente forma:

nc -zv iMac-LabsMac.local 20-22 2>&1 | grep succeeded

Ahora si puedes filtrar el resultado de nc, espero que te haya gustado el post 🙂 Nos vemos en el siguiente post!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.