Torna agli aggiornamenti
New releaseAug 18, 2026

getsploit v3.0.1

Cerca e scarica exploit pubblici dal database Vulners — online, oppure completamente offline da un indice locale SQLite FTS5.

Condividi

Getsploit

Cerca e scarica exploit pubblici dal database Vulners — online, o completamente offline da un indice locale.

PyPI Python Downloads Stars CI CodeQL OpenSSF Scorecard Coverage Typed Ruff uv License: MIT

Ottieni una chiave API · Ricerca Vulners · Changelog · Architettura · Politica di sicurezza

Getsploit che cerca online, costruisce un indice FTS5 locale, poi cerca e replica offline


Perché Getsploit

  • 🔎 Una sola query, ogni raccolta. Exploit-DB, Metasploit, Packet Storm, Zero Day Initiative, proof-of-concept GitHub e altro, come indicizzati da Vulners.
  • 📴 Funziona a rete disconnessa. Un singolo --update costruisce un indice SQLite FTS5 locale dell'intero corpus di exploit; ogni ricerca successiva è una query locale.
  • 🧠 Cerca ciò che digiti. wordpress 4.7, CVE-2024-3094 e ms17-010 corrispondono letteralmente, mentre un'espressione full-text intenzionale riceve comunque la sintassi FTS5 completa.
  • 📊 Avanzamento affidabile. Ogni fase di un aggiornamento riporta numeri reali, e le due fasi di cui non si conosce la dimensione lo dicono esplicitamente, invece di inventare una percentuale.
  • 🧾 Pensato per le pipe. JSON, JSON Lines e record separati da tabulazione stabili quando l'output è reindirizzato. Nessun colore o decorazione raggiunge mai un formato machine-readable.
  • 💾 Conserva la sorgente. --mirror scrive il corpo di ogni exploit in un proprio file.
  • 🔐 Attento ai tuoi dati. La chiave non è mai un argomento da riga di comando, il file della chiave viene aperto senza seguire symlink e il contenuto scaricato non viene mai eseguito.
  • 🧪 Verificato. Copertura del 100% di istruzioni e branch su Python 3.11 fino a 3.14, su Linux, macOS e Windows.

Installazione

Getsploit richiede Python 3.11 o successivo.

$ pipx install getsploit
$ uv tool install getsploit
$ python -m pip install getsploit

Chiave API

Crea una chiave nel tuo account Vulners, poi esponila tramite l'ambiente:

$ export VULNERS_API_KEY="your-key"  # pragma: allowlist secret
$env:VULNERS_API_KEY = "your-key"  # pragma: allowlist secret

getsploit --set-key salva una chiave tramite un prompt di conferma nascosto, in un file privato nella home di Getsploit. L'ambiente ha la precedenza su quel file ed è la scelta migliore per l'automazione. Non esiste l'opzione --api-key: una chiave passata sulla riga di comando finisce nella cronologia della shell e nell'elenco dei processi.

La ricerca online e --update richiedono una chiave. --local e --status no.

Utilizzo

Ricerca online

$ getsploit CVE-2024-3094
$ getsploit "wordpress 4.7 remote code execution" --count 25

La query arriva a Vulners invariata, quindi la sua sintassi Lucene funziona come documentato:

$ getsploit 'title:wordpress AND description:"code execution"'

--count oltre 100 viene impaginato in modo trasparente; una singola risposta API non contiene mai più di 100 documenti.

Ricerca offline

$ getsploit --update                 # scarica l'archivio e costruisce l'indice FTS5
$ getsploit --status                 # dov'è, quanto è grande, quanti documenti contiene
$ getsploit --local wordpress 4.7

Le parole di ricerca ordinarie vengono confrontate letteralmente, quindi identificatori e numeri di versione funzionano come digitati: wordpress 4.7, CVE-2024-3094, ms17-010. Una query che usa filtri di colonna, operatori booleani, virgolette, parentesi, * o ^ viene trattata come una espressione SQLite FTS5 e segnala un proprio errore quando è malformata:

$ getsploit --local 'title:eternalblue AND NOT description:metasploit'

Le colonne ricercabili sono id, title, published, description e source_data. È ancora accettata la grafia legacy sourceData:.

Salvataggio delle sorgenti degli exploit

$ getsploit --mirror wordpress 4.7
$ getsploit --local --mirror eternalblue

I file finiscono in una directory derivata dalla query, un file per exploit, creati senza seguire symlink e senza mai sovrascrivere nulla che esista già.

[!WARNING] I file replicati sono codice di terze parti non affidabile. Leggili prima di eseguirli.

Output leggibile dalle macchine

$ getsploit --format json CVE-2024-3094
$ getsploit --format jsonl wordpress | jq -r .id
$ getsploit wordpress > results.tsv       # l'output reindirizzato è separato da tabulazioni

--json resta un alias per --format json.

Controllo del terminale

$ getsploit --color always query | less -R
$ getsploit --color never query

Il colore predefinito è auto. Un terminale largo ottiene una tabella, uno stretto record impilati e un flusso reindirizzato valori separati da tabulazione — gli stessi dati in tutti e tre i casi.

Esegui getsploit --help per l'elenco completo delle opzioni.

Il database locale

Posizione~/.getsploit/getsploit.db, oppure $GETSPLOIT_HOME
FormatoSQLite con indice FTS5 a contenuto esterno
Tokenizerunicode61 remove_diacritics 2
Dimensionicirca 1,7 GB per l'intero corpus
Aggiornamentoatomico: il nuovo database sostituisce il vecchio con una singola operazione

Un aggiornamento scarica l'archivio tramite otto connessioni di intervallo parallele, lo decomprime e lo converte accanto alla destinazione, lo verifica e solo allora esegue il commit. L'uso della memoria non dipende dalla dimensione dell'archivio. Una ricerca già in esecuzione sul vecchio database termina su di esso senza interferenze.

I database creati da Getsploit 2.x restano ricercabili; il successivo --update li migra da FTS4 a FTS5. Le espressioni di prossimità FTS4 come one NEAR/5 two devono essere riscritte nella forma FTS5 NEAR(...).

Compatibilità

Python3.11, 3.12, 3.13, 3.14
Sistemi operativiLinux, macOS, Windows
Vulners SDK4.1 e versioni 4.x successive
Dipendenze runtimeclick, rich, vulners

Sviluppo

$ git clone https://github.com/vulnersCom/getsploit.git
$ cd getsploit
$ uv sync --all-groups
$ make check
ComandoScopo
make formatFormatta e corregge automaticamente i file sorgente
make lintControlla formattazione, lint e tipi
make testEsegue i test in parallelo
make coverageApplica la copertura del 100% di istruzioni e branch
make leaksScansiona i file tracciati per individuare segreti
make buildCrea la wheel e la distribuzione sorgente
make releaseEsegue tutti i gate e valida entrambe le distribuzioni
make checkTutto quanto sopra che funge da gate per il merge

CONTRIBUTING.md contiene le regole di contribuzione e ARCHITECTURE.md i confini dei moduli e gli invarianti del database.

Una release è un tag v<version> pushato. Da lì il workflow di release riesegue il gate completo sul commit taggato, pubblica su PyPI tramite trusted publishing e scrive la release GitHub dal changelog. Non esiste alcun token PyPI da poter divulgare.

Sicurezza

I file sorgente degli exploit sono contenuti non affidabili: rivedili prima di aprirli o eseguirli. Getsploit stesso non esegue mai ciò che scarica.

Le release vengono pubblicate da GitHub Actions tramite PyPI trusted publishing, quindi non esiste alcun token API di lunga durata da divulgare e ogni artefatto porta un'attestazione di provenienza della build. Per segnalare una vulnerabilità in Getsploit, segui SECURITY.md.

Licenza

MIT © Vulners Team e collaboratori.

Categorie