
Ищите и скачивайте публичные эксплойты из базы данных Vulners — онлайн или полностью офлайн, из локального индекса SQLite FTS5.
Поиск и загрузка публичных эксплойтов из базы Vulners — онлайн или полностью офлайн по локальному индексу.
Получить API-ключ · Поиск Vulners · Журнал изменений · Архитектура · Политика безопасности

--update создаёт локальный SQLite FTS5-индекс
всего корпуса эксплойтов; каждый последующий поиск выполняется локально.wordpress 4.7, CVE-2024-3094 и ms17-010
сопоставляются буквально, а осознанное полнотекстовое выражение по-прежнему получает
полный синтаксис FTS5.--mirror записывает тело каждого эксплойта в отдельный
файл.Для Getsploit требуется Python 3.11 или новее.
$ pipx install getsploit
$ uv tool install getsploit
$ python -m pip install getsploit
Создайте ключ в вашем аккаунте Vulners, затем укажите его через переменную окружения:
$ export VULNERS_API_KEY="your-key" # pragma: allowlist secret
$env:VULNERS_API_KEY = "your-key" # pragma: allowlist secret
getsploit --set-key сохраняет ключ через скрытый запрос подтверждения в приватном
файле в домашнем каталоге Getsploit. Переменная окружения имеет приоритет над этим
файлом и лучше подходит для автоматизации. Опции --api-key не существует: ключ,
переданный в командной строке, попадает в историю shell и в список процессов.
Для онлайн-поиска и --update нужен ключ. Для --local и --status — нет.
$ getsploit CVE-2024-3094
$ getsploit "wordpress 4.7 remote code execution" --count 25
Запрос передаётся в Vulners без изменений, поэтому его синтаксис Lucene работает как описано в документации:
$ getsploit 'title:wordpress AND description:"code execution"'
--count больше 100 прозрачно разбивается на страницы; один ответ API никогда
не содержит более 100 документов.
$ getsploit --update # скачать архив и построить FTS5-индекс
$ getsploit --status # где находится, размер, количество документов
$ getsploit --local wordpress 4.7
Обычные поисковые слова сопоставляются буквально, поэтому идентификаторы и номера
версий работают как введённые: wordpress 4.7, CVE-2024-3094, ms17-010. Запрос,
использующий фильтры по колонкам, логические операторы, кавычки, скобки, * или ^,
обрабатывается как выражение SQLite FTS5
и при некорректном синтаксисе сообщает собственную ошибку:
$ getsploit --local 'title:eternalblue AND NOT description:metasploit'
Поисковые колонки: id, title, published, description и source_data.
Устаревшее написание sourceData: по-прежнему принимается.
$ getsploit --mirror wordpress 4.7
$ getsploit --local --mirror eternalblue
Файлы сохраняются в каталог, определяемый запросом, по одному файлу на эксплойт; каталог создаётся без перехода по символическим ссылкам и никогда не перезаписывает уже существующие файлы.
[!WARNING] Зеркалированные файлы — это недоверенный сторонний код. Прочитайте их перед запуском.
$ getsploit --format json CVE-2024-3094
$ getsploit --format jsonl wordpress | jq -r .id
$ getsploit wordpress > results.tsv # при перенаправлении вывод разделён табуляцией
--json остаётся псевдонимом для --format json.
$ getsploit --color always query | less -R
$ getsploit --color never query
Цвет по умолчанию — auto. На широком терминале выводится таблица, на узком — записи
друг под другом, а при перенаправлении потока — значения, разделённые табуляцией:
в любом случае это одни и те же данные.
Выполните getsploit --help, чтобы увидеть полный список опций.
При обновлении архив скачивается по восьми параллельным range-соединениям, распаковывается и конвертируется рядом с целевым расположением, проверяется и только затем фиксируется. Использование памяти не зависит от размера архива. Уже запущенный поиск по старой базе продолжает работать с ней без помех.
Базы, созданные Getsploit 2.x, остаются доступными для поиска; следующая команда
--update перенесёт их с FTS4 на FTS5. Проксимити-выражения FTS4, такие как
one NEAR/5 two, необходимо переписать в форму NEAR(...) FTS5.
| Python | 3.11, 3.12, 3.13, 3.14 |
| Операционные системы | Linux, macOS, Windows |
| Vulners SDK | 4.1 и новее 4.x |
| Зависимости времени выполнения |
$ git clone https://github.com/vulnersCom/getsploit.git
$ cd getsploit
$ uv sync --all-groups
$ make check
CONTRIBUTING.md содержит правила внесения вклада, а ARCHITECTURE.md — границы модулей и инварианты базы данных.
Релиз — это запушенный тег v<version>. Затем
пайплайн релиза повторно прогоняет все проверки
на тегированном коммите, публикует пакет в PyPI через trusted publishing и создаёт
релиз GitHub на основе журнала изменений. Никакого PyPI-токена, который мог бы
утечь, не существует.
Файлы исходников эксплойтов — недоверенное содержимое: просматривайте их перед открытием или запуском. Сам Getsploit никогда не выполняет загруженное.
Релизы публикуются из GitHub Actions через trusted publishing PyPI, поэтому не существует долгоживущего API-токена, который мог бы утечь, а каждый артефакт содержит подтверждение происхождения сборки. Чтобы сообщить об уязвимости в Getsploit, следуйте инструкциям в SECURITY.md.
MIT © Vulners Team и участники проекта.
| Расположение | ~/.getsploit/getsploit.db или $GETSPLOIT_HOME |
| Формат | SQLite с индексом FTS5 для внешнего содержимого |
| Токенизатор | unicode61 remove_diacritics 2 |
| Размер | примерно 1.7 ГБ для полного корпуса |
| Обновление | атомарно: новая база заменяет старую одной операцией |
click, rich, vulners |
| Команда | Назначение |
|---|
make format | Форматирование и автоисправление исходных файлов |
make lint | Проверка форматирования, линтера и типов |
make test | Запуск тестов параллельно |
make coverage | Обеспечение 100% покрытия операторов и ветвлений |
make leaks | Поиск секретов в отслеживаемых файлах |
make build | Сборка wheel и исходного дистрибутива |
make release | Запуск всех проверок и валидация обоих дистрибутивов |
make check | Все вышеперечисленное, что блокирует merge |