- 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>
82 lines
3.2 KiB
HTML
82 lines
3.2 KiB
HTML
<!doctype html>
|
|
<html lang="pt-BR">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Sabiá</title>
|
|
<link rel="icon" href="/sabia.png">
|
|
<link rel="stylesheet" href="/app.css">
|
|
</head>
|
|
<body>
|
|
<div class="app">
|
|
<aside class="sidebar">
|
|
<div class="brand">
|
|
<img class="logo" src="/sabia.png" alt="">
|
|
<div>
|
|
<strong>Sabiá</strong>
|
|
<small>auditoria de Wi-Fi</small>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="side-title">Interfaces</div>
|
|
<ul class="list" id="ifaceList" data-empty="nenhuma interface Wi-Fi encontrada"></ul>
|
|
|
|
<div class="side-foot">
|
|
<span id="verInfo" class="mono">—</span>
|
|
<select id="langSel" class="lang-sel" aria-label="Idioma" title="Idioma">
|
|
<option value="auto">Auto</option>
|
|
<option value="pt">Português</option>
|
|
<option value="en">English</option>
|
|
</select>
|
|
<button id="btnUpdate" type="button">checar atualização</button>
|
|
</div>
|
|
</aside>
|
|
|
|
<main class="main">
|
|
<div class="page">
|
|
<div class="topbar">
|
|
<div>
|
|
<h1>Painel de captura</h1>
|
|
<div class="sub" id="ifaceSub">selecione uma interface</div>
|
|
</div>
|
|
<span id="modePill" class="pill"><span class="dot"></span><span id="modeLabel">—</span></span>
|
|
</div>
|
|
|
|
<svg class="wave" id="wave" viewBox="0 0 600 34" preserveAspectRatio="none">
|
|
<path class="flat" d="M0 17 L600 17"/>
|
|
<path class="live" id="waveLive" d="M0 17 L600 17"/>
|
|
</svg>
|
|
|
|
<div class="notice" id="elevateNotice" hidden>
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
|
<span id="elevateMsg">Pedindo privilégio de administrador — necessário pra modo monitor e captura…</span>
|
|
<button id="btnElevateRetry" class="btn" style="margin-left:auto" hidden>tentar de novo</button>
|
|
</div>
|
|
|
|
<div class="notice">
|
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
|
<span>Use somente em redes próprias ou com autorização explícita do responsável. Toda ativação de modo monitor e sessão de captura fica registrada na trilha de auditoria local.</span>
|
|
</div>
|
|
|
|
<div class="controls">
|
|
<div class="group">
|
|
<button id="btnMonitor" class="btn" disabled>ativar modo monitor</button>
|
|
</div>
|
|
<div class="group">
|
|
<button id="btnScan" class="btn primary" disabled>iniciar captura</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="result-head">
|
|
<strong>Redes vistas</strong>
|
|
<span id="count">0</span>
|
|
</div>
|
|
|
|
<div id="resultArea"></div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
<script type="module" src="/app.js"></script>
|
|
</body>
|
|
</html>
|