Protocolos de camada MAC como WiFi/WLAN, Zigbee, Bluetooth e Ethernet são de primordial importância em aplicações IoT. WiFi/WLAN é uma das soluções sem fio mais utilizadas em automação residencial, agricultura inteligente, automação de escritório e IoT industrial. É altamente crítico que os controladores em dispositivos IoT identifiquem e se conectem às redes WiFi disponíveis e comuniquem pacotes de dados de maneira eficaz por meio de um canal seguro. O WiFi, apesar de ter um alcance limitado, oferece uma largura de banda incrível, de modo que até mesmo aplicativos como transmissão ao vivo podem ser facilmente hospedados em uma rede WiFi. Os aplicativos IoT baseados em WiFi precisam realizar uma coisa, quer exijam uma grande largura de banda ou não: detecção de WiFi.
Na engenharia de rede, um WiFi Sniffer é um analisador de rede projetado para capturar dados de pacotes na rede sem fio. Em aplicativos incorporados, raramente é necessário um WiFi Sniffer dedicado para monitorar uma rede WiFi. No entanto, algumas funcionalidades de um WiFi Sniffer geralmente precisam ser construídas em dispositivos IoT. Uma dessas funcionalidades é a identificação de redes WiFi disponíveis e a capacidade de conectar-se a um canal WiFi disponível. Neste artigo, examinaremos exatamente o que é um WiFi Sniffer. Por que isso é necessário em uma rede sem fio? Como a detecção de WiFi é usada em aplicativos incorporados? Como a detecção de WiFi pode ser implementada em portas MicroPython?
O que é um farejador de WiFi?
Um WiFi Sniffer é um dispositivo de escuta passivo que captura quadros de rede WiFi de um determinado canal WiFi no ar. Um Sniffer escuta apenas pacotes de rede WiFi de uma largura de banda específica dentro de sua faixa de capacidade de escuta. Atualmente, as redes WiFi usam apenas duas larguras de banda – 2,4 GHz e 5 GHz. A versão mais recente do WiFi, ou seja, WiFi 6E, usa uma largura de banda adicional de 6 GHz.
Um WiFi Sniffer dedicado especificamente implantado para monitorar a rede sem fio compartilha o mesmo canal que atua como meio de comunicação entre um ponto de acesso e os dispositivos da estação e continua capturando quadros sem fio para monitorar e registrar informações sobre o tráfego sem fio em um arquivo. Um WiFi Sniffer captura todos os frames comunicados entre um ponto de acesso WiFi e um dispositivo que atua como uma estação WiFi no mesmo canal, mas não processa frames nem responde à rede. Sniffers WiFi dedicados são necessários apenas nas aplicações IoT nas quais é importante garantir a conectividade sem fio da rede ou dados de grande largura de banda são frequentemente comunicados dentro da rede, como no caso de streaming de vídeo ou uma rede de sensores altamente ativa em grande escala.
Aplicações do sniffer WiFi
A detecção de WiFi é usada para verificar dispositivos em uma rede sem fio. Também configura procedimentos de conexão entre dispositivos da estação e pontos de acesso WiFi. Durante a implantação da rede, a detecção de WiFi é frequentemente usada para verificar a exatidão do quadro e garantir que os quadros sejam transmitidos no ar. O protocolo também é utilizado para confirmar a compatibilidade dos dispositivos com a rede WiFi. A detecção de WiFi é frequentemente usada para validação de rede e pré-certificação de dispositivos habilitados para WiFi. Por último, mas não menos importante, a detecção de WiFi também é usada para solucionar problemas de redes WiFi e dispositivos de estação dentro da rede.
Tipos de sniffer de WiFi
Existem dois tipos de farejadores de WiFi: baseados em software e dedicados. Os WiFi Sniffers baseados em software são aplicativos de software ou recursos integrados em um aplicativo projetado para detecção de WiFi. O driver do software precisa ser instalado em um adaptador WiFi para realizar a detecção. O software de detecção de WiFi muitas vezes pode ser incompatível com a plataforma de hardware pretendida. Um WiFi Sniffer dedicado é um adaptador WiFi com capacidade de detecção de WiFi integrada em seu software ou firmware.
Uso de WiFi Sniffer em microcontroladores embarcados
Os microcontroladores muitas vezes não são muito capazes em termos de atuar como um sniffer WiFi completo. No entanto, os microcontroladores habilitados para WiFi são frequentemente programados para executar algumas das funções de detecção de WiFi. Isto inclui identificar pontos de acesso WiFi e conectar outros dispositivos da estação na mesma rede, uma vez conectados. A funcionalidade de comunicação com uma rede WiFi para comunicação de dados pela Internet também é uma função de detecção de WiFi. A funcionalidade para redefinir e reconectar-se a uma rede WiFi é outra função de detecção de WiFi.
Sniffing de WiFi em portas MicroPython
A maioria das portas MicroPython possui WiFi integrado ou no chip. Esses microcontroladores já são adaptadores WiFi que podem se conectar a uma rede WiFi tanto como dispositivo de estação quanto como ponto de acesso. Felizmente, o módulo de rede do MicroPython foi desenvolvido para conectar e comunicar-se com uma rede WiFi. A classe WLAN do módulo de rede pode verificar o endereço MAC de todos os dispositivos conectados à rede WiFi. A mesma classe configura a porta como um ponto de acesso WiFi ou um dispositivo de estação.
Script MicroPython para detecção de WiFi
Você pode fazer upload do seguinte script MicroPython para qualquer porta MicroPython habilitada para WiFi. O script verifica as redes WiFi disponíveis e lista os endereços MAC dos dispositivos no intervalo.
O código
O código começa importando a classe WLAN do módulo WiFi. A seguir, o módulo ubinascii é importado para permitir a conversão de dados binários para o formato ASCII. Uma função scan_wifi é definida na qual o endereço MAC, o pacote WiFi e o bit de controle do pacote são recuperados. O bit de controle é usado para identificar o tipo de endereço MAC. Se o endereço MAC for válido, ele será impresso no console. Um objeto da classe WLAN é instanciado no código, e a função scan_wifi é chamada de função de retorno de chamada assim que um pacote de gerenciamento é recebido no modo promíscuo. O modo promíscuo de WiFi na porta é ativado chamando o método wlan.promiscuous . O modo promíscuo garante que cada pacote de dados transmitido seja recebido e lido pelo adaptador WiFi.