Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

386
Views
Linux WiFI AP: actualice la salida `iw dev wlan0 station dump` (tiempo inactivo)
  • Tengo una placa integrada Linux (3.14.36) que actúa como un punto de acceso WiFi.
  • El conjunto de chips WiFi no admite el modo de monitoreo.
  • Mi portátil (el cliente) está conectado a esta placa por WiFi
  • El WiFi AP actúa como un puente de red a otra computadora y no proporciona una dirección IP al cliente (el WiFi AP solo tiene la dirección MAC del cliente)

Quiero monitorear la intensidad de la señal de la conexión WiFi AP <-> Client y poder activar una "actualización" del valor de la intensidad de la señal.

Haciendo: iw dev wlan0 station dump me da:

 Station xx:xx:xx:xx:xx:xx (on wlan0) inactive time: 123820 ms // <-- The problem rx bytes: 10291 rx packets: 60 ... signal: -65 dBm // What I want to refresh ...

Entendí que la intensidad de la señal se actualiza cada vez que hay actividad en la red. (Entonces, en el ejemplo anterior, se actualizó hace 123 s).

¿Cómo puedo forzar una actualización de este valor? (Obligando al AP a enviar "algo" al cliente, por ejemplo) Sabiendo que la placa/controlador WiFi/dispositivo WiFi no es compatible con herramientas como iwconfig

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Para cualquiera que encuentre este hilo ahora:

Tuve este problema y mi solución fue hacer ping al dispositivo antes de hacer el volcado iw, por ejemplo

Obtenga la lista de direcciones MAC conectadas:

 iw dev wlan0 station dump | grep 'signal' | awk '{print $2}'

Luego obtenga la dirección IP de estas direcciones MAC (alternativamente, puede usar arp ) :

 ip neigh | grep 'ma:ca:dd:re:ss:ss' | awk '{print $1}'

Luego haga ping a cada uno de ellos:

 ping -c 1 'IP.address'

Luego obtenga la señal actualizada para esa dirección MAC

 iw dev wlan0 station get 'ma:ca:dd:re:ss:ss' | grep 'signal' | awk '{print $2}'

Envolví todo esto en un script de Python y parecía dar datos confiables.

over 4 years ago · Santiago Trujillo Report

0

Lo probaré:

Estás incrustado, así que supongo que tienes busybox . No tiene IP, pero puede usar arping (si este subprograma no está configurado en su compilación de busybox, cambie la configuración) para enviar algo pequeño e inútil que puede despertar la cosa. ¿Qué IP usar para tus solicitudes ARP? Bueno, parece que puedes usar una IP "ficticia".

Estoy ejecutando esto en una PC, pero tengo una caja ocupada con su arping, y uso una interfaz con cable, pero este es el concepto:

 jbm@sumo:~/sandbox/iw$ sudo busybox arping -w 1 -U -I eth0 0.0.0.0 ARPING to 0.0.0.0 from 192.168.1.66 via eth0 Sent 2 probe(s) (2 broadcast(s)) Received 0 reply (0 request(s), 0 broadcast(s))

Lo útil es que, a pesar de la IP "ficticia", puedo verificar con tcpdump que las solicitudes de arp realmente van por cable (o en el aire en su caso):

 jbm@sumo:~$ sudo tcpdump -i eth0 -v arp tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 10:42:20.111100 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 0.0.0.0 (Broadcast) tell sumo, length 28 10:42:21.111206 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 0.0.0.0 (Broadcast) tell sumo, length 28 ^C 2 packets captured 2 packets received by filter 0 packets dropped by kernel

Por lo tanto, enviar una solicitud ARP en su interfaz inalámbrica puede ser suficiente para "despertar" su conexión y actualizar su RSSI.

EDITAR:

Vea los usos y propiedades interesantes de IP 0.0.0.0 aquí:

https://en.wikipedia.org/wiki/0.0.0.0

EDITAR 2:

Reconsiderándolo, me di cuenta de que habrá un problema si su interfaz inalámbrica no tiene una IP. Lo cual, si no me equivoco, puede no ser necesariamente el caso en su configuración de puente. En tal caso, arping no tendrá una dirección de origen para construir sus paquetes de solicitud (ni sabrá cómo escuchar las respuestas) y fallará.

Pero puede crear su propio "arping mini-unidireccional", usando un socket AF_PACKET y construir su propio paquete de solicitud ARP con una dirección IP de origen ficticia/aleatoria. Será unidireccional porque la respuesta a su solicitud ARP falsificada, si la hay, iría a la IP de origen aleatoria que puede y preferiblemente no debería existir. Pero es el principio de simplemente despertar su conexión inalámbrica enviando "algo", que puede hacer el truco.

Para obtener inspiración sobre cómo codificar este "miniarping unidireccional", eche un vistazo a la implementación de busybox desde su udhcpc/udhcpd (es más simple que el applet de busybox de arping completo):

https://git.busybox.net/busybox/tree/networking/udhcp/arpping.c#n38

El parámetro from_ip es lo que desea falsificar. Puede usar su MAC real como from_mac , solo por el bien de la dignidad :-) Ni siquiera tiene que esperar una respuesta (línea de inicio 89), por lo que sería algo así como 50 líneas de código C + un poco principal si desea agregarle algunas opciones.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!