Executando verificação de segurança...
2

Desenvolvi o PacketShield: Um monitor de rede para Windows com bloqueios por app

Screenshot da UI principal

Site oficial

Olá, comunidade TabNews! Sou dev e recentemente criei o PacketShield, uma ferramenta gratuita para monitorar e controlar o tráfego de rede no Windows. Inspirado em apps como TinyShield (pra Mac) ou Little Snitch, mas focado no ecossistema Windows, ele ajuda a ver o que seus apps estão fazendo online, bloquear domínios/apps devoradores de banda e otimizar o uso de internet. Quero compartilhar o processo de build aqui, como forma de build in public, e pedir feedback de vocês — quem sabe não vira uma collab?

Por Que Criei Isso?

Trabalho remoto, jogos online e apps background me fizeram perder o controle da rede várias vezes. Ferramentas como Wireshark são poderosas, mas complexas pra uso diário. Firewalls nativos do Windows são básicos. Queria algo simples, leve e com UI moderna: monitore por app/processo, veja domínios recentes, aplique bloqueios persistentes e tenha gráficos rápidos. Como dev .NET/React, resolvi buildar do zero.

Comparado ao TinyShield (que é pago e Mac-only), o PacketShield é grátis, Windows-specific, com histórico de 1h e API local pra extensões. Preenche uma lacuna pra quem migra de Mac ou quer algo personalizado.

Arquitetura e Tech Stack

O app é dividido em três partes pra modularidade e performance:

  • PacketShield.Service (Windows Service em .NET 8):

    • Captura conexões via IP Helper API (GetExtendedTcp/UdpTable) e estima bytes por app a cada ~1s.
    • Bloqueios via Windows Filtering Platform (WFP) na camada ALE_AUTH_CONNECT, com fallback pro Firewall nativo.
    • Agrupa tráfego por executável, resolve domínios/IPs e mantém histórico de 1h pra gráficos/top apps.
    • Persistência em SQLite (Dapper): regras, logs, apps e settings.
    • API HTTP local (localhost:5180) pra expor dados à UI: stats, histórico, regras (CRUD/import/export).
  • PacketShield.Core: Models compartilhados (AppModel, Rule, TrafficLog) e repo SQLite.

  • PacketShield.UI (Tauri + React/Vite):

    • Janela principal: Lista apps ativos (nome, exe, domínios, tráfego), bloqueios rápidos, regras e settings.
    • Popup no tray: Gráfico de upload/download (1h, buckets de 5s via Recharts) + top 10 apps.
    • Features: Idioma (EN/PT-BR), dark mode, auto-start, toggle histórico.
    • Tech: Tailwind, Zustand, Lucide-React, tauri-plugin-positioner pra ancorar o popup.

Aqui um diagrama simples da arquitetura:

graph TD
    A[UI Tauri/React] --> B[API Local HTTP]
    B --> C[Service .NET]
    C --> D[SQLite DB]
    C --> E[WFP/Firewall + IP Helper]

Código de exemplo (do serviço capturando tráfego):
public class NetworkCaptureWorker : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _networkCapture.CaptureNetworkData();
            await Task.Delay(1000, stoppingToken);
        }
    }
}

Funcionalidades em Detalhe

  • Monitoramento Contínuo: Bytes por app/processo, com domínios resolvidos. Apps inativos somem da lista.
  • Bloqueios Inteligentes: Por app ou domínio, persistentes no boot. WFP pra eficiência, fallback pra compatibilidade.
  • Análises Rápidas: Histórico de 1h pra gráficos e top apps — toggleável pra modo lightweight.
  • UI Intuitiva: Tray icon pra quick view; janela com efeito acrylic, hide via X (mantém serviço rodando).
  • Personalização: Settings pra idioma, tema, auto-start. Reset de DB via API.

Fluxo típico:

  1. Serviço inicia e captura dados.
  2. UI consome API pra renderizar lista/gráficos.
  3. Bloqueie na UI → API grava regra → WFP aplica.
  4. Tray popup pra métricas instantâneas.

Vídeo demo: ex. bloqueando um app e vendo o gráfico atualizar

Desafios e Lições

  • Integração WFP: Foi tricky lidar com permissões admin; fallback ajudou.
  • Performance: Estimar bytes sem overhead — usei sampling de 1s.
  • Tauri: Ótimo pra desktop nativo, mas debug de tray no Windows deu trabalho.

Como Usar e Baixar

Baixe em https://packetshield.solrachix.com/. Instale o serviço, abra a UI e pronto! Testado no Windows 10/11.

Futuros planos: Suporte a mais filtros, export de logs, notificações de picos, e quem sabe expandir para Linux um dia.

O que acham? Já usaram algo similar? Sugestões pra features? Feedback nos comentários — vamos melhorar juntos! Se curtiu, upvote e compartilhe. 😊

Carregando publicação patrocinada...