26 noviembre, 2011

Detectar equipos conectados a una misma LAN (ping broadcast)

En ocasiones durante el mantenimiento de sistemas, necesitamos ver que equipos tenemos conectados a nuestra red local (LAN), esto también es útil para saber quien está conectado a tu red Wireless ("saber si el vecino te está robando la WiFi"). Pues este es un sistema para utilizar direcciones de broadcast. Lógicamente estos pasos los realizaremos en la consola de Windows.

Vamos a utilizar para ello la dirección de red: 192.168.1.1/24 el 24 representaría los bits a '1' de modo que quedaría una IP de clase C con máscara de 255.255.255.0, es decir solo el último octeto para hosts finales menos el 0 que sería la dirección de red, que sería reservada siempre para ese fin, el 1 que sería el gateway o puerta de enlace (no está reservada para este fin pero es casi siempre utilizable y en una red domestica sería la configuración por defecto) y el 255 que sería la dirección broadcast, y está si está reservada para este fin. Por lo tanto, nos quedarían direcciones para hosts finales desde la 2-254 (incluyendo estos).

Antes mencionar que este tip es para OS Windows pero antes explicaré como se realiza en OS Linux, debido a que su uso es más facil.

En Linux bastaría con abrir una terminal y escribir: ping 192.168.0.255 -b
Despues solo quedaría consultar la table ARP (Address Resolution Protocol): arp -a
Ya tendríamos la lista de IP y direcciones MAC (Media Access Control).

En windows es un poco más "complicado". Ya que no existe la opción de broadcast como tal en el comando ping, y no nos permite ninguna posibilidad dentro de sus argumentos para hacer por ejemplo un: ping 192.168.1.255.
Así que tenemos dos opciones:
Aprendernos de memoria la siguiente linea de código o generar un fichero .bat, (que podremos guardar y ejecutar siempre que deseemos) que contenga esta linea de código:
for /l %i in (1,1,254) do ping -w 50 -n 1 192.168.1.%i
Quién tenga un nivel básico de programción ya sabría interpretar un bucle for. Pero para aquellas personas que no sepan y no se limiten simplemente a copiar/pegar, pasaré a explicar brevemente que hace este script:

for: Realizamos un bucle, para que recorra todas las direcciones IP posibles de nuestra red.
/l: Con este argumento estaríamos especificando que se trataría de un bucle que recorre una sucesión de números que va desde una inicio hasta un fin.
%i: El % inicia una variable que en este caso le llame i.
in: marcamos los parámetros que queremos que se recorran del bluque for.
(1,1,254): Los parámentros están entre paréntesis y separados por coma en un orden especifico: (inicio, paso, fin). Por lo tanto, en este caso recorrerá desde el número 1 hasta el 254.
do: Indicamos el comando DO para determinal lo que queremos que recorra.
ping -w 50 -n 1: Realizará un ping con (-n 1) tan solo 1 respuesta de echo y con (-w 50) un tiempo de solicitud de 50 milisegundos.
192.168.1.%i: La dirección IP que recorrerá el for indicándole que el %i (colocada en el último octeto) es la variable que tiene que ir recorriendo hasta el limite marcado en los parámetros del IN (254).

Luego realizamos un arp -a y nos mostrará todas las entradas IP y address MAC en nuestra tabla ARP.

Saudos!
Entradas Relacionadas