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