
getsploit v3.0.1
Pesquise e baixe exploits públicos do banco de dados Vulners — online ou totalmente offline a partir de um índice local SQLite FTS5.
Getsploit
Pesquise e baixe exploits públicos do banco de dados Vulners — online ou totalmente offline a partir de um índice local.
Obtenha uma chave de API · Busca no Vulners · Changelog · Arquitetura · Política de segurança

Por que Getsploit
- 🔎 Uma consulta, todas as coleções. Exploit-DB, Metasploit, Packet Storm, Zero Day Initiative, proof-of-concepts do GitHub e mais, conforme indexados pelo Vulners.
- 📴 Funciona com a rede desligada. Um único
--updatecria um índice local SQLite FTS5 de todo o corpus de exploits; toda busca posterior é uma consulta local. - 🧠 Busca o que você digitou.
wordpress 4.7,CVE-2024-3094ems17-010correspondem literalmente, enquanto uma expressão de texto completo deliberada ainda recebe a sintaxe FTS5 completa. - 📊 Progresso em que você pode confiar. Cada etapa de uma atualização relata números reais, e as duas etapas cujo tamanho não pode ser conhecido dizem isso em vez de inventar uma porcentagem.
- 🧾 Amigável para pipes. JSON, JSON Lines e registros estáveis separados por tabulação quando a saída é redirecionada. Nenhuma cor ou decoração chega a um formato de máquina.
- 💾 Mantém a fonte.
--mirrorgrava cada corpo de exploit em seu próprio arquivo. - 🔐 Cuidado com seus dados. A chave nunca é um argumento de linha de comando, o arquivo de chave é aberto sem seguir symlinks e o conteúdo baixado nunca é executado.
- 🧪 Verificado. 100% de cobertura de statements e branches no Python 3.11 até 3.14, em Linux, macOS e Windows.
Instalação
O Getsploit requer Python 3.11 ou mais recente.
$ pipx install getsploit
$ uv tool install getsploit
$ python -m pip install getsploit
Chave de API
Crie uma chave na sua conta Vulners e então exponha-a por meio do ambiente:
$ export VULNERS_API_KEY="your-key" # pragma: allowlist secret
$env:VULNERS_API_KEY = "your-key" # pragma: allowlist secret
getsploit --set-key armazena uma chave por meio de um prompt de confirmação oculto, em um arquivo
privado dentro do diretório inicial do Getsploit. A variável de ambiente tem precedência sobre esse arquivo e é
a melhor escolha para automação. Não existe uma opção --api-key: uma chave passada na
linha de comando acaba no histórico do shell e na lista de processos.
A busca online e --update precisam de uma chave. --local e --status não precisam.
Uso
Busca online
$ getsploit CVE-2024-3094
$ getsploit "wordpress 4.7 remote code execution" --count 25
A consulta chega ao Vulners inalterada, portanto sua sintaxe Lucene funciona como documentado:
$ getsploit 'title:wordpress AND description:"code execution"'
--count acima de 100 é paginado de forma transparente; uma única resposta da API nunca carrega mais
de 100 documentos.
Busca offline
$ getsploit --update # baixa o arquivo e constrói o índice FTS5
$ getsploit --status # onde está, tamanho, quantos documentos
$ getsploit --local wordpress 4.7
Palavras de busca comuns são correspondidas literalmente, portanto identificadores e números de versão funcionam como
digitados: wordpress 4.7, CVE-2024-3094, ms17-010. Uma consulta que usa filtros de coluna,
operadores booleanos, aspas, parênteses, * ou ^ é tratada como uma
expressão SQLite FTS5 e relata seu próprio erro
quando malformada:
$ getsploit --local 'title:eternalblue AND NOT description:metasploit'
As colunas pesquisáveis são id, title, published, description e source_data. A
grafia legada sourceData: ainda é aceita.
Salvando fontes de exploits
$ getsploit --mirror wordpress 4.7
$ getsploit --local --mirror eternalblue
Os arquivos são gravados em um diretório derivado da consulta, um arquivo por exploit, criados sem seguir symlinks e nunca sobrescrevendo nada que já exista.
[!WARNING] Arquivos espelhados são código de terceiros não confiável. Leia-os antes de executá-los.
Saída legível por máquina
$ getsploit --format json CVE-2024-3094
$ getsploit --format jsonl wordpress | jq -r .id
$ getsploit wordpress > results.tsv # saída redirecionada é separada por tabulação
--json continua sendo um alias para --format json.
Controle do terminal
$ getsploit --color always query | less -R
$ getsploit --color never query
A cor padrão é auto. Um terminal largo recebe uma tabela, um estreito recebe registros
empilhados e um fluxo redirecionado recebe valores separados por tabulação — os mesmos dados nos três casos.
Execute getsploit --help para a lista completa de opções.
O banco de dados local
| Localização | ~/.getsploit/getsploit.db, ou $GETSPLOIT_HOME |
| Formato | SQLite com índice FTS5 de conteúdo externo |
| Tokenizador | unicode61 remove_diacritics 2 |
| Tamanho | aproximadamente 1,7 GB para o corpus completo |
| Atualização | atômica: o novo banco de dados substitui o antigo em uma única operação |
Uma atualização baixa o arquivo por oito conexões paralelas de range, descompacta e converte-o ao lado do destino, verifica-o e só então faz o commit. O uso de memória não depende do tamanho do arquivo. Uma busca já em execução contra o banco de dados antigo termina contra ele sem interferência.
Bancos de dados criados pelo Getsploit 2.x permanecem pesquisáveis; o próximo --update os migra
de FTS4 para FTS5. Expressões de proximidade FTS4, como one NEAR/5 two, devem ser reescritas
na forma FTS5 NEAR(...).
Compatibilidade
| Python | 3.11, 3.12, 3.13, 3.14 |
| Sistemas operacionais | Linux, macOS, Windows |
| SDK do Vulners | 4.1 e 4.x mais recentes |
| Dependências de runtime | click, rich, vulners |
Desenvolvimento
$ git clone https://github.com/vulnersCom/getsploit.git
$ cd getsploit
$ uv sync --all-groups
$ make check
| Comando | Finalidade |
|---|---|
make format | Formatar e corrigir automaticamente os arquivos-fonte |
make lint | Verificar formatação, lint e tipos |
make test | Executar testes em paralelo |
make coverage | Garantir 100% de cobertura de statements e branches |
make leaks | Verificar segredos em arquivos rastreados |
make build | Criar a wheel e a distribuição de código-fonte |
make release | Executar todos os portões e validar ambas as distribuições |
make check | Tudo acima que bloqueia um merge |
CONTRIBUTING.md contém as regras de contribuição e ARCHITECTURE.md os limites dos módulos e as invariantes do banco de dados.
Um release é uma tag v<versão> enviada ao repositório. A partir dela,
o workflow de release reexecuta o portão completo no commit
marcado, publica no PyPI por meio de trusted publishing e grava o release no GitHub
a partir do changelog. Não existe token PyPI para vazar.
Segurança
Arquivos-fonte de exploits são conteúdo não confiável: revise-os antes de abrir ou executar. O Getsploit em si nunca executa o que baixa.
Releases são publicados a partir do GitHub Actions por meio de trusted publishing do PyPI, portanto não existe token de API de longa duração para vazar, e todo artefato carrega uma atestação de proveniência de build. Para relatar uma vulnerabilidade no Getsploit, siga SECURITY.md.
Licença
MIT © Vulners Team e colaboradores.