jueves, 18 de diciembre de 2014

Detectar intrusos en red wifi

A partir de algunos scripts que he visto, he compuesto el siguiente para perl y para python.


Hay que tener en cuenta que en la linea numero 5 en perl, hay que mirar si la salida del comando ifconfig tiene las cadenas "Direc. inet:", si son otras habría que modificar la linea para sacar nuestra ip. Y también configurar las mac de nuestros dispositivos o bien anular esas lineas si se sabe algo de perl :). Hay que mirar que configuración tenemos de red, en mi caso 192.168.0.0 y sustituir 192.168.0.1 por la nuestra. Y para afinar mas, poner el path completo del archivo hosts-ip.txt
Para el de python (que es mas simple) mirar "Direc. inet" y nada más.

#!/usr/bin/perl

$archivos="hosts-ip.txt";
$scaneo=  `nmap -sP 192.168.0.1/24 > $archivos`;
$ip= `/sbin/ifconfig wlan0 |grep 'Direc. inet:'|awk '{print \$2}'|cut -c 6-`;
chomp($ip);
open INFILE,$archivos;
my $linea;
my $conmutador=0;
while ( $linea = ) {
    chomp($linea);
    $linea =~ m/^Nmap scan report for\s(.+?)$/;
    if($1 =~ m=(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})=){
            $comp = "$1.$2.$3.$4";
            if($comp ne "192.168.0.1"){
                if($comp eq $ip){$texto.="Mi D IP = $ip\n"}
                else{
                    $mac=`arp $comp`;
                    $mac =~ m/(..:..:..:..:..:..)/;
                    if($1 eq "xx:xx:xx:xx:xx:xx"){$valor="Mi Móvil"}
                    elsif($1 eq "xx:xx:xx:xx:xx:xx"){$valor="Mi Tablet"}
                    else{$valor=$1;}
                    $texto.="Intruso = $comp $valor\n";
                    $conmutador  = 1;
                }
            }
    }
} 
close INFILE;
print $texto
$salido =`notify-send -t 0 -i wicd-gtk "Escaneo de la Red" "$texto"`; 

Y el de python


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

import commands
import re
import subprocess

ip = commands.getoutput("/sbin/ifconfig wlan0 |grep 'Direc. inet:'|awk '{print $2}'|cut -c 6-") 

scaneo=commands.getoutput("nmap -sP 192.168.0.1/24 > hosts-ippy.txt") 
infile = open('hosts-ippy.txt', 'r')
texto = ''
for linea in infile:
    linea.rstrip()
    m = re.match(r"(.+)\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", linea)
    if m:
        if m.group(2) != '192.168.0.1':
            if ip == m.group(2):
                texto+='Mi D IP = '+ip+'\n'
            else:
                texto+='Intruso = '+m.group(2)+'\n'

infile.close()
print texto                   
exitCode = subprocess.call(["notify-send",'-t','0','Escaneo de la Red',texto])


No hay comentarios:

Publicar un comentario