Ir al contenido principal

Router wifi Linksys con pantalla monitorizadora de Urls solicitadas

Pues esta semana santa 2012 me he dedicado a esto. La verdad, tenia muchas ganas de verlo funcionar porque era una idea que llevaba tiempo ya rondando por mi cabeza.

Se trata de un router wifi Linksys wrt54gl 1.1 con firmware kamikaze 8 de openwrt. A ese firmware se le ha anadido el paquete dsniff, el cual permite con el comando urlsnarf, listar las urls que se solicitan en la red wifi.

Si esa salida la redireccionamos al puerto serie interno del aparato y ahi conectamos un arduino que vaya recibiendo esa informacion y pasandola a su vez a la pantalla lcd, tenemos un aparato que nos permite saber que peticiones se hacen a internet desde nuestro wifi.

Adicionalmente he colocado un buzzer, con un interruptor para activar/desactivarlo , para que ademas de una pitada cuando se produzca una peticion a internet.




El comando que utilizo en el firmware para pasar las urls al puerto serie es:

urlsnarf -i wl0  |cut -d\"  -f 4 | cut -d '/' -f 3  > /dev/cua/1


Con esto paso solo el nombre  de dominio que se esta visitando.



El arduino , que va dentro del router, arduino Uno, va conectado a la placa del linksys al puerto serie
La alimentacion ,12v,  la cojo de la hembra de corriente del linksys.



El codigo que lleva programado el arduino es para que todo lo que le llegue por puerto serie
lo muestre en el lcd y tambien de una pitada.


#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int incoming ;
String cadena = "" ;
String cadena2 = "" ;
int i = 0;
void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0, 0);
  lcd.print("STARTING");
  lcd.setCursor(0, 1);
  lcd.print("SYSTEM");
  lcd.setCursor (0, 0);
  Serial.begin (9600);
}
void loop() {
 if (Serial.available() > 0) {
      
       incoming = Serial.read();
    
     
    if ( incoming != 10 && incoming !=13) {
     
      
     
      if (i < 16 ) {
     
         cadena = cadena + char(incoming); 
         
      } else {       
         cadena2 = cadena2 + char(incoming);   
      }        
     
      i++;
     
    }
         
      if (incoming == 10) {
       
        if  (cadena.startsWith("-")) {
        
          cadena = "";
          cadena2 = "";
          i = 0;}
         
          else
        
          {tone(8,3000,100);
          lcd.clear();  
          lcd.setCursor (0, 0);
          lcd.print (cadena);   
          cadena = "" ;
          lcd.setCursor (0, 1);
          lcd.print (cadena2);
          cadena2= "";
          delay (1000);
          i= 0;}
      
     }
 }  // fin de si es lf o crlf
 } //fin void loop



Asi, podemos ver en la pantalla que paginas se visitan desde nuestra red:

(Ejemplo de visitar una página web desde movil conectado al wifi de este router)


Las aplicaciones de este cacharro pueden ir desde el control parental hasta auditar nuestro sistema wifi por si se cuela algun vecino.

Si por ejemplo nos acostamos y el aparato empieza a pitar, ya sabemos que alguien de casa o de fuera esta conectado a internet desde nuestra conexion y que paginas esta visitando.


La instalacion es sencilla, solo hay que deshabilitar el wifi del router que nos da nuestro proveedor y conectarle por cable de red este cacharrito.