{"id":29640782,"url":"https://github.com/sans-script/esp32_wifi_captive_portal","last_synced_at":"2025-07-21T21:05:13.949Z","repository":{"id":302748569,"uuid":"1007697945","full_name":"sans-script/esp32_wifi_captive_portal","owner":"sans-script","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-04T02:27:20.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-04T03:28:33.879Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sans-script.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-24T11:48:07.000Z","updated_at":"2025-07-04T02:27:24.000Z","dependencies_parsed_at":"2025-07-04T03:33:26.101Z","dependency_job_id":"13be1be6-2593-4e3a-a8d5-2e92aa40287d","html_url":"https://github.com/sans-script/esp32_wifi_captive_portal","commit_stats":null,"previous_names":["sans-script/esp32_wifi_captive_portal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sans-script/esp32_wifi_captive_portal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sans-script%2Fesp32_wifi_captive_portal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sans-script%2Fesp32_wifi_captive_portal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sans-script%2Fesp32_wifi_captive_portal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sans-script%2Fesp32_wifi_captive_portal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sans-script","download_url":"https://codeload.github.com/sans-script/esp32_wifi_captive_portal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sans-script%2Fesp32_wifi_captive_portal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266379309,"owners_count":23920157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-21T21:05:03.731Z","updated_at":"2025-07-21T21:05:13.940Z","avatar_url":"https://github.com/sans-script.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Portal Cativo WiFi\n\nEste projeto implementa um portal cativo WiFi usando ESP32 que simula um sistema de autenticação com funcionalidades avançadas de monitoramento e configuração.\n\n## Principais Funcionalidades\n\n### 🔧 Configuração Dinâmica\n\n- **SSID Personalizável**: Altere o nome da rede WiFi através do dashboard web\n- **Persistência**: Configurações salvas no SPIFFS, mantidas após reinicialização\n- **Interface Simples**: Formulário web para alteração com validação\n\n### 📊 Dashboard Web\n\n- **Estatísticas em Tempo Real**: Monitoramento de acessos, IPs únicos, tentativas de login\n- **Logs de Atividade**: Histórico detalhado de todas as interações (oculto no mobile)\n- **Controle Remoto**: Limpeza de dados e configurações via web\n- **Design Terminal**: Interface estilo hacker com animações Matrix\n- **Responsivo**: Interface otimizada para mobile com seções simplificadas\n\n### 🖥️ Display TFT ST7735\n\n- **Informações ao Vivo**: SSID atual, IP, uptime, estatísticas\n- **Atualização Automática**: Reflete mudanças de configuração instantaneamente\n- **Design Otimizado**: Interface colorida com dados organizados\n- **Performance**: 60 FPS com atualizações inteligentes\n- **SSID Inteligente**: Truncagem automática para SSIDs longos (máx. 15 chars)\n\n## Funcionalidades de LEDs\n\n### LEDs Utilizados:\n\n- **LED Verde (Pino 2)**: Indica que o sistema está ligado (sempre aceso)\n- **LED Azul (Pino 4)**: Indicador de atividade de navegação\n  - **Apagado**: Quando ninguém está navegando (estado padrão)\n  - **Piscada (500ms)**: Quando usuário navega pelas páginas de login e sucesso\n  - Para temporariamente durante o efeito sonoro/visual de login recebido\n- **Buzzer (Pino 12)**: Efeito sonoro quando login é recebido\n\n### Comportamento dos LEDs:\n\n1. **Sistema iniciado**: LED verde aceso + LED azul apagado (aguardando navegação)\n2. **Usuário acessa página de login**: LED azul pisca a cada 500ms\n3. **Navegação ativa**: LED continua piscando enquanto há atividade\n4. **Login recebido**:\n   - LED azul para de piscar temporariamente\n   - Executa sequência de efeitos (som + piscar específico)\n   - Retorna à piscada (usuário na página de sucesso)\n5. **Inatividade (5 segundos)**: LED azul apaga automaticamente\n6. **Recursos estáticos**: Não iniciam piscada (CSS, JS, imagens)\n\n## Como Usar\n\n### 1. Configuração Inicial\n\n1. Compile e faça upload do código para o ESP32\n2. O sistema iniciará com SSID padrão \"FUMA\"\n3. Conecte-se à rede WiFi (sem senha)\n\n### 2. Alterar Nome da Rede (SSID)\n\n1. Acesse o dashboard em `http://192.168.4.1/data`\n2. Na seção \"CONFIGURATION\", insira o novo nome da rede\n3. Clique em \"[UPDATE SSID]\"\n4. Confirme a alteração (o ESP32 reiniciará automaticamente)\n5. Reconecte-se à nova rede\n\n### 3. Monitoramento\n\n- **Display TFT**: Visualize estatísticas em tempo real\n- **Dashboard Web**: Acesse logs detalhados e controles\n- **LEDs**: Monitore atividade visual\n\n## Interface Responsiva\n\n### 💻 **Desktop**\n\n- **Seções completas**: Configuração, logs de atividade, credenciais capturadas, zona de perigo\n- **Layout expandido**: Todas as funcionalidades visíveis\n- **Tabelas detalhadas**: User agents, timestamps, IPs completos\n\n### 📱 **Mobile**\n\n- **Interface simplificada**: Apenas configuração e estatísticas\n- **Seções ocultas**: Activity logs, captured credentials e danger zone\n- **Layout otimizado**: Textos menores e interface limpa\n- **Foco na função**: Alteração de SSID e monitoramento básico\n\n## Estrutura de Arquivos\n\n- `wifi_captive_portal.ino` - Arquivo principal\n- `config.h` - Configurações de hardware e rede\n- `display.h` - Controle do display TFT ST7735\n- `server_handlers.h` - Handlers HTTP e dashboard\n- `utils.h` - Funções utilitárias e gerenciamento de SSID\n- `webpages.h` - Páginas HTML do portal\n\n## Hardware Necessário\n\n- ESP32 DevKit V1\n- Display TFT ST7735 (128x160)\n- LEDs (verde e azul)\n- Buzzer\n- Resistores apropriados\n- Breadboard e jumpers\n\n## Pinout\n\n```\nDisplay TFT ST7735:\n- SCLK: Pino 14\n- MOSI: Pino 27\n- RST:  Pino 26\n- DC:   Pino 25\n- CS:   Pino 33\n- BLK:  Pino 32\n\nLEDs e Buzzer:\n- LED Verde: Pino 2\n- LED Azul:  Pino 4\n- Buzzer:    Pino 12\n```\n\n## Recursos Técnicos\n\n- **SPIFFS**: Sistema de arquivos para persistência de dados\n- **AsyncWebServer**: Servidor web assíncrono de alta performance\n- **DNS Server**: Redirecionamento automático para o portal\n- **Logs Estruturados**: Sistema de logging com timestamps\n- **Validação de Entrada**: Proteção contra dados inválidos\n\n\u003e [!WARNING]\n\u003e Este projeto é destinado exclusivamente para fins educacionais e de pesquisa. Use com responsabilidade e apenas em redes próprias.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsans-script%2Fesp32_wifi_captive_portal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsans-script%2Fesp32_wifi_captive_portal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsans-script%2Fesp32_wifi_captive_portal/lists"}