Come eseguire la scansione di Kismet per un determinato periodo di tempo, attendere l'accesso WiFi pubblico e caricarne i risultati?


2

Il mio prossimo progetto consiste in un Raspberry Pi collegato in modo discreto a un'auto che guiderà la persona che lo ha collegato e non dovrà mai essere recuperato. Questa è una prova del concetto, poiché voglio solo mostrare cosa potrebbe essere in grado di fare il governo se un giorno avessimo tutti le radio WiFi nella nostra auto.

Avvia Kismet all'avvio e registra le posizioni dei punti di accesso con un ricevitore GPS. Quindi, dopo un determinato periodo di tempo, interrompi la scansione, attendi fino a quando non trova una rete wireless aperta (l'auto è di cancelleria, forse parcheggiata in un coffeeshop) e quindi carica il file kismet .netxml su un server FTP o invialo tramite e-mail.

Non so come realizzare la parte finale. Come posso interrompere la scansione di Kismet dopo un determinato periodo di tempo, connettermi a una rete aperta ed inviare via e-mail il file di registro Kismet più recente?


1
Sembra che imparerò solo alcuni script di Bash!
chubby_monky,

Sono curioso di sapere perché devi chiudere Kismet, non riesci a connetterti agli AP quando è in esecuzione? Se il GPS rileva che non ti stai muovendo per un periodo di tempo (diciamo 10 minuti) E non sono stati rilevati nuovi punti di accesso all'ultimo minuto .. vai avanti e disconnettiti da Kismet ed esegui il caricamento. Se rilevi di nuovo il movimento .. interrompi il caricamento e ritorna a kismet.
Erik,

Impossibile connettersi mentre Kismet è in esecuzione perché la scheda wireless sarebbe in modalità monitor.
chubby_monky,

Risposte:


2

Condivido il tuo dolore!

Per fortuna sono riuscito a fare mezza sceneggiatura, quindi spero che tu o altri possano usarla.

#!/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
}

È piuttosto semplice. C'è uno script di avvio che viene eseguito e avvia Kismet se non è in esecuzione. Nello script ho dovuto rimuovere l'interfaccia del monitor per eseguire il secondo script che controlla la dimensione del file e quindi carica il file su un server 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

Spero che quanto sopra aiuti qualcuno.


Volevo condividere alcune conoscenze. Non ho toccato Kismet per molto tempo, ma ho scoperto che con il mio dispositivo specifico se non abilitavo il monitor ma gli permettevo di canalizzare, Kismet era in grado di scansionare tutti i canali e ottenere più dati.
Tahir Khalid,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.