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