GUI Electron multipiattaforma per il framework C2 Sliver, che fornisce dashboard per sessioni e beacon, generazione di payload, listener, loot e gestione del deployment cloud.
Sliver GUI è un'applicazione desktop Electron multipiattaforma per Sliver. Combina connessioni backend, viste di stato in tempo reale, workspace dedicati e una console Sliver nativa in un'interfaccia React costruita con HeroUI, HeroUI Pro e Font Awesome.
La GUI non implementa ogni comando o opzione upstream. Le connessioni operatore usano mTLS; le configurazioni operatore WireGuard sono riconosciute ma non possono connettersi. Consulta il report di parità operatore per la copertura monitorata e i documenti sulle funzionalità riportati di seguito per i limiti specifici.
Le versioni supportate e le dipendenze bloccate sono registrate in package.json e package-lock.json. Il codice dell'applicazione usa TypeScript in modalità strict; gli helper di build usano i moduli ES di Node.js.
npm ci --strict-allow-scripts
npx heroui-pro login
npx heroui-pro install --yes
npm run dev
I passaggi di login/installazione di HeroUI sono necessari per la configurazione iniziale della workstation; possono essere saltati quando HEROUI_AUTH_TOKEN è già configurato per l'installazione.
Mantieni le credenziali fuori dai file tracciati.
npm run dev compila e avvia l'applicazione statica su
sliver://app/index.html, usando la content security policy di produzione.
Riavvia il comando dopo modifiche al codice sorgente; questo flusso di lavoro non usa HMR.
Il client TypeScript è installato dal pacchetto npm sliver-script bloccato.
Non è necessario un checkout del client adiacente. Lo sviluppo ordinario dell'applicazione
non richiede un checkout del codice sorgente di Sliver; la compilazione della console nativa sì.
La root predefinita del client Sliver è ~/.sliver-client; SLIVER_CLIENT_ROOT_DIR
può selezionare un'altra root. Le preferenze dell'applicazione, incluse le opzioni del grafo Overview, sono salvate in
gui/application-settings.json; lo zoom del workspace è salvato in
gui/workspace-zoom.json, e le preferenze dell'editor di testo in
gui/text-editor-settings.json sotto quella root. La GUI rileva le configurazioni operatore esistenti in configs/ e aggiorna il
selettore aperto quando una configurazione valida viene salvata lì. Salva le configurazioni selezionate
tramite Import come riferimenti a file privati in gui/operator-configs.json.
Import e Forget non copiano né eliminano le configurazioni di origine.
I colori del terminale compatibili con Ghostty sono configurati in Settings → Terminal e
salvati in gui/ghostty/config. I temi personalizzati appartengono a gui/ghostty/themes/;
i temi Ghostty nativi installati vengono rilevati automaticamente. Consulta
aspetto del terminale e temi Ghostty per la condivisione della configurazione, l'editor Monaco, il supporto alla trasparenza della piattaforma e i limiti di runtime.
| Comando | Scopo |
|---|---|
npm run typecheck | Controlla i progetti TypeScript main/preload e renderer. |
npm test | Esegue i test unitari e dei componenti con Vitest. |
npm run test:watch | Esegue Vitest in modalità interattiva. |
npm run test:e2e:electron | Compila ed esercita Electron attraverso renderer, preload e IPC. |
npm run protocol:check | Verifica il client bloccato, la baseline upstream e gli artefatti di parità. |
npm run build | Esegue il typecheck e compila l'output dell'applicazione in dist/. |
npm run build:console | Compila la console Sliver nativa bloccata. |
npm run package | Crea un'applicazione non pacchettizzata sotto release/. |
npm run dist | Crea gli installer per piattaforma sotto release/. |
npm run test:e2e:packaged | Verifica e testa un'applicazione non pacchettizzata esistente contro un fixture locale. |
I test unitari e dei componenti si trovano accanto ai file sorgente; gli scenari Electron si trovano in
src/e2e/. I test su server reale sono controlli separati, opt-in, che richiedono
un'infrastruttura usa e getta configurata. Un test su fixture non stabilisce la compatibilità con server live o pacchetti installati.
Il controllo del protocollo usa Go e recupera il codice sorgente upstream bloccato in una directory temporanea. Consulta la documentazione del protocollo per i controlli di provenienza e l'uso di una baseline locale selezionata esplicitamente.
Le build della console e della distribuzione richiedono Go 1.27.1 e un checkout pulito di Sliver
al commit e all'albero registrati in
provenienza della console. Posizionalo in
sliver/ o imposta SLIVER_SOURCE_DIR. La build della console convalida il codice sorgente;
non recupera né modifica quel checkout.
La build disabilita il cambio automatico della toolchain Go. Metti il binario Go richiesto
nel PATH o imposta SLIVER_GO_BINARY con il suo percorso assoluto. Le build universali della console macOS
richiedono macOS e /usr/bin/lipo.
npm run package e npm run dist preparano il runtime nativo, la console e
l'inventario delle licenze prima del packaging. L'output generato sotto dist/, release/,
native/sliver-console/ e .e2e-dist/ è ignorato da Git.
La matrice di packaging CI è:
| Piattaforma | Pacchetti | Aggiornamenti automatici |
|---|---|---|
| macOS universal | DMG e ZIP | L'app installata scarica l'aggiornamento ZIP. |
| Windows x64 | Installer NSIS ed EXE portatile | Solo installazioni NSIS; le build portatili si aggiornano manualmente. |
| Linux x64 | AppImage e DEB | Solo AppImage; i pacchetti DEB si aggiornano manualmente. |
I pacchetti supportati sono configurati per controllare GitHub Releases, scaricare gli aggiornamenti in background e installarli su Restart to update o alla normale uscita dall'applicazione. Le build stabili non accettano aggiornamenti prerelease. Nessun token GitHub è incorporato nell'applicazione.