
getsploit v3.0.1
Busca y descarga exploits públicos de la base de datos de Vulners — en línea, o totalmente sin conexión desde un índice local SQLite FTS5.
Getsploit
Busca y descarga exploits públicos de la base de datos de Vulners — en línea, o totalmente sin conexión desde un índice local.
Obtén una clave API · Búsqueda de Vulners · Registro de cambios · Arquitectura · Política de seguridad

Por qué Getsploit
- 🔎 Una consulta, todas las colecciones. Exploit-DB, Metasploit, Packet Storm, Zero Day Initiative, pruebas de concepto de GitHub y más, todo indexado por Vulners.
- 📴 Funciona sin conexión de red. Un solo
--updatecrea un índice FTS5 local de SQLite con todo el corpus de exploits; cualquier búsqueda posterior es una consulta local. - 🧠 Busca lo que escribiste.
wordpress 4.7,CVE-2024-3094yms17-010coinciden literalmente, mientras que una expresión de texto completo deliberada sigue usando toda la sintaxis de FTS5. - 📊 Progreso en el que puedes confiar. Cada etapa de una actualización informa cifras reales, y las dos etapas cuyo tamaño no se puede conocer lo dicen explícitamente en lugar de inventar un porcentaje.
- 🧾 Amigable con tuberías (pipes). JSON, JSON Lines y registros estables separados por tabulaciones cuando la salida se redirige. Ningún color ni decoración llega jamás a un formato de máquina.
- 💾 Conserva la fuente.
--mirrorescribe el cuerpo de cada exploit en su propio archivo. - 🔐 Cuidado con tus datos. La clave nunca es un argumento de línea de comandos, el archivo de clave se abre sin seguir enlaces simbólicos y el contenido descargado nunca se ejecuta.
- 🧪 Verificado. 100 % de cobertura de sentencias y ramas en Python 3.11 a 3.14, en Linux, macOS y Windows.
Instalación
Getsploit necesita Python 3.11 o superior.
$ pipx install getsploit
$ uv tool install getsploit
$ python -m pip install getsploit
Clave API
Crea una clave en tu cuenta de Vulners y luego expónla a través del entorno:
$ export VULNERS_API_KEY="your-key" # pragma: allowlist secret
$env:VULNERS_API_KEY = "your-key" # pragma: allowlist secret
getsploit --set-key guarda una clave mediante un aviso de confirmación que oculta la entrada, en un archivo
privado dentro del directorio de Getsploit. El entorno tiene prioridad sobre ese archivo y es
la mejor opción para la automatización. No existe la opción --api-key: una clave pasada por la
línea de comandos termina en el historial del shell y en la lista de procesos.
La búsqueda en línea y --update necesitan una clave. --local y --status no.
Uso
Búsqueda en línea
$ getsploit CVE-2024-3094
$ getsploit "wordpress 4.7 remote code execution" --count 25
La consulta llega a Vulners sin cambios, por lo que su sintaxis de Lucene funciona tal como está documentada:
$ getsploit 'title:wordpress AND description:"code execution"'
--count por encima de 100 se pagina de forma transparente; una sola respuesta de la API nunca contiene más
de 100 documentos.
Búsqueda sin conexión
$ getsploit --update # descarga el archivo y crea el índice FTS5
$ getsploit --status # dónde está, cuánto ocupa, cuántos documentos tiene
$ getsploit --local wordpress 4.7
Las palabras de búsqueda normales se comparan literalmente, por lo que los identificadores y números de versión funcionan tal
como se escriben: wordpress 4.7, CVE-2024-3094, ms17-010. Una consulta que usa filtros de columna,
operadores booleanos, comillas, paréntesis, * o ^ se trata como una
expresión FTS5 de SQLite y notifica su propio error
cuando está mal formada:
$ getsploit --local 'title:eternalblue AND NOT description:metasploit'
Las columnas en las que se puede buscar son id, title, published, description y source_data. La
grafía heredada sourceData: todavía se acepta.
Guardar fuentes de exploits
$ getsploit --mirror wordpress 4.7
$ getsploit --local --mirror eternalblue
Los archivos se guardan en un directorio derivado de la consulta, un archivo por exploit, creado sin seguir enlaces simbólicos y sin sobrescribir nunca nada que ya exista.
[!WARNING] Los archivos reflejados son código de terceros no confiable. Léelos antes de ejecutarlos.
Salida legible por máquina
$ getsploit --format json CVE-2024-3094
$ getsploit --format jsonl wordpress | jq -r .id
$ getsploit wordpress > results.tsv # la salida redirigida está separada por tabulaciones
--json sigue siendo un alias de --format json.
Control de terminal
$ getsploit --color always query | less -R
$ getsploit --color never query
El color predeterminado es auto. Una terminal ancha muestra una tabla, una estrecha muestra
registros apilados y una secuencia redirigida obtiene valores separados por tabulaciones: los mismos datos en los tres casos.
Ejecuta getsploit --help para ver la lista completa de opciones.
La base de datos local
| Ubicación | ~/.getsploit/getsploit.db, o $GETSPLOIT_HOME |
| Formato | SQLite con un índice FTS5 de contenido externo |
| Tokenizador | unicode61 remove_diacritics 2 |
| Tamaño | aproximadamente 1.7 GB para el corpus completo |
| Actualización | atómica: la nueva base de datos reemplaza a la anterior en una sola operación |
Una actualización descarga el archivo mediante ocho conexiones de rango en paralelo, lo descomprime y convierte junto al destino, lo verifica y solo entonces confirma el cambio. El uso de memoria no depende del tamaño del archivo. Una búsqueda que ya se esté ejecutando contra la base de datos anterior termina contra ella sin interrupciones.
Las bases de datos creadas por Getsploit 2.x siguen siendo consultables; el siguiente --update las migra
de FTS4 a FTS5. Las expresiones de proximidad de FTS4 como one NEAR/5 two deben reescribirse
en la forma NEAR(...) de FTS5.
Compatibilidad
| Python | 3.11, 3.12, 3.13, 3.14 |
| Sistemas operativos | Linux, macOS, Windows |
| SDK de Vulners | 4.1 y versiones 4.x posteriores |
| Dependencias de ejecución | click, rich, vulners |
Desarrollo
$ git clone https://github.com/vulnersCom/getsploit.git
$ cd getsploit
$ uv sync --all-groups
$ make check
| Comando | Propósito |
|---|---|
make format | Formatear y corregir automáticamente los archivos fuente |
make lint | Verificar formato, lint y tipos |
make test | Ejecutar las pruebas en paralelo |
make coverage | Exigir 100 % de cobertura de sentencias y ramas |
make leaks | Escanear archivos rastreados en busca de secretos |
make build | Compilar la rueda (wheel) y la distribución de código fuente |
make release | Ejecutar todos los controles y validar ambas distribuciones |
make check | Todo lo anterior que condiciona una fusión (merge) |
CONTRIBUTING.md contiene las reglas de contribución y ARCHITECTURE.md los límites de los módulos y los invariantes de la base de datos.
Una versión (release) es una etiqueta v<version> enviada al repositorio. A partir de ahí,
el flujo de trabajo de publicación vuelve a ejecutar todos los controles sobre el
commit etiquetado, publica en PyPI mediante publicación confiable (trusted publishing) y escribe la versión
de GitHub a partir del registro de cambios. No existe ningún token de PyPI que pueda filtrarse.
Seguridad
Los archivos fuente de exploits son contenido no confiable: revísalos antes de abrirlos o ejecutarlos. Getsploit nunca ejecuta lo que descarga.
Las versiones se publican desde GitHub Actions mediante la publicación confiable de PyPI, por lo que no existe ningún token de API de larga duración que pueda filtrarse, y cada artefacto lleva una atestación de procedencia de compilación. Para reportar una vulnerabilidad en Getsploit, sigue SECURITY.md.
Licencia
MIT © Vulners Team y colaboradores.