Olá, pessoal! Meu nome é Alexey, e continuo explorando as tecnologias sem fio. Da última vez, configuramos o Wi-Fi no OpenWrt para máxima estabilidade e cobertura. Hoje, quero falar sobre outro tópico igualmente fascinante: o monitoramento do espectro sem fio usando o lendário roteador TP-Link MR3020. Muitos dirão: "Por que eu preciso disso? Tudo já funciona para mim." E eu responderei: as possibilidades que se abrem podem surpreender. Vamos direto ao ponto.
Por que monitorar o espectro?
Existem muitos cenários, e nem sempre estão relacionados à segurança (embora também envolvam segurança).
-
Geofencing e análise de visitantes: Imagine que você é proprietário de um pequeno café, loja ou coworking. Você precisa entender quantas pessoas entram durante o dia, quais são os horários de pico e quanto tempo elas permanecem. Ao instalar um roteador com OpenWrt no modo monitor na entrada, você pode contar passivamente dispositivos únicos (smartphones, laptops) dentro do alcance. Isso fornece uma compreensão do tráfego real de visitantes – sem câmeras, apenas com base na presença de dispositivos Wi-Fi. Os dados podem ser agregados em CSV e criar gráficos – ideal para marketing e planejamento de pessoal.
-
Escolha de um canal ocupado, mas menos utilizado para o seu ponto de acesso: O caso mais comum: você mora em um prédio de apartamentos, o espectro está cheio de roteadores de vizinhos, a velocidade cai, os pacotes são perdidos. Ao executar o monitoramento por algumas horas, você obterá uma imagem objetiva da carga do canal e poderá escolher aquele com menos concorrentes transmitindo. Ou seja, programas simples para monitorar Wi-Fi podem mostrar canais ocupados, mas não conseguem entender o quão ativamente os canais ocupados são usados.
-
Diagnóstico de problemas de sua rede: A velocidade caiu? A conexão está desaparecendo? O monitoramento mostrará se alguém dos vizinhos congestionou o canal, se novos pontos de acesso poderosos apareceram ou se há interferência oculta. Você verá o nível do sinal, o número de retransmissões, quadros CTS – tudo o que é necessário para uma análise de engenharia real.
-
Marketing Wi-Fi radar - era popular antes, mas não agora: Anteriormente (5 a 7 anos atrás), era popular um método de identificação de visitantes por endereço MAC para exibir publicidade direcionada: uma pessoa entrava em um shopping center, seu telefone "aparecia" no ar, o sistema memorizava o MAC e, em seguida, podia mostrar publicidade para ele nas redes sociais. Mas agora os smartphones (iOS e Android) usam a randomização de endereços MAC – a cada varredura de redes, o telefone é substituído por um MAC virtual diferente. Portanto, identificar com segurança um dispositivo específico por MAC tornou-se quase impossível. No entanto, para uma estimativa aproximada do fluxo (quantos clientes únicos por unidade de tempo), a randomização não é assustadora – não contamos uma pessoa específica, mas o número de dispositivos ativos, e a margem de erro é aceitável.
O que usaremos
Eu usarei um roteador TP-Link MR3020 antigo, mas bastante bem-sucedido. Sim, ele tem apenas um rádio de 2,4 GHz, mas pode ser usado em conjunto com um power bank e carregado com você.
- OpenWrt
- USB-drive - ele pode ser montado e os logs podem ser salvos nele. Eu me preocupei e transferi o sistema de arquivos para um pendrive. Assim, obtendo espaço adicional para instalar pacotes.
- Um pouco de paciência e mãos firmes.
Todo o roteador funcionará como um sensor passivo - ele não transmite nada, apenas ouve. Essencialmente, não é um ponto de acesso, mas um rádio-sniffer.
Passo 1. Configurando /etc/config/wireless para o modo monitor
Primeiro, vamos garantir que a interface Wi-Fi esteja no modo monitor. Não vou descrever a instalação do OpenWrt - este é um tópico separado. Vamos supor que você já tenha um sistema em execução.
Abrimos o config:
bashvi /etc/config/wireless
Provavelmente, você tem uma seção do tipo wifi-device (por exemplo, radio0) e uma ou mais wifi-iface. Precisamos criar uma interface separada no modo monitor. Não toque nas existentes se precisar delas para distribuir a Internet - basta adicionar uma nova seção (Às vezes, você precisa deixar apenas um wifi-iface. Mas, em seguida, certifique-se de que o roteador possa ser conectado através do conector LAN):
config wifi-iface
option device 'radio0'
option mode 'monitor'
option ifname 'mon0'
option hidden '1'
Onde:
device- o nome do seu rádio.mode 'monitor'- habilita o modo monitor.ifname 'mon0'- o nome da interface criada (qualquer um pode ser).hidden '1'- apenas o esconde de olhares indiscretos.
Após salvar, aplicamos:
bashwifi reload
E verificamos se a interface apareceu:
bashifconfig mon0
Se você viu algo como o seguinte, então está tudo bem:
Passo 2. Instalando airodump-ng - um clássico do gênero
airodump-ng faz parte do pacote aircrack-ng, que está nos repositórios OpenWrt. Ele não apenas captura pacotes, mas também exibe uma tabela de redes e clientes em tempo real.
bashopkg update opkg install aircrack-ng
Execução e opções básicas
A execução mais simples:
bashairodump-ng mon0
Você verá duas tabelas:
- A superior - todos os pontos de acesso detectados (BSSID, canal, nível de sinal, criptografia, SSID).
- A inferior - clientes (seu MAC, ponto associado, potência).
Para salvar em um arquivo, usamos a chave -w:
bashairodump-ng -w /mnt/usb/capture --output-format csv mon0
Formatos de saída airodump-ng
A utilidade pode salvar dados em diferentes formatos. Gerenciado pela flag --output-format (ou -o). Vamos considerar os mais úteis.
- CSV (o mais conveniente para análise)
Cria um arquivo .csv, que pode ser aberto no Excel, Google Sheets ou importado para um banco de dados. Estrutura: primeiro linhas com pontos de acesso, depois através de uma linha vazia - linhas com clientes. É este formato que eu uso para coletar estatísticas de atendimento.
- PCAP (para análise profunda)
Arquivo .cap ou .pcap - são quadros 802.11 "brutos" com cabeçalhos radiotap. Pode ser aberto no Wireshark e analisar cada pacote. Ocupa muito espaço, mas fornece o máximo de informações.
- IVS (apenas para WEP)
Arquivo .ivs - salva apenas vetores de inicialização. Inútil para redes WPA/WPA2 modernas, deixe para nostalgia.
Meu conselho: para coleta de estatísticas de longo prazo, use apenas csv. É leve, estruturado e contém tudo o que você precisa. Para diagnóstico pontual de problemas - inclua pcap por um curto período de tempo.
Às vezes, você pode coletar dados pcap usando o bom e velho tcpdump. Ele faz exatamente uma coisa, mas a faz perfeitamente - captura pacotes e os grava em um arquivo. Nenhuma análise desnecessária, sobrecarga mínima. O processador quase não carrega, a memória não come.
Instalação
bashopkg install tcpdump
Se você quiser uma versão mínima (um pouco menor em tamanho), há um pacote tcpdump-mini, mas ele entra em conflito com o completo. Eu expandi o sistema de arquivos do roteador para o conjunto de um pendrive, então posso me dar ao luxo de instalar o completo.
Captura
bashtcpdump -i mon0 -s 0 -W 10 -G 3600 -C 100 -w /mnt/usb/capture_%Y%m%d_%H%M%S.pcap
-i mon0- interface.-s 0- capturar o pacote inteiro.-w- gravar em um arquivo.-W 10- armazenar não mais que 10 arquivos (gravação cíclica).-G 3600- a cada 3600 segundos (1 hora) criar um novo arquivo.-C 100- limitar o tamanho do arquivo a 100 MB.%Y%m%d_%H%M%S- carimbo de data/hora no nome do arquivo.
Com tal comando, você pode monitorar por semanas sem medo de sobrecarregar o pendrive. Arquivos antigos serão sobrescritos.
O que há dentro do arquivo pcap?
Abra o dump em formato de texto (ou através do Wireshark). Ou você pode convertê-lo previamente em txt usando o mesmo tcpdump.
Tipos de quadros (breve educação)
- Beacon - farol do ponto de acesso. Contém SSID, velocidades suportadas, canal, criptografia. Periodicidade ~100 ms. Pelo número de Beacons, você pode estimar quantos APs estão transmitindo no canal.
- Probe Request / Probe Response - o cliente está procurando uma rede; AP responde. Usado para detectar SSIDs ocultos.
- Data - dados do usuário. Criptografado (IV, KeyID). Você não lerá o conteúdo, mas verá o fato da transmissão.
- Acknowledgment (ACK) - confirmação de recebimento do quadro. Cada quadro de dados (exceto transmissões) gera ACK. Muitos ACK → troca ativa.
- Clear-To-Send (CTS) - permissão para transmitir (parte de RTS/CTS). Se houver muitos CTS no ar, significa que há colisões ou estações ocultas.
- Block Acknowledgment (BA) - confirmação para quadros agregados (802.11n/ac). Sinal de modo de alta velocidade.
Como usar esses dados na prática?
- Avaliação da carga do canal
Conte o número de quadros de dados por minuto em uma determinada frequência. Quanto maior, maior a carga. Compare com o número de ACK - eles devem ser aproximadamente iguais (sem contar repetições).
- Detecção de interferência
Se houver muitos CTS e BA no canal, mas poucos dados, significa que o ar está sobrecarregado ou há estações ocultas. Os roteadores são forçados a reservar tempo, reduzindo a taxa de transferência útil.
- Detecção de redes ocultas
Na coluna Probed ESSIDs, os clientes podem ter nomes de redes que não estão na tabela superior. Estas são redes ocultas que não transmitem Beacon, mas os clientes as procuram ativamente. A propósito, por esta opção, você pode identificar os clientes com um pouco mais de precisão, mesmo levando em consideração a randomização de MACs.
- Monitorando a "saúde" do seu ponto de acesso
Se você vir muitas retransmissões (retries) ou muitos CTS incomuns do seu BSSID, pode haver problemas com sua antena ou forte interferência.
Auto-execução
Para que o monitoramento seja iniciado automaticamente imediatamente após a inicialização do roteador, você pode criar uma tarefa correspondente no cron ou adicionar um script de inicialização em /etc/rc.local
bash#!/bin/sh # Damos ao sistema tempo para inicializar (60 segundos devem ser suficientes) sleep 60 # Pasta onde o pendrive está montado, eu tenho todo o sistema de arquivos # no pendrive, então eu apenas escrevo /root MOUNT_POINT="/root" # Nome base para arquivos OUTPUT_FILE="${MOUNT_POINT}/wifi_24_capture" # Matamos os processos airodump-ng antigos (eles não devem estar lá após a inicialização do roteador) # mas de repente você decide executar o script manualmente killall airodump-ng # Iniciamos airodump-ng em segundo plano com gravação em um arquivo CSV airodump-ng mon1 -w "$OUTPUT_FILE" --output-format csv --write-interval 60
O principal detalhe: não se esqueça de adicionar sleep 60 antes de iniciar o monitoramento para que todas as interfaces tenham tempo de subir.
P.S.
Eu tenho alguns casos de uso desta coisa para contar a análise de tráfego e a eficácia de um ponto de venda (quantas pessoas passaram, quantas entraram, quanto tempo ficaram, etc.) e outro - para análise detalhada de tráfego. Se alguém estiver interessado, escreva-me nos comentários e prepararei um artigo sobre este tópico.





