Pular para o conteúdo
NovidadesIA

Repositórios em Alta

Bloqueador de anúncios estilo Pi-hole roda em chip de dois dólares sem memória PSRAM

Projeto armazena centenas de milhares de domínios na memória flash de microcontroladores de baixo custo para filtrar tráfego de rede gastando pouca energia.

Edição: Anderson Gomes
· 5 min de leitura

Bloqueador de anúncios estilo Pi-hole roda em chip de dois dólares sem memória PSRAM
Imagem: Cartão · repositório M-Abozaid/esp32-c3-adblock · cartão da plataforma · licença MIT

O esp32-c3-adblock é um bloqueador de anúncios por DNS criado pelo desenvolvedor M-Abozaid que transforma microcontroladores acessíveis em filtros de rede locais. O projeto ganhou tração recente após atrair 2.288 novas estrelas em curto período, resolvendo a barreira de custo e consumo elétrico de servidores dedicados tradicionais. A ferramenta executa o bloqueio de domínios diretamente em hardware de baixo custo, sem depender de módulos de memória RAM pseudoestática, conhecida pela sigla PSRAM.

Dados rápidos

  • Repositório: M-Abozaid/esp32-c3-adblock
  • Licença: MIT
  • Linguagem: C++
  • Estrelas e forks: 2.989 estrelas e 280 forks
  • Posição no ranking: não informado no repositório
  • Data da consulta: 2026-10-13

O gargalo de memória em microcontroladores

Sistemas tradicionais de bloqueio por DNS em nível de rede, chamados de sumidouros de DNS ou DNS sinkholes, recebem requisições de computadores locais e barram endereços vinculados a publicidade ou rastreadores antes que a conexão ocorra. Na maioria das implementações para placas de desenvolvimento, listas contendo centenas de milhares de domínios precisam ser carregadas em texto puro diretamente na memória de acesso aleatório, a RAM. Essa abordagem exige módulos externos de memória, encarecendo a placa e limitando a compatibilidade a circuitos mais caros.

O repositório esp32-c3-adblock contorna essa limitação ao deixar de processar cadeias de caracteres completas na memória volátil durante a execução contínua. Em vez disso, o sistema compacta os endereços proibidos em resumos numéricos de tamanho fixo gravados na memória flash do componente. Com essa técnica, o firmware consome cerca de 50 KB de RAM para operar, mantendo a resposta a consultas locais na faixa de dez milissegundos.

Funcionamento técnico e fluxo de instalação

O algoritmo utiliza funções matemáticas FNV-1a para transformar cada domínio em uma chave numérica de quarenta bits, o equivalente a cinco bytes. Esses valores ficam ordenados na partição de armazenamento permanente do chip, permitindo o uso de busca binária para checar cada chamada que chega via protocolo UDP. Caso ocorra uma correspondência positiva, o dispositivo devolve o endereço IP zero, neutralizando o tráfego indesejado antes de repassar as consultas legítimas para os servidores externos.

A preparação do dispositivo exige o utilitário PlatformIO e a conversão prévia das listas de regras através de um script auxiliar em Python. O processo envolve a gravação do código compilado e do sistema de arquivos contendo a tabela de hashes:

cp src/secrets.example.h src/secrets.h
python3 tools/build_blocklist.py data/blocklist.bin
pio run -t upload
pio run -t uploadfs
pio device monitor

Após o primeiro envio por cabo serial, o firmware ativa um portal cativo para configuração de rede sem fio e passa a aceitar atualizações de regras diretamente pelo ar, via Wi-Fi.

Cenários práticos de uso

  • Proteção direta em roteadores domésticos: o microcontrolador pode ser conectado diretamente na porta USB de roteadores convencionais, dispensando fontes de tomada extras e filtrando consultas de toda a residência.
  • Ambientes de Internet das Coisas: aplicação voltada a isolar dispositivos inteligentes que realizam telemetria constante ou contatam servidores de rastreamento sem consentimento direto do usuário.
  • Redes móveis em viagens: implementação em pequenos gabinetes portáteis para atuar como resolvedor de nomes privado ao compartilhar conexões em hotéis ou redes compartilhadas.
  • Laboratórios com restrição energética: substituição de computadores de placa única ligados ininterruptamente por um chip de baixíssimo consumo em watts.

Diferenças em relação a abordagens convencionais

Soluções amplamente conhecidas como Pi-hole demandam computadores completos com sistema operacional Linux para operar seus bancos de dados e interfaces gráficas. Projetos prévios que tentavam migrar essa tarefa para o ecossistema ESP32 precisavam de placas com chips de PSRAM de oito dólares, armazenando 141 mil domínios sob custo de dois megabytes e meio de memória RAM.

A estratégia de hash em flash desenvolvida no repositório faz essa mesma lista de 141 mil itens ocupar 0,67 MB de armazenamento fixo em uma placa ESP32-C3 básica sem PSRAM, estimada em dois dólares. Enquanto o método clássico de comparação de strings ocupa praticamente toda a RAM do chip, a busca indexada em flash requer cerca de dezoito leituras e preserva a memória livre, suportando bases ampliadas de até 537 mil domínios com registro de apenas uma colisão teórica de hash.

Limitações técnicas e cuidados de segurança

O projeto utiliza a licença MIT e possui código-fonte em C++, mas apresenta pontos de atenção quanto à infraestrutura e maturidade de desenvolvimento. As regras de bloqueio não aceitam expressões regulares complexas, curingas, modificadores dinâmicos ou regras cosméticas de folhas de estilo, comuns em extensões de navegadores. A compilação demanda versões atualizadas do PlatformIO, visto que pacotes antigos de distribuições Linux geram falhas de execução.

Existem 26 problemas abertos no repositório, criado em 2026-06-19 e com última alteração registrada em 2026-10-06. O painel administrativo exige a definição de credenciais no arquivo local de cabeçalho para proteger rotas de exclusão de dados e modificações de firmware na rede local. Por fim, a posição exata da ferramenta em rankings comparativos externos não foi informada no repositório.

Resumo rápido

  • Projeto: esp32-c3-adblock
  • Licença: MIT
  • Linguagem: C++
  • Estrelas: 2.989
  • Ranking: não informado no repositório
  • Risco principal: colisões pontuais de hash em listas muito grandes e ausência de suporte a regras complexas por expressões regulares

Fontes

  • Repositório no GitHub: https://github.com/M-Abozaid/esp32-c3-adblock
  • Última release: https://github.com/M-Abozaid/esp32-c3-adblock/releases/tag/blocklist
  • Homepage: sem site oficial
  • C++
  • MIT
  • Repositórios em Alta
  • GitHub Trending

Fonte: Repositório no GitHub · Como produzimos as matérias