@oneversec/eversec-rage 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -0
- package/dist/cli.js +357 -0
- package/package.json +57 -0
package/README.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# `@oneversec/eversec-rage` — RAGE CLI (ONEVERSEC)
|
|
2
|
+
|
|
3
|
+
Cliente **fino** da plataforma ONEVERSEC, com **TUI estilo Claude Code** (Ink). A caça roda **no cluster**
|
|
4
|
+
(scope-authz + firewall determinístico intactos) — o CLI **nunca** roda engine local. Ele dispara e acompanha
|
|
5
|
+
via a API REST, com um token headless.
|
|
6
|
+
|
|
7
|
+
Stack: **Node + Ink + TypeScript** (o mesmo esquema de Claude Code / Codex / Grok). Referência visual:
|
|
8
|
+
[theswerd/brainless](https://github.com/theswerd/brainless).
|
|
9
|
+
|
|
10
|
+
## Instalar
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# global (precisa de Node ≥18 na máquina)
|
|
14
|
+
npm install -g @oneversec/eversec-rage
|
|
15
|
+
eversec-rage
|
|
16
|
+
|
|
17
|
+
# do repo, sem publicar (Node ≥18, o dist já vem buildado)
|
|
18
|
+
npm install -g /home/pablodlz/oneversec/packages/eversec-cli
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Sem Node na máquina? Use o **binário standalone** (runtime embutido, nada a instalar):
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# na NOSSA máquina de build (tem bun):
|
|
25
|
+
cd packages/eversec-cli && bun run compile # gera dist/eversec-rage
|
|
26
|
+
# entregue o binário; o cliente só faz: chmod +x eversec-rage && ./eversec-rage
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Usar — TUI (default)
|
|
30
|
+
|
|
31
|
+
Rode **`eversec-rage`** sem argumentos. Se não houver token salvo, ele pede ali dentro (colado, mascarado).
|
|
32
|
+
Comandos com `/` (com autocomplete: digite `/` e use Tab):
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
╭─────────────────────────────────────────────────────────────╮
|
|
36
|
+
│ eversec-rage · caça pelo terminal │
|
|
37
|
+
│ https://oneversec.com │
|
|
38
|
+
│ a caça roda no cluster · scope-authz + firewall determ. ON │
|
|
39
|
+
╰─────────────────────────────────────────────────────────────╯
|
|
40
|
+
──────────────────────────────────────────────────────────────
|
|
41
|
+
❯ /bounty 5f3a9c21
|
|
42
|
+
──────────────────────────────────────────────────────────────
|
|
43
|
+
⏵⏵ / para comandos · tab completa · ctrl+c sai
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- `/targets` — alvos autorizados
|
|
47
|
+
- `/bounty <scope_id> [--raso]` — dispara a caça e acompanha ao vivo (spinner de "thinking")
|
|
48
|
+
- `/watch <job_id>` · `/status <job_id>` · `/findings [sev]` · `/login` · `/help` · `/quit`
|
|
49
|
+
- `ctrl+c` durante uma caça = para de acompanhar (não mata a caça no cluster); fora dela = sai.
|
|
50
|
+
|
|
51
|
+
Gerar o token (1×, no navegador): **console → Settings → Perfil → CLI / Tokens de API → Gerar token do CLI**
|
|
52
|
+
(cru aparece **uma vez**). Salvo em `~/.config/rage/config.json` (chmod 600).
|
|
53
|
+
|
|
54
|
+
## Usar — one-shot (scripts/CI)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
eversec-rage login --token ovg_xxxx
|
|
58
|
+
eversec-rage targets
|
|
59
|
+
eversec-rage hunt <scope_id> --watch
|
|
60
|
+
eversec-rage watch <job_id>
|
|
61
|
+
eversec-rage status <job_id>
|
|
62
|
+
eversec-rage findings --sev critical
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Env em vez de arquivo: `RAGE_TOKEN=ovg_…`, `RAGE_API=https://oneversec.com` (default já é esse).
|
|
66
|
+
|
|
67
|
+
## Dev
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
bun install
|
|
71
|
+
bun run dev # roda a TUI do fonte
|
|
72
|
+
bun run typecheck # tsc --noEmit
|
|
73
|
+
bun test # contrato REST (stub de fetch)
|
|
74
|
+
bun run build # dist/cli.js (bundle node, o que o npm publica)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Notas
|
|
78
|
+
|
|
79
|
+
- **A caça não é local:** `/bounty` cria um job e o inicia no cluster (pod isolado gVisor + NetworkPolicy); o
|
|
80
|
+
CLI acompanha por poll de `GET /jobs/{id}/events`. Sem `/report` — submeter é human-gated no console.
|
|
81
|
+
- **Modo Profundo é o default:** a caça não termina sozinha; `--raso` é o sweep finito.
|
|
82
|
+
- `dist/` é commitado de propósito (o cliente instala com `npm i -g` usando só Node, sem bun).
|