# Changelog [English](CHANGELOG.md) · **Português** Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/); versões seguem SemVer. ## [1.0.2] - 2026-10-30 ### Corrigido - O build do app desktop no CI procurava o pacote em `target/`, mas o diretório do Cargo no runner é outro e persiste entre execuções; os jobs de Linux e Windows falhavam antes de publicar qualquer coisa. Por isso o app desktop da `v1.0.1` nunca foi publicado — use a `v1.0.2`. ## [1.0.1] - 2026-10-30 O projeto saiu do GitHub para o Gitea, e a verificação de atualização foi junto. ### Alterado - **As atualizações agora vêm do Gitea.** O `sabia update` e o "Atualizar agora" do app desktop leem a última release em `git.lucasrguerra.dev.br`, e não mais a API do GitHub. As versões até a 1.0.0 ainda olham o GitHub, que não responde mais, e por isso não enxergam esta release: baixe a 1.0.1 uma vez, e as próximas atualizações são automáticas. - Pacotes da release: o CLI para Linux x86_64 e aarch64 (compilado pelo CI do Gitea quando uma tag `v*` é enviada, com um `.sha256` ao lado de cada pacote) e o app desktop para Linux (`.AppImage`, `.deb`) e Windows (instalador NSIS `.exe`, compilado a partir do Linux pelo `scripts/build-gui.sh`). **Não há mais CLI para Windows nem build para macOS**: o CLI é só para Linux, e o macOS exige o SDK e a assinatura da Apple, que o CI deste projeto não tem. ### Corrigido - O `sabia update` se recusa a rodar a partir do executável do app desktop (`sabia-gui`). O pacote da release contém o CLI, e trocar o app por ele o quebraria; o app passa a apontar para a página de downloads. ## [1.0.0] - 2026-10-24 Primeira versão estável: validação em hardware real por toda a superfície de ataque, um pipeline de quebra bem mais completo, dois ataques novos (WPS, Evil Twin), relatório redesenhado e várias correções de confiabilidade que só apareceram testando contra redes Wi-Fi de verdade. ### Adicionado - **Quebra de senha:** dicionário padrão trocado por uma lista de 9,7 milhões de senhas (rockyou + Probable-Wordlists, deduplicados, comprimida e embutida no binário); **regras de mutação** estilo hashcat (maiúscula, sufixos numéricos/símbolos, leet simples); **força bruta por máscara** (sintaxe `?d?l?u?s?a`); **exportação `.hc22000`** (individual ou em lote) para levar o handshake direto ao hashcat/John. - **Ataque WPS:** PIN/Pixie Dust via `reaver` embutido (extraído em tempo de execução), ou `bully` quando instalado no sistema. - **Evil Twin:** clona um AP já visto na sessão (SSID aberto) numa segunda interface com portal cativo, para WPA/WPA2-PSK — a senha só é aceita depois de conferida de verdade contra o handshake real já capturado, nunca "aceita qualquer coisa". Uma variante **Enterprise (802.1X/EAP)** captura credenciais automaticamente via `hostapd-wpe`, sem portal nem ação humana, já que a credencial viaja no próprio handshake EAP. - **Decriptação de tráfego CCMP** de um cliente assim que a senha do handshake dele é conhecida (Temporal Key derivada da PMK quebrada). - **Pontuação de interferência de canais** por banda e **achados de segurança** (rede aberta, PMF ausente, WPS exposto, possível evil twin por SSID duplicado). - **Relatório de auditoria redesenhado:** capa em página cheia com o logo embutido, sumário com âncoras, cabeçalho/rodapé corridos via margin boxes do `@page` (seção atual, numeração de página), cards de KPI e achados com cor por severidade — a paginação continua feita pelo Paged.js no navegador, imprimível em PDF. - `ScanSnapshot.warning`: avisa quando uma captura está rodando há um tempo sem receber nenhum quadro — uma placa que aceita ativar modo monitor sem realmente entregar captura (comum em Wi-Fi interno de notebook) agora diz isso, em vez de ficar "escutando o ar" caladinha. ### Corrigido - **Captura de handshake nunca completava em rede real:** `eapol.rs` lia `key_info`/`replay_counter`/`key_data_len` como little-endian; esses campos do 802.1X são big-endian. O deauth funcionava, os quadros EAPOL eram vistos, mas o `HandshakeTracker` descartava todos silenciosamente — 0 handshakes não importa quanto tráfego fosse gerado. Os próprios quadros sintéticos de teste do projeto cometiam o mesmo engano simetricamente, então os testes de ida e volta nunca pegaram isso; verificado ao vivo contra um AP real depois da correção. - **Modo monitor brigando com o NetworkManager:** `set_monitor()` agora solta a interface do NetworkManager antes de trocar de modo e devolve depois — sem isso o NM reafirmava a própria conexão em segundos e a captura caía com "está em modo managed". - **Evil Twin deixava o sistema pela metade se o processo morresse no meio** (Ctrl+C, `kill -9`, queda de energia): as duas interfaces ficavam presas em `managed=no` pra sempre, Wi-Fi sumia do painel do sistema. Um arquivo de estado mais uma rotina de autocura a cada início do engine desfazem isso sozinhos agora; o `sabia ui` também trata SIGINT graciosamente. - **Quadros repetidos de deauth/disassoc eram descartados como duplicata** depois do primeiro envio — o mesmo Sequence Control era reusado em toda injeção; agora incrementa por quadro. - **Lista de redes reordenava debaixo do cursor** durante a captura, porque a ordenação por sinal reagia a cada oscilação de 1-2 dBm; a ordem agora é estável (ordem de chegada, sinal arredondado em buckets de 4 dBm). - **"Forçar handshake" falhava se a captura tivesse sido parada:** agora religa a captura sozinho e espera o alvo reaparecer com canal conhecido antes de disparar o job, em vez de travar no canal em que o scanner por acaso estava saltando. - **Grid da aba Ataques deixava buracos vazios grandes** quando dois cards de alturas muito diferentes caíam na mesma linha; trocado por um layout de colunas tipo alvenaria. ### Alterado - `crack_reader`/`crack_mask` paralelizam entre os núcleos disponíveis e reaproveitam a base do HMAC por iteração em vez de reconstruí-la — cerca de 640x mais rápido em build release comparado ao caminho original debug/single-thread. ## [0.1.0] - 2026-10-23 Primeira versão: CLI, app desktop e núcleo compartilhado. ### Adicionado - `sabia-core`: descoberta de interfaces Wi-Fi, controle de **modo monitor** e canal (via netlink/`iw`), **varredura** de 2.4, 5 e 6 GHz, captura crua de quadros 802.11 por **AF_PACKET** (sem libpcap), parsing de **radiotap** e de quadros de gerenciamento (beacon, probe, EAPOL), agregação de APs e clientes, captura de **4-way handshake** e **PMKID**, **quebra offline** por dicionário (PBKDF2-HMAC-SHA1, MIC e PMKID) para WPA/WPA2-PSK, escrita e leitura de **`.pcap`**, injeção de quadros, trilha de **auditoria** local encadeada por hash, **auto-atualização** por releases do GitHub. - `sabia`: CLI com `iface` (list/channels/monitor), `scan`, `analyze`, `crack`, `deauth` (com `--yes`), `doctor`, `audit` (verify/show), `update` e `ui` (servidor local da interface). - App desktop (Tauri) com a mesma interface servida pelo `sabia ui`, pedindo elevação de administrador automaticamente ao abrir — modo monitor e captura crua exigem root/admin. - Interface gráfica: sidebar de interfaces, painel de captura com linha de sinal animada, tabela de redes com barras de sinal e selos de segurança por cor, aviso de **uso autorizado**, botão de **atualização** em um clique, temas Auto/ Claro/Escuro e idioma **português e inglês**. - CI com caches (`rust-cache`, `.deb` do Tauri em cache) e pipeline de release multiplataforma (CLI em 5 alvos e app desktop via `tauri-action`).