tuxwar
Bovino adicto
- Desde
- 1 Ago 2008
- Mensajes
- 679
- Tema Autor
- #1
Mucho se ha dicho en este foro sobre la indignacion que sienten porque personas con una distro como wifiway, wifislax o backtrack pueden hacer de las suyas y robar las claves wep de los vecinos, bien pues aqui les traigo un script que detecta equipos que no deben estar dentro de la red esta comentado asi que no hay mucho que aclarar, tengo que aclarar para evitar malos entendidos que no es de mi autoria y sinceramente esta lleno de lineas que no son necesarias pero funciona, yo ya lo habia depurado pero no recuerdo donde deje mi archivo jeje lo siento de momento aqui les dejo este.
para la implementacion es muy sencilla abre tu gedit como root y guarda el archivo en tu home con el nombre que tu quieras yo lo llame alertared despues editas crontab
con el comando $ crontab -e y añades la siguiente linea
*/5 * * * * /home/usuario/alertared
lo cual indica que se ejecutara cada 5 minutos hay que hacerle unas modificaciones al codigo pero son muy simples dentro del codigo estan los comentarios de lo que se debe hacer.
DESCARGA
para la implementacion es muy sencilla abre tu gedit como root y guarda el archivo en tu home con el nombre que tu quieras yo lo llame alertared despues editas crontab
con el comando $ crontab -e y añades la siguiente linea
*/5 * * * * /home/usuario/alertared
lo cual indica que se ejecutara cada 5 minutos hay que hacerle unas modificaciones al codigo pero son muy simples dentro del codigo estan los comentarios de lo que se debe hacer.
DESCARGA
Código:
#!/bin/bash
#declaracion de arrays
declare -a IPS_CONOCIDAS
declare -a MACS_CONOCIDAS
####################
#Configuracion:
####################
#Array de ip's conocidas, la primera debe ser la del router, no hace falta poner la propia
#separar por espacios las ips
IPS_CONOCIDAS=( "192.168.1.200" )
#Array de MAC's conocidas (para que no liste las direcciones DHCP de ordenadores conocidos)
#para conocer una MAC, usar el comando "arp IP"
#separar por espacios las macs
MACS_CONOCIDAS=( "00:11:21:33:44:55" )
#Interfaz de red (eth0, wlan0, etc)
DEVICE="wlan0"
#Mascara de red (24=255.255.255.0, 16=255.255.0.0)
MASK=24
#####################
#Menu de opciones
for opt in $@; do
if [ "$opt" = "-h" ]; then
echo "alertared 1.0 (http://www.tuxapuntes.com/drupal/node/1710) por Ivan Vergés"
echo "Este programa busca los host de una red y devuelve los conectados y su MAC"
echo "USO alertared [Parametros]"
echo "OPCIONES:"
echo " -h Muestra esta ayuda"
echo " -l Usa el script en modo LOG, es decir pone una linea por host"
echo " intruso con la fecha primero, no escribe ninguna otra información"
echo " -n No hace uso del programa notify-send que informa al escritorio de los resultados"
echo " -m No hace uso del programa arp y no resuelve las MAC de los resultados"
echo " -a Devuelve todos los hosts encontrados independientemente de las"
echo " variables internas IPS_CONOCIDAS y MACS_CONOCIDAS"
exit
fi
if [ "$opt" == "-l" ]; then
LOG=1
fi
if [ "$opt" == "-n" ]; then
NONOTIFY=1
fi
if [ "$opt" == "-m" ]; then
NOMAC=1
fi
if [ "$opt" == "-a" ]; then
IPS_CONOCIDAS=( )
MACS_CONOCIDAS=( )
fi
done
#aqui obtenemos la nuestra ip
ip=$(/sbin/ifconfig "$DEVICE" | grep "inet" | awk '{print $2}' | cut -c 6-)
if [ ! $LOG ]; then
echo "Mi ip: $ip"
fi
#añadimos nuestra IP al array
IPS_CONOCIDAS[${#IPS_CONOCIDAS
[*]}]=$ip
if [ ! $LOG ]; then
echo "No se controlan los equipos siguientes: "${IPS_CONOCIDAS
[*]}
if [ "${MACS_CONOCIDAS
[*]}" != "" ] && [ ! $NOMAC ]; then
echo "No se controlan los equipos con las MAC siguientes: "${MACS_CONOCIDAS
[*]}
fi
fi
#Comprovar si existen los programas que usaremos:
if [ ! -x /usr/bin/nmap ]; then
echo "El programa nmap no está instalado!"
exit
fi
if [ ! $NONOTIFY ] && [ ! -x /usr/bin/notify-send ]; then
echo "El programa notify-send no está instalado!"
echo "Puedes llamar al programa con la opcion -n para no usar notify-send"
exit
fi
if [ ! $NOMAC ] && [ ! -x /usr/sbin/arp ]; then
echo "El programa arp no está instalado!"
echo "Puedes llamar al programa con la opcion -m para no usar arp"
exit
fi
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en el fichero "-" que es la salida standard
#redireccionada a la variable variable HOST_IPS
if [ ! $LOG ]; then
echo "Buscando equipos..."
fi
HOST_IPS=$(/usr/bin/nmap -sP ${IPS_CONOCIDAS[0]}/$MASK -oG -)
#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
IPS=$(echo "$HOST_IPS" | grep Host | cut -c 7-20 | tr -d "\()")
#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo "-" (entrada standard)
contador=$(echo "$IPS" | wc -l - | cut -c 1-2)
total=$(expr $contador - 1)
#esto es para que el script tenga acceso a las X des de crontab
export DISPLAY=:0
export XAUTHORITY="$HOME/.Xauthority"
#Bucle de búsqueda entre las ip's encontradas
var=0
while [ $var -le $total ]; do
SALTA_BUCLE=0
let var=$var+1
#capturamos la ip por linea
linea=$(echo "$IPS" | sed -n "$var p")
#quitamos espacios sobrantes
linea=${linea/ /}
for i in ${IPS_CONOCIDAS
[*]}
do
if [ "$i" == "$linea" ]; then
if [ ! $LOG ]; then
echo "La IP $linea está en la red conocida"
fi
SALTA_BUCLE=1
break
fi
done
if [ "$SALTA_BUCLE" == "1" ]; then
continue
fi
#obtenemos informacion de la ip
if [ ! $NOMAC ]; then
ARP=$(/usr/sbin/arp -a $linea)
else
ARP=""
fi
#nos quedamos con la mac
MAC=$(echo "$ARP" | awk '{print $4}')
#quitamos espacios sobrantes
MAC=${MAC/ /}
#el nombre de host a veces sale también
NAME=$(echo "$ARP" | awk '{print $1}')
for i in ${MACS_CONOCIDAS
[*]}
do
if [ "$i" == "$MAC" ]; then
if [ ! $LOG ]; then
echo "La IP $linea (HOST: $NAME MAC: $MAC) está en la red conocida"
fi
SALTA_BUCLE=1
break
fi
done
if [ "$SALTA_BUCLE" == "1" ]; then
continue
fi
if [ ! $NOMAC ]; then
AVISO="Conectado $linea (HOST: $NAME MAC: $MAC)"
else
AVISO="Conectado $linea"
fi
if [ ! $NONOTIFY ]; then
#aviso al sistema de notificaciones de escritorio
/usr/bin/notify-send "$AVISO"
fi
if [ $LOG ]; then
#modo log, una sola linea con la fecha
if [ ! $NOMAC ]; then
echo `/bin/date --rfc-3339=seconds`" HOST $linea ARP $ARP"
else
echo `/bin/date --rfc-3339=seconds`" HOST $linea"
fi
else
#modo normal
#Para enterar-se por la consola también:
echo "$AVISO"
fi
done