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:
1 parent
df27974359
commit
791538c9d9
112 files changed
+15620
-494
No files matched your search
@@ -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.
|
||||
@@ -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`).
|
||||
@@ -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`).
|
||||
Reference in new issue
Block a user