2012-05-30 8 views
5

Estoy tratando de obtener RSSI o intensidad de señal de paquetes de WiFi. También quiero RSSI de 'solicitudes de sonda WiFi' (cuando alguien está buscando un punto de acceso WiFi).Scapy - recuperación de RSSI de paquetes WiFi

Pude verlo desde registros de kismet, pero eso solo fue para asegurarme de que es posible, no quiero usar kismet todo el tiempo.

Para 'escanear a tiempo completo' Estoy usando scapy. ¿Alguien sabe dónde puedo encontrar el RSSI o la potencia de la señal (en dBm) de los paquetes olfateados con Scapy? No sé cómo se construye todo el paquete, y hay muchos valores "hexadecimales" que no sé cómo analizar/interpretar.

Estoy olfateando en ambas interfaces: wlan0 (detecta cuando alguien se conecta a mi punto de acceso) y mon.wlan0 (detecta cuando alguien está buscando zonas interactivas). Hardware (tarjeta WiFi) que uso está basado en el chipset Prism (ISL3886). Sin embargo, la prueba con Kismet se ejecutó en Atheros (AR2413) e Intel iwl4965.

Edit1:

Parece que necesito para acceder a la información almacenada en PrismHeader alguna manera: http://trac.secdev.org/scapy/browser/scapy/layers/dot11.py la línea 92?

¿Alguien sabe cómo ingresar esta información? packet.show() y packet.show2() no muestran nada de esta clase/Capa

Edit2:

Después de más de excavación, parece que la interfaz no está configurado correctamente y es por eso que no recoge todos los encabezados necesarios. Si me quedo kismet y luego olfateo de paquetes que se interconectan con scapy hay más información en el paquete:

###[ 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' 
    ... 

Ahora solo necesita ajustar correctamente la interfaz sin necesidad de utilizar Kismet.

Respuesta

2

En resumen:

  • intensidad de la señal no era visible porque algo estaba mal en la forma en que se estableció el "modo monitor (no se aprobaron/analizada por los rastreadores de todas las cabeceras). Esta interfaz del monitor fue creada por hostapd.

  • ahora estoy configurando el modo de monitor en la interfaz con airmon-ng - tcpdump, scapy muestra estos encabezados adicionales.

+0

Todas las actualizaciones? ¿Pudiste obtener los valores RSSi? – alandalusi

+4

Sí, lo era. Está 'oculto' en la parte no codificada del paquete. Lo estoy extrayendo con: 'sig_str = - (256-ord (packet.notdecoded [-4: -3]))' – kaczor1984

+0

@kaczor1984 Intenté: 'sig_str = - (256-ord (paquete.notdecoded [ -4: -3])) 'y obtengo valores como -69, -79, -81, etc. ¿Cómo interpretas estos valores? – zengr

0

El hecho de que se dice "RadioTap" sugiere que el dispositivo puede suministrar Radiotap headers, no cabeceras Prism, a pesar de que tiene un chipset Prism. The p54 driver parece ser un "controlador SoftMAC", en cuyo caso probablemente proporcionará encabezados Radiotap; ¿está utilizando el controlador p54 o el controlador prism54 anterior?

4

Aquí hay una valiosa extensión scapy que mejora el análisis scapy.layers.dot11.Packet de los campos presentes no decodificados.

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

sólo tiene que utilizar:

import scapy_ex 

Y:

packet.show() 

Se verá así:

###[ 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

Lo mejor es clonar el git repo y ejecutar el 'import scapy_ex' del directorio de airoiv ya que hay otros archivos dependientes requeridos solo por scapy_ex.py (por ejemplo, printer.py). Entonces funciona bien. – Pierz

0

tengo problema similar, configuro el monitor mo de con airmon-ng y puedo ver el nivel de dBm en tcpdump, pero cada vez que pruebo el sig_str = -(256-ord(packet.notdecoded[-4:-3])) obtengo -256 porque el valor devuelto de notdecoded en 0. La estructura de paquetes tiene este aspecto.

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

Por alguna razón, la estructura del paquete ha cambiado. Ahora dBm_AntSignal es el primer elemento en notdecoded.

No estoy 100% seguro de esta solución pero utilicé sig_str = -(256 - ord(packet.notdecoded[-2:-1])) para llegar al primer elemento y obtengo valores que parecen ser dBm_AntSignal.

Estoy usando OpenWRT en un TP-Link MR3020 con extroot y el proyecto de monitoreo pasivo de Edward Keeble Wifi con algunas modificaciones.

usar scapy_ex.py y tuve esta información:

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