openwifi, a pilha WIFI de código aberto compatível com linux
Hoje em dia o uso de uma conexão WiFi é “quase essencial” na maioria dos dispositivos que requerem uma conexão com a internet, e quando funciona é ótimo, mas quando há problemas, muitas vezes eles não podem ser resolvidos porque o firmware é um binário de código fechado.
Até certo ponto seria compreensível que esse código não pudesse ser manipulado pelos usuários, já que a grande maioria deles nem precisaria interagir com o código. Mas, para quem gosta de mexer, essa parte pode ser interessante para alguns e por isso tem o espinho de poder interagir com o seu código.
É por isso que o projeto OpenWiFi visa oferecer uma implementação WiFi SDR (Rádio Definido por Software) código totalmente aberto compatível com Linux e rodando em hardware FPGA.
Sobre o OpenWifi
wi-fi aberto é desenvolvido como uma implementação aberta da pilha completa Wi-Fi 802.11a/g/n, a forma e modulação do sinal em que é configurado programaticamente (SDR, Software Defined Radio).
wi-fi aberto permite que você crie uma implantação totalmente controlada de todos os componentes de um dispositivo sem fio, incluindo camadas de baixo nível, em adaptadores sem fio convencionais implementados no nível de chip inacessível para auditoria.
wi-fi aberto usa a arquitetura SoftMAC, o que implica a implementação da pilha principal sem fio 802.11 (MAC alto) no lado do controlador e a presença de uma camada MAC baixa no lado do FPGA. A pilha sem fio ele usa o subsistema mac80211 fornecido pelo kernel do Linux.
A interação com o SDR é feita por meio de um controlador especial, e o componente de hardware pode ser construído com base nos transceptores universais (RF) FMCOMMS2/3/4, ADRV1CRR ou AD9361 da Xilinx FPGA e dispositivos analógicos. O custo da solução baseada no FPGA ZYNQ NH7020 é de 400 euros.
Da parte do Principais características do projeto destacam-se:
- Suporte completo para 802.11a/g/n. Planejamos oferecer suporte a 802.11ax.
- Largura de banda de 20 MHz e faixa de frequência de 70 MHz a 6 GHz.
- Modos de operação: Ad-hoc (rede do dispositivo cliente), ponto de acesso, estação e monitoramento.
- Implementação no lado do FPGA do protocolo da camada de enlace DCF (Função de Coordenação Distribuída) usando o método CSMA/CA.
- Parâmetros configuráveis de prioridade de acesso ao canal: duração RTS/CTS, CTS-to-self, SIFS, DIFS, xIFS, slot-time, etc.
- Intervalo de tempo baseado no endereço MAC.
- Largura de banda e frequência facilmente alteráveis: 2MHz para 802.11ah e 10MHz para 802.11p.
- Possibilidade de utilização como radar e detector de movimento em interiores.
- Gerenciamento através dos utilitários Linux usuais, como ifconfig e iwconfig, bem como um utilitário sdrctl especializado que funciona no netlink e permite controlar como o SDR funciona em um nível baixo (manipular registros, alterar configurações de intervalo de tempo, etc.).
- Largura de banda ao testar via iperf: 40~50 Mbps para TCP e 50 Mbps para UDP.
Sobre o projeto, vale ressaltar que recentemente o lançamento da versão 1.4 foi anunciado que fornece suporte para Raspberry PI OS 11.2 (baseado no Debian 11) e o kernel Linux com patches de Analog Devices.
Além disso, para pesquisadores de segurança, fornece a capacidade de executar testes para simular ataques de shard e krack e que a alteração do FPGA Vivado 2021.1 (baseado em ADI HDL 2021_r1) foi feita.
Outra mudança que se destaca é que adicionado suporte para novo hardware: sdrpi (HexSDR SDR em Raspberry Pi), antsdr_e200 (MicroPhase ADALM-PLUTO), neptunesdr (Zynq 7020 + AD9361) e PYNQSDR (PYNQ-Z1 + AD936X).
Também nesta nova versão uma imagem de cartão SD genérica é fornecida para dispositivos de 32 bits e 64 bits, bem como a separação do código-fonte para FPGA (openwifi-hw) e os arquivos bitstream para FPGA (openwifi-hw-img) foi realizada e o trabalho foi fornecido no modo loopback.
Finalmente, se você estiver interessado em saber mais sobre isso, você deve saber que o código dos componentes de software, assim como os diagramas e descrições dos blocos de hardware em linguagem Verilog para FPGA, são distribuídos sob a licença AGPLv3 e você pode consultá-los no link a seguir.
Como observação adicional, é importante que você verifique se está acessando o projeto correto, pois existe outro projeto com o mesmo nome que está atualmente em sua versão 2.7, mas é totalmente diferente daquele de que estamos falando aqui. É por isso que se recomenda que acedam a partir do link que partilhamos.