
Durchsuchen und Herunterladen öffentlicher Exploits aus der Vulners-Datenbank — online oder vollständig offline über einen lokalen SQLite-FTS5-Index.
Öffentliche Exploits aus der Vulners-Datenbank suchen und herunterladen — online oder vollständig offline aus einem lokalen Index.
API-Schlüssel erhalten · Vulners-Suche · Changelog · Architektur · Sicherheitsrichtlinie

--update-Aufruf erstellt einen lokalen SQLite-FTS5-Index des
gesamten Exploit-Korpus; jede spätere Suche ist eine lokale Abfrage.wordpress 4.7, CVE-2024-3094 und ms17-010
werden wörtlich abgeglichen, während ein bewusster Volltextausdruck weiterhin die volle FTS5-Syntax erhält.--mirror schreibt jeden Exploit-Text in eine eigene Datei.Getsploit benötigt Python 3.11 oder neuer.
$ pipx install getsploit
$ uv tool install getsploit
$ python -m pip install getsploit
Erstelle einen Schlüssel in deinem Vulners-Konto und gib ihn dann über die Umgebung an:
$ export VULNERS_API_KEY="your-key" # pragma: allowlist secret
$env:VULNERS_API_KEY = "your-key" # pragma: allowlist secret
getsploit --set-key speichert einen Schlüssel über eine versteckte Bestätigungsaufforderung in einer privaten
Datei im Getsploit-Homeverzeichnis. Die Umgebungsvariable hat Vorrang vor dieser Datei und ist die bessere Wahl
für die Automatisierung. Es gibt keine --api-key-Option: Ein Schlüssel, der über die Befehlszeile übergeben
wird, landet in der Shell-Historie und in der Prozessliste.
Online-Suche und --update benötigen einen Schlüssel. --local und --status nicht.
$ getsploit CVE-2024-3094
$ getsploit "wordpress 4.7 remote code execution" --count 25
Die Abfrage erreicht Vulners unverändert, sodass ihre Lucene-Syntax wie dokumentiert funktioniert:
$ getsploit 'title:wordpress AND description:"code execution"'
--count über 100 wird transparent paginiert; eine einzelne API-Antwort enthält nie mehr als 100 Dokumente.
$ getsploit --update # Archiv herunterladen und FTS5-Index erstellen
$ getsploit --status # wo es ist, wie groß, wie viele Dokumente
$ getsploit --local wordpress 4.7
Gewöhnliche Suchwörter werden wörtlich abgeglichen, sodass Bezeichner und Versionsnummern wie eingegeben
funktionieren: wordpress 4.7, CVE-2024-3094, ms17-010. Eine Abfrage, die Spaltenfilter, boolesche
Operatoren, Anführungszeichen, Klammern, * oder ^ verwendet, wird als
SQLite-FTS5-Ausdruck behandelt und meldet bei fehlerhafter Syntax einen
eigenen Fehler:
$ getsploit --local 'title:eternalblue AND NOT description:metasploit'
Durchsuchbare Spalten sind id, title, published, description und source_data. Die alte
Schreibweise sourceData: wird weiterhin akzeptiert.
$ getsploit --mirror wordpress 4.7
$ getsploit --local --mirror eternalblue
Die Dateien landen in einem aus der Abfrage abgeleiteten Verzeichnis, eine Datei pro Exploit, erstellt ohne dem Folgen von Symlinks und ohne jemals etwas zu überschreiben, das bereits existiert.
[!WARNING] Gespiegelte Dateien sind nicht vertrauenswürdiger Code von Drittanbietern. Lies sie, bevor du sie ausführst.
$ getsploit --format json CVE-2024-3094
$ getsploit --format jsonl wordpress | jq -r .id
$ getsploit wordpress > results.tsv # umgeleitete Ausgabe ist tabulatorgetrennt
--json bleibt ein Alias für --format json.
$ getsploit --color always query | less -R
$ getsploit --color never query
Die Farbausgabe ist standardmäßig auf auto gesetzt. Ein breites Terminal erhält eine Tabelle, ein schmales
gestapelte Datensätze, und ein umgeleiteter Stream erhält tabulatorgetrennte Werte — dieselben Daten in allen
drei Fällen.
Führe getsploit --help aus, um die vollständige Optionsliste zu erhalten.
Ein Update lädt das Archiv über acht parallele Bereichsverbindungen herunter, entpackt und konvertiert es neben dem Ziel, verifiziert es und übernimmt es erst dann. Der Speicherverbrauch hängt nicht von der Größe des Archivs ab. Eine bereits gegen die alte Datenbank laufende Suche wird ungestört gegen diese zu Ende geführt.
Datenbanken, die von Getsploit 2.x erstellt wurden, bleiben durchsuchbar; das nächste --update migriert sie
von FTS4 zu FTS5. FTS4-Näheausdrücke wie one NEAR/5 two müssen in die FTS5-NEAR(...)-Form umgeschrieben
werden.
| Python | 3.11, 3.12, 3.13, 3.14 |
| Betriebssysteme | Linux, macOS, Windows |
| Vulners SDK | 4.1 und neuere 4.x |
| Laufzeitabhängigkeiten |
$ git clone https://github.com/vulnersCom/getsploit.git
$ cd getsploit
$ uv sync --all-groups
$ make check
CONTRIBUTING.md enthält die Beitragsregeln und ARCHITECTURE.md die Modulgrenzen und Datenbankinvarianten.
Ein Release ist ein gepushtes v<version>-Tag. Von dort aus führt
der Release-Workflow das vollständige Gate auf dem getaggten Commit erneut
aus, veröffentlicht über Trusted Publishing auf PyPI und erstellt das GitHub-Release aus dem Changelog. Es
existiert kein PyPI-Token, das auslaufen könnte.
Exploit-Quelldateien sind nicht vertrauenswürdige Inhalte: Prüfe sie, bevor du sie öffnest oder ausführst. Getsploit selbst führt nie aus, was es herunterlädt.
Releases werden über GitHub Actions durch PyPI Trusted Publishing veröffentlicht, sodass kein langlebiges API-Token existiert, das auslaufen könnte, und jedes Artefakt trägt eine Build-Herkunftsbescheinigung. Um eine Sicherheitslücke in Getsploit zu melden, folge SECURITY.md.
MIT © Vulners Team und Mitwirkende.
| Speicherort | ~/.getsploit/getsploit.db oder $GETSPLOIT_HOME |
| Format | SQLite mit einem FTS5-Index für externe Inhalte |
| Tokenizer | unicode61 remove_diacritics 2 |
| Größe | ungefähr 1,7 GB für den vollständigen Korpus |
| Update | atomar: Die neue Datenbank ersetzt die alte in einem einzigen Vorgang |
click, rich, vulners |
| Befehl | Zweck |
|---|
make format | Quelldateien formatieren und automatisch korrigieren |
make lint | Formatierung, Linting und Typen prüfen |
make test | Tests parallel ausführen |
make coverage | 100 % Anweisungs- und Zweigabdeckung erzwingen |
make leaks | Verfolgte Dateien auf Geheimnisse scannen |
make build | Wheel- und Quellverteilung bauen |
make release | Jedes Gate ausführen und beide Verteilungen validieren |
make check | Alles oben Genannte, das einen Merge freigibt |