Script para escanear la Red desde un equipo con GNU/Linux

1 Feb

Escanear la red desde el sistema operativo GNU/Linux, puede ser algo tan simple como instalar el programa arp-scan

sudo apt-get install arp-scan

y ejecutarlo:

sudo arp-scan –interface=wlan0 –localnet

En el caso del ejemplo anterior escanea la red desde la interfaz wlan0, puede cambiarla a eth0 o la de su equipo.

Pero si quiere adicionalmente escanear los puertos de los equipos que están activos puede hacerlo con nmap y para ello será necesario un script.

El siguiente script se puede ejecutar sin necesidad de ser root y determina primero los parámetros de red del equipo, en base a estos determina la red y número de hosts y finalmente realiza un escaneo de la red determinando si los equipos están activos para  escanear los puertos abiertos.

Como requisito para el escaneo de puertos se requiere tener instalada la herramienta nmap

sudo apt-get install nmap

En caso de que nmap no esté instalado, solo verificará que equipos están activos en la red.

Puede descargarlo desde este enlace, o copie el código de abajo, péguelo en un archivo de texto plano, cambie los permisos a ejecución y ejecútelo

==================================================================

#!/bin/bash
# netyscan is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
# Charles Escobar – Enero 2015
# http://www.charlesescobar.com
# Escaneo de red clase C
# Determina la dirección del equipo, su mascara, dirección de red y con estos parámetros realiza el escaneo
# Este programa usa ping, nmap y arp
echo “=====================================================”
echo “ESCANEO DE RED CLASE C BASADA EN LA IP DE ESTE EQUIPO”
echo “=====================================================”
host=`ifconfig |grep Direc|grep inet:| awk ‘{ print $2 }’|sed /127.0.0.1/d|sed s/inet://`
mascara=`ifconfig |grep Direc|grep inet:| awk ‘{ print $4 }’|sed /127.0.0.1/d|sed s/Másc://`
octmask4=`echo $mascara|awk -F “.” ‘{print $4}’`
# octmask4=248 #prueba
octeto1=`ifconfig |grep Direc|grep inet:| awk ‘{ print $2 }’|sed /127.0.0.1/d|sed s/inet://| awk -F “.” ‘{ print $1 }’`
octeto2=`ifconfig |grep Direc|grep inet:| awk ‘{ print $2 }’|sed /127.0.0.1/d|sed s/inet://| awk -F “.” ‘{ print $2 }’`
octeto3=`ifconfig |grep Direc|grep inet:| awk ‘{ print $2 }’|sed /127.0.0.1/d|sed s/inet://| awk -F “.” ‘{ print $3 }’`
octeto4=`ifconfig |grep Direc|grep inet:| awk ‘{ print $2 }’|sed /127.0.0.1/d|sed s/inet://| awk -F “.” ‘{ print $4 }’`
# octeto4=222 #prueba
echo “este programa usa nmap, si no lo tiene instalado, puede hacerlo con”
echo “sudo apt-get install nmap”
if [[ $octmask4 = 0 ]]; then
expo=8
else
expo=`echo “obase=2;$octmask4” | bc |grep -oh 0|grep -c 0`
fi
hostnum=$((2**$expo))
octetored=$(($octmask4 & $octeto4))
inicio=$(($octetored + 1))
fin=$(($octetored + $hostnum -1))

echo “esta máquina es:” $host “Máscara:” $mascara “Red:” $octeto1″.”$octeto2″.”$octeto3″.”$octetored

echo “Número de hosts: ” `echo $(($hostnum-2))`

echo “Escaneo de la red: ” $octeto1″.”$octeto2″.”$octeto3″.”$octetored
echo “”
#exit 0
rango=$inicio
while [[ $rango -le $fin ]]; do
IP=$octeto1.$octeto2.$octeto3.$rango
if ping $IP -w 3 -c 1 > /dev/null; then
if [[ $inactivo -eq 1 ]]; then
echo “”
fi
mac=`arp $IP|grep ether|awk ‘{ print $3 }’`
echo $IP $mac activo
nmap $IP|grep open
echo “”
inactivo=0
else
if [[ $inactivo -eq 1 ]] ; then
echo -en “\e[1A”
echo “$IP inactivo”;
else
echo “$IP inactivo”;
inactivo=1
fi
fi
rango=$(($rango+1))
done
echo “fin del escaneo”
exit 0