¿Cómo hacer que Kismet escanee durante un período de tiempo fijo, espere el acceso público a WiFi y cargue sus resultados?

¿Cómo hacer que Kismet escanee durante un período de tiempo fijo, espere el acceso público a WiFi y cargue sus resultados?

Mi próximo proyecto consiste en una Raspberry Pi conectada discretamente a un automóvil que funcionará para la persona que la conectó y nunca tendrá que recuperarla. Esta es una prueba de concepto, ya que solo quiero mostrar lo que el gobierno podría hacer si algún día todos tuviéramos radios WiFi en nuestro automóvil.

Iniciará Kismet en el arranque y registrará las ubicaciones de los puntos de acceso con un receptor GPS. Luego, después de un período de tiempo designado, deje de escanear, espere hasta que encuentre una red inalámbrica abierta (el auto esté parado, tal vez estacionado en una cafetería) y luego cargue el archivo kismet .netxml a un servidor FTP o envíelo por correo electrónico.

No sé cómo realizar la parte final. ¿Cómo puedo detener el escaneo de Kismet después de un período de tiempo determinado, conectarme a una red abierta y enviar por correo electrónico el archivo de registro de Kismet más reciente?

Respuesta1

¡Siento tu dolor!

Afortunadamente, logré terminar la mitad del guión, así que espero que tú u otros puedan usarlo.

#!/bin/sh /etc/rc.common
# Kismet server init script
# Copyright (C) 2015 Springboard Research Limited

START=97
STOP=98

start() {
        echo "checking monitor interface"
        if [iw dev mon0 info | grep -q "Interface"]; then
                echo "Monitor found, deleting and recreating"
                ifconfig mon0 down
                iw dev mon0 del
                if [iw dev mon0mon info | grep -q "Interface"]; then
                        ifconfig mon0mon down
                        iw dev mon0mon del
                fi
                iw phy phy0 interface add mon0 type monitor
                echo "Bringing monitor interface online"
                ifconfig mon0 up
        else
                echo "Adding new monitor interface"
                iw phy phy0 interface add mon0 type monitor
                echo "Bringing monitor interface online"
                ifconfig mon0 up
        fi

        echo starting kismet server
        kismet_server -s -T netxml,pcap
}

stop() {
        echo "stopping kismet server"
        killall kismet_server

        echo "deleting the monitor interfaces"
        ifconfig mon0 down
        iw dev mon0 del
        ifconfig mon0mon down
        iw dev mon0mon del
}

Es bastante sencillo. Hay un script de arranque que se ejecuta e inicia Kismet si no se está ejecutando. En el script tuve que quitar la interfaz del monitor para ejecutar el segundo script que verifica el tamaño del archivo y luego lo carga en un servidor ftp.

#!/bin/bash

# get the latest kismet capture file in the /tmp directory

KISMETCAPFILE=$(ls -dt Kismet-* | head -1)

# TEST: echo $KISMETCAPFILE

# check the file size

KCFILESIZE=$(stat -c%s $KISMETCAPFILE)
THFILESIZE=1000000
HOST="your_ftp_server"
USER="ftp_username"
PASSWD="ftp_password"
REMOTEPATH="/"

# TEST: echo $K_C_FILESIZE

if [ ! -z $KISMETCAPFILE ]; then
   if [ ! -z $KCFILESIZE ]; then
      # check file size
      if [ $KCFILESIZE >= $THFILESIZE ]; then

      # if above threshold then stop capture
      echo "stopping the capture"
      #/etc/init.d/kiss stop

      # export file to FTP server
      echo "exporting the file to the ftp server"
      ftp -in <<EOF
       open $HOST
       user $USER$PASSWD
       cd $REMOTEPATH
       put $KISMETCAPFILE
       close
       bye
EOF

      echo "uploaded file to $HOST:$REMOTEPATH"

      # delete local file

      echo "TEST: delete local file"

      # start capture

      echo "TEST: start capture"

      fi
   fi
fi

Espero que lo anterior ayude a alguien.

información relacionada