jueves, 8 de enero de 2015

Detectar intrusos en red wifi (2)

  Este es un script basado como no en los anteriores, es bastante simple y solo hay que verificar que se haga el scan correctamente, cambiando un solo carácter del script si es necesario (ver en el script). Esto es debido a los cambios en la salida del comando nmap según la versión de este. Ahora está configurado para la version de nmap 6.01 y comprobado que para la versión 5.00 hay que cambiar el numero 1 por el 2 (ver en el script).
  Se pueden meter en la lista "ip_amigas" las direcciones de nuestros dispositivos para que no los tome como "intrusos", no hace falta meter la ip de nuestro pc donde corre el script, ni el gateway/router.
  Una vez se verifica que corre satisfactoriamente, se puede meter en el cron de nuestro sistema y usuario, para lo cual hay que editarlo asi:

$ crontab -e     #nos abrirá nuestro editor

y escribiremos lo siguiente

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DISPLAY=:0

*/5 * * * * python /home/user/alerta-python.py

  Cerramos y listo.
  Se ejecutará cada 5 minutos, y en "user" cambiarlo por nuestro nombre de usuario.

   Si hemos añadido todos nuestros dispositivos, no nos notificará ningún aviso (notify-send) a no ser que tengamos un intruso real.

Aqui el script alerta-python.py:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import commands
import subprocess

# Configurar las ip's de nuestros dispositivos conocidos,
# cuando se verifique que funciona el scripts
#ip_amigas = ['192.168.1.128','192.168.1.129']
ip_amigas = []

gateway_red= commands.getoutput('route | grep default|awk \'{print $2 "#"$8}\'') 
gateway_red=gateway_red.split("\n")[0] 
gateway, red = gateway_red.split("#")
ip = commands.getoutput("/sbin/ifconfig "+red+"| grep inet |awk '{print $2}'|grep '[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}'|cut -c 6-")
# En esta linea de abajo al final de la linea, donde dice "cut -f 1 -d" 
# cambiar el 1 por el 2 en caso de que "NO FUNCIONE"
scaneo=commands.getoutput("nmap -sP "+gateway+"/24|grep [Nmap\|Host] |awk '{print $5 \"#\"$2 }'|grep '[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}'|cut -f 1 -d\"#\"") 
# ATENCION!!!  a la linea de abajo y la de arriba
print scaneo       # comentar esta linea una vez que compruebe funciona correctamente

ip_amigas.append(gateway)       # añadimos el router/gateway
ip_amigas.append(ip)            # tambien nuestra dirección ip

scaneo = scaneo.split('\n')
texto = ''
for linea in scaneo:
    if not linea in ip_amigas:
        texto+="Intruso = "+linea+"\n"
if texto:
    exitCode = subprocess.call(["notify-send",'-t','0','-i','wicd-gtk','Escaneo de la Red',texto])

Si hay alguna duda preguntar :)
Salu2

No hay comentarios:

Publicar un comentario