2012-05-30 25 views
5

Sto cercando di ottenere l'intensità RSSI o del segnale dai pacchetti WiFi. Desidero anche RSSI da "richieste sonda WiFi" (quando qualcuno cerca un hotspot WiFi).Scapy - recupero di RSSI dai pacchetti WiFi

Sono riuscito a vederlo dai registri di Kismet, ma questo era solo per assicurarsi che fosse possibile - Non voglio usare kismet tutto il tempo.

Per "scansione a tempo pieno" sto utilizzando scapy. Qualcuno sa dove posso trovare l'RSSI o l'intensità del segnale (in dBm) dai pacchetti annusati con lo scapy? Non so come sia costruito l'intero pacchetto - e ci sono molti valori "hex" che non so come analizzare/interpretare.

Sto sniffando su entrambe le interfacce: wlan0 (che rileva quando qualcuno si connette al mio hotspot) e mon.wlan0 (che rileva quando qualcuno cerca hotspot). Hardware (scheda WiFi) L'utilizzo è basato sul chipset Prism (ISL3886). Comunque il test con Kismet è stato eseguito su Atheros (AR2413) e Intel iwl4965.

Edit1:

Sembra che ho bisogno di accedere in qualche modo le informazioni memorizzate in PrismHeader: http://trac.secdev.org/scapy/browser/scapy/layers/dot11.py linea 92?

Qualcuno sa come inserire queste informazioni? packet.show() e packet.show2() non mostrano nulla da questa classe/Layer

Edit2:

Dopo più di scavo sembra che l'interfaccia semplicemente non è impostato correttamente e questo è il motivo per cui non raccoglie tutte le intestazioni necessarie. Se corro Kismet e poi annusare i pacchetti da che si interfacciano con Scapy c'è più informazioni nel pacchetto:

###[ RadioTap dummy ]### 
    version= 0 
    pad= 0 
    len= 26 
    present= TSFT+Flags+Rate+Channel+dBm_AntSignal+Antenna+b14 
    notdecoded= '8`/\x08\x00\x00\x00\x00\x10\x02\x94\t\xa0\x00\xdb\x01\x00\x00' 
    ... 

Ora ho solo bisogno di impostare l'interfaccia in modo corretto senza utilizzare Kismet.

risposta

2

In sintesi:

  • potenza del segnale non era visibile perché qualcosa non andava nel modo in cui 'modalità monitor' stato impostato (non sono state approvate/analizzato da sniffer tutte le intestazioni). Questa interfaccia del monitor è stata creata da hostapd.

  • ora sto impostando la modalità monitor sull'interfaccia con airmon-ng - tcpdump, scapy mostra le intestazioni extra.

+0

Tutti gli aggiornamenti? sei riuscito a ottenere i valori RSSi? – alandalusi

+4

Sì, lo ero. È "nascosto" nella parte non codificata del pacchetto. Lo sto estraendo con: 'sig_str = - (256-ord (packet.notdecoded [-4: -3]))' – kaczor1984

+0

@ kaczor1984 Ho provato: 'sig_str = - (256-ord (packet.notdecoded [ -4: -3])) 'e ottengo valori come -69, -79, -81 ecc. Come interpreti questi valori? – zengr

0

Il fatto che si dice "RadioTap" suggerisce che il dispositivo può fornire Radiotap headers, non le intestazioni Prism, anche se ha un chipset Prism. The p54 driver sembra essere un "driver SoftMAC", nel qual caso probabilmente fornirà intestazioni Radiotap; stai usando il driver p54 o il vecchio driver prism54?

4

Ecco una preziosa estensione di scapy che migliora l'analisi di scapy.layers.dot11.Packet dei campi presenti non decodificati.

https://github.com/ivanlei/airodump-iv/blob/master/airoiv/scapy_ex.py

Basta usare:

import scapy_ex 

E:

packet.show() 

Sarà simile a questa:

###[ 802.11 RadioTap ]### 
    version = 0 
    pad  = 0 
    RadioTap_len= 18 
    present = Flags+Rate+Channel+dBm_AntSignal+Antenna+b14 
    Flags  = 0 
    Rate  = 2 
    Channel = 1 
    Channel_flags= 160 
    dBm_AntSignal= -87 
    Antenna = 1 
    RX_Flags = 0 
+1

È consigliabile clonare il repository git ed eseguire 'import scapy_ex' dalla directory airoiv in quanto vi sono altri file dipendenti richiesti solo da scapy_ex.py (ad esempio printer.py). Quindi funziona bene. – Pierz

0

ho problema simile, ho creato il monitor mo de con airmon-ng e posso vedere il livello di dBm in tcpdump ma ogni volta che provo il sig_str = -(256-ord(packet.notdecoded[-4:-3])) ottengo -256 perché il valore restituito da notdecoded in 0. La struttura del pacchetto si presenta così.

version = 0 
pad  = 0 
len  = 36 
present = TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext 
notdecoded= ' \x08\x00\x00\x00\x00\x00\x00\x1f\x02\xed\x07\x05 
....... 
1

Per qualche motivo la struttura del pacchetto è cambiata. Ora dBm_AntSignal è il primo elemento in notdecoded.

Non sono sicuro al 100% di questa soluzione, ma ho utilizzato sig_str = -(256 - ord(packet.notdecoded[-2:-1])) per raggiungere il primo elemento e ottengo valori che sembrano essere dBm_AntSignal.

Sto utilizzando OpenWRT in un TP-Link MR3020 con estroot e il progetto di monitoraggio passivo Wifi Edward Keeble con alcune modifiche.

utilizzare scapy_ex.py e ho avuto questa informazione:

802.11 RadioTap 

    version = 0 

    pad  = 0 

    RadioTap_len= 36 

    present = dBm_AntSignal+Lock_Quality+b22+b24+b25+b26+b27+b29 

    dBm_AntSignal= 32 

    Lock_Quality= 8