
getsploit v3.0.1
Durchsuchen und Herunterladen öffentlicher Exploits aus der Vulners-Datenbank — online oder vollständig offline über einen lokalen SQLite-FTS5-Index.
Getsploit
Ö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

Warum Getsploit
- 🔎 Eine Abfrage, jede Sammlung. Exploit-DB, Metasploit, Packet Storm, Zero Day Initiative, GitHub-Proof-of-Concepts und mehr, wie von Vulners indexiert.
- 📴 Funktioniert ohne Netzwerk. Ein einziger
--update-Aufruf erstellt einen lokalen SQLite-FTS5-Index des gesamten Exploit-Korpus; jede spätere Suche ist eine lokale Abfrage. - 🧠 Sucht nach dem, was du eingegeben hast.
wordpress 4.7,CVE-2024-3094undms17-010werden wörtlich abgeglichen, während ein bewusster Volltextausdruck weiterhin die volle FTS5-Syntax erhält. - 📊 Fortschritt, dem du vertrauen kannst. Jede Phase eines Updates meldet echte Zahlen, und die beiden Phasen, deren Größe nicht bekannt sein kann, sagen dies, anstatt einen Prozentsatz zu erfinden.
- 🧾 Pipe-freundlich. JSON, JSON Lines und stabile tabulatorgetrennte Datensätze, wenn die Ausgabe umgeleitet wird. Keine Farbe oder Dekoration erreicht jemals ein Maschinenformat.
- 💾 Behält die Quelle.
--mirrorschreibt jeden Exploit-Text in eine eigene Datei. - 🔐 Vorsichtig mit deinen Daten. Der Schlüssel ist nie ein Befehlszeilenargument, die Schlüsseldatei wird ohne das Folgen von Symlinks geöffnet, und heruntergeladene Inhalte werden nie ausgeführt.
- 🧪 Verifiziert. 100 % Anweisungs- und Zweigabdeckung auf Python 3.11 bis 3.14, unter Linux, macOS und Windows.
Installation
Getsploit benötigt Python 3.11 oder neuer.
$ pipx install getsploit
$ uv tool install getsploit
$ python -m pip install getsploit
API-Schlüssel
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.
Verwendung
Online-Suche
$ 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.
Offline-Suche
$ 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.
Exploit-Quellen speichern
$ 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.
Maschinenlesbare Ausgabe
$ 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.
Terminalsteuerung
$ 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.
Die lokale Datenbank
| 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 |
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.
Kompatibilität
| Python | 3.11, 3.12, 3.13, 3.14 |
| Betriebssysteme | Linux, macOS, Windows |
| Vulners SDK | 4.1 und neuere 4.x |
| Laufzeitabhängigkeiten | click, rich, vulners |
Entwicklung
$ git clone https://github.com/vulnersCom/getsploit.git
$ cd getsploit
$ uv sync --all-groups
$ make check
| 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 |
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.
Sicherheit
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.
Lizenz
MIT © Vulners Team und Mitwirkende.