v0.1.0: logo, i18n pt/en, CI com caches, testes e documentação

- Logo oficial (sabia.png) e conjunto de ícones do app desktop.
- Interface em português e inglês: tradutor por observação do DOM, seletor
  de idioma e checagem de cobertura de tradução no CI.
- CI/CD com caches (rust-cache, .deb do Tauri em cache) e pipeline de release
  multiplataforma (CLI em 5 alvos + app desktop via tauri-action), templates
  de issue/PR.
- Suíte de testes de integração do sabia-core (scan e2e, handshake/crack
  4-way e PMKID, pcap, trilha de auditoria) — 46 testes verdes.
- Documentação completa pt/en: README, ROADMAP, SECURITY, CONTRIBUTING,
  CHANGELOG e docs/ (cli, interface, arquitetura), com enquadramento de uso
  autorizado.
- Correções de clippy (-D warnings) e formatação em toda a árvore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Opus 5.5 committed 2026-10-23 12:46:19 -03:00
1 parent df27974359
commit 791538c9d9
112 files changed
+15620 -494

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
# Arquitetura
[English](../architecture.md) · **Português**
Dois crates e um app:
```
crates/sabia-core toda a lógica (biblioteca)
crates/sabia-cli binário `sabia` (CLI + servidor local da UI)
apps/gui interface (ui/ = HTML/CSS/JS; src-tauri/ = app desktop)
```
A CLI e o app desktop são clientes finos: ambos chamam o `Engine` do núcleo. A UI do navegador (`sabia ui`) e a do Tauri carregam o mesmo `apps/gui/ui/`.
## `sabia-core`
| Módulo | Papel |
|---|---|
| `engine.rs` | Orquestra tudo e expõe a API que CLI e GUI consomem. |
| `iface.rs`, `netlink.rs` | Descobre interfaces e canais; liga/desliga modo monitor por netlink/`iw`. |
| `radiotap.rs` | Parsing do cabeçalho radiotap; banda e canal. |
| `dot11.rs` | Parsing de quadros 802.11 (gerenciamento: beacon, probe). |
| `eapol.rs` | Parsing do EAPOL e dos campos do 4-way handshake. |
| `handshake.rs` | Monta o handshake (ANonce, SNonce, MIC, PMKID) a partir dos quadros. |
| `crack.rs` | Deriva PMK (PBKDF2-HMAC-SHA1) e PTK, confere MIC e PMKID. |
| `scan.rs` | Percorre canais e agrega APs e clientes vistos. |
| `capture.rs`, `inject.rs` | Captura crua por AF_PACKET; injeção de quadros (deauth). |
| `pcapreader.rs`, `pcapwriter.rs` | Leitura e escrita de `.pcap`. |
| `audit.rs` | Trilha de auditoria local encadeada por hash. |
| `doctor.rs` | Diagnóstico de privilégios, ferramentas e interfaces. |
| `update.rs` | Auto-atualização por releases do GitHub (curl + SHA-256). |
| `error.rs`, `testutil.rs` | Tipo de erro compartilhado; ajudantes de teste. |
## Plataforma
Captura e modo monitor são **Linux** (`AF_PACKET` + netlink). Parsing (`radiotap`, `dot11`, `eapol`, `handshake`), quebra (`crack`) e `.pcap` são multiplataforma, por serem offline — por isso os testes rodam em Linux, Windows e macOS no CI.
## Transporte da UI
`sabia ui` sobe um servidor em `127.0.0.1` protegido por um token gerado na hora; serve `index.html`/`app.css`/`app.js`/`sabia.png` embutidos no binário e uma API JSON. O app Tauri usa os mesmos arquivos, chamando o `Engine` direto por comandos Tauri em vez de HTTP.
+83
View File
@@ -0,0 +1,83 @@
# Terminal (`sabia`)
[English](../cli.md) · **Português**
O binário `sabia` tem a opção global `--audit <arquivo>` (trilha de auditoria; padrão `.sabia-audit.log`) e os comandos abaixo. Captura e modo monitor exigem Linux e root; análise e quebra rodam em qualquer plataforma.
## `iface` — interfaces e modo monitor
```bash
sabia iface list # interfaces Wi-Fi e seus modos
sabia iface channels <iface> # canais que o rádio suporta [--json]
sudo sabia iface monitor <iface> on # liga o modo monitor (on|off)
```
## `scan` — captura o ar
```bash
sudo sabia scan <iface> [opções]
```
| Opção | Efeito |
|---|---|
| `--channel <n>` | Fixa um canal (sem isso, percorre os suportados). |
| `--band <2.4\|5\|6\|all>` | Banda ao percorrer canais. |
| `--hop-ms <ms>` | Tempo em cada canal (padrão 350). |
| `--seconds <n>` | Para depois de N segundos (padrão: até Ctrl+C). |
| `--out <arquivo.pcap>` | Salva os quadros capturados. |
| `--crack <dicionário>` | Depois de capturar, tenta quebrar o primeiro handshake. |
| `--json` | Mostra apenas o JSON final. |
Mostra redes (APs), clientes e handshakes vistos (4-way e PMKID).
## `analyze` — lê um `.pcap` offline
```bash
sabia analyze <arquivo.pcap> [--json]
```
## `crack` — quebra por dicionário
```bash
sabia crack <arquivo.pcap> --wordlist <lista.txt> [--bssid <mac>] [--station <mac>] [--json]
```
Recalcula a PMK com PBKDF2-HMAC-SHA1 e confere o MIC (4-way) ou o PMKID, para WPA/WPA2-PSK. `--bssid`/`--station` filtram qual handshake usar.
## `deauth` — teste autorizado de desautenticação
```bash
sudo sabia deauth <iface> --bssid <mac> [--station <mac>] [--count 5] [--reason 7] --yes
```
Sem `--station`, o destino é broadcast. A flag **`--yes`** confirma que você tem autorização para testar esta rede — sem ela, o comando recusa. Fica na trilha de auditoria.
## `doctor` — diagnóstico
```bash
sabia doctor [--json]
```
Confere privilégios, ferramentas (`iw`, `ip`) e interfaces com suporte a modo monitor.
## `audit` — trilha de auditoria
```bash
sabia audit verify [arquivo] # confere a integridade da cadeia por hash
sabia audit show [--limit 20] # últimas entradas
```
## `update` — atualização
```bash
sabia update # verifica se há versão nova
sabia update --apply # baixa, confere o SHA-256 e troca o executável
```
## `ui` — interface gráfica
```bash
sabia ui [--port 4337] [--no-open]
```
Sobe o servidor local da interface e abre o navegador (ou não, com `--no-open`).
+20
View File
@@ -0,0 +1,20 @@
# Interface gráfica
[English](../interface.md) · **Português**
O app desktop (Tauri) e a versão no navegador (`sabia ui`) são o mesmo front-end, em `apps/gui/ui/`. Muda só o transporte: o app desktop fala com o núcleo pelo Tauri; no navegador, o `sabia-cli` sobe um servidor local em `127.0.0.1` protegido por um token gerado na hora.
## Telas
- **Sidebar de interfaces:** lista as interfaces Wi-Fi; selecione uma para trabalhar. No rodapé ficam a versão e o botão de **atualização** em um clique.
- **Painel de captura:** cabeçalho com o modo atual (managed/monitor), uma **linha de sinal animada**, e os botões **ativar modo monitor** e **iniciar captura**.
- **Aviso de uso autorizado**, sempre à vista: use só em redes próprias ou com autorização; toda ativação de monitor e captura entra na trilha de auditoria local.
- **Redes vistas:** tabela em tempo real com SSID, barras de sinal, canal e um selo de segurança por cor (aberta, WEP, WPA/WPA2, WPA3).
## Privilégio
Modo monitor e captura exigem root/admin. Ao abrir, o app pede elevação automaticamente (no Linux e macOS ele reinicia elevado; no Windows, pelo manifesto). Um aviso aparece enquanto a elevação é pedida, com a opção de tentar de novo.
## Temas e idioma
Temas **Auto, Claro e Escuro** e interface em **português e inglês**. O idioma do sistema é detectado no início; a escolha fica salva. O texto-fonte é em português e o inglês é aplicado em tempo de execução (veja `apps/gui/ui/i18n.js`).