Mapas de red usando PowerShell y la herramienta Draw.io

Complementando herramientas con comandos útiles para PowerShell

Esto no pretende ser un largo artículo, ni tan solo un tutorial, sino simplemente cuatro pinceladas a modo de apunte con el objetivo de llevar a cabo la tarea de crear el gráfico de una red, y que nos pueda servir de soporte para cualquier documentación.

Me encontraba yo con la necesidad de hacer un mapa de dispositivos para la red. También tenía otro objetivo; no usar herramientas comerciales o versiones free de otros productos como aplicaciones de escritorio, ya que mi intención iba más encaminada al uso de la consola.

¿Por qué el uso de la consola?

Pues porque intento buscar siempre un uso adaptable y parametrizable, a ser posible, para incluir dentro de scripts que pueden ser automatizados por otros procesos.

Muchos pensarán rápidamente, en que podia haber usado NMAP / Zenmap, y tendrán razón, me podía servir perfectamente. Pero quería aprovechar este resultado para integrarlo en alguna herramienta de dibujo donde luego pudiera incorporar otros elementos al gráfico.

Así que indagando por varias fuentes llegué hasta este artículo donde dan una buena solución de principio “Automating with PowerShell: Unifi PowerShell module and creating network maps”.

De hecho, te explica todo lo necesario, pero yo he querido dejar aquí mi explicación para los que tengan dificultad con el inglés o simplemente quieran una explicación paso a paso para poner esto en marcha.

Instalación de PSDrawIO

El primer paso es instalar el módulo PSDrawIO tecleando el siguiente comando dentro de la consola de PowerShell:

Install-Module PsdrawIO

Saldrá un aviso de que el repositorio no es de confianza.

Evidentemente, harás bien en desconfiar de toda fuente desconocida, y más si te indica que no es un repositorio de confianza, por lo que nunca está de más poder observar el código fuente de programas, librerías y módulos que instalemos en nuestro equipo. En este caso, se dispone de todo el código fuente de este módulo en GitHub, y dejo a continuación el enlace:

Es muy probable que, tras instalar este módulo, te salga algún aviso de que necesita otros módulos, como PSGraph o PSGallery. Deberás aceptar su instalación o hacerla manualmente.

Por supuesto, está también disponible el código fuente de PSGraph:

KevinMarquette/PSGraph: A set of utilities for working with Graphviz in Powershell (github.com)

Mapeando la red

Una vez instalada herramienta podemos acceder a la ayuda para saber su uso con tan solo escribir en la consola:

help New-NetworkMap

No voy a entrar en detalle de todos los parámetros. Esto lo dejo al lector para que indague en ello.

Simplemente voy a poner como ejemplo como hacer un mapa rápido de la red local. En este caso pongo como ejemplo mi red local en este preciso instante. Para ello escribimos el siguiente comando en la consola de PowerShell:

New-Networkmap -Network 192.168.1.0/24 -Layout organic | out-file "redlocal.csv"

Mostrando el resultado del mapeado

Tras hacer el mapeado (o escaneo) se generará un archivo CSV con el resultado. En este caso el archivo se llama “redlocal.csv”.

Archivo “redlocal.csv” generado después del mapeado de la red
Archivo “redlocal.csv” generado después del mapeado de la red

Cargando el gráfico en Draw.io

Ya solo nos queda cargar este contenido dentro de draw.io, crear un diagrama vacío y acceder a la siguiente opción de menú:

Arrange -> Insert -> Advanced -> CSV
Menú para carga de fichero CSV con el gráfico
Menú para carga de fichero CSV con el gráfico
Menú para carga de fichero CSV con el gráfico

Seguidamente aparecerá una ventana con un cuadro de texto donde deberemos “pegar” el contenido del fichero CSV que se nos ha generado en el paso anterior. Y tras pulsar el botón de aceptar tendremos ya el gráfico en pantalla, listo para editar, añadir o modificar lo que necesitemos e incorporarlo a nuestro documento final.

Gráfico importado en Draw.io
Gráfico importado en Draw.io
Gráfico importado en Draw.io

Integración en VSCode

Acabo este corto artículo con una extensión para los desarrolladores que no quieren salir de su IDE. En este caso, VSCode, y no tener que usar el navegador para ir a draw.io.

Solo debemos acceder al aparatado de extensiones, buscar “Draw.io Integration” e instalar la primera extensión que aparece.

Seguidamente crear un fichero vacío con la extensión .drawio y al abrirlo nos aparecerá todo el entorno de draw.io.

Ahora solo hay que acceder al menú mencionado anteriormente, e insertar el contenido del fichero CSV.

Y ya disponemos del gráfico dentro del entorno de desarrollo para trabajar desde un único espacio de trabajo.

Espero que a partir de ahora hagas muchos mapas de red. 😬

Informático. Profesor CFGM, CFGS Ciberseguridad. Intereses en robótica, electrónica, raspberry, ciberseguridad, reversing. Twitter @gmarti @310hkc41b

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store