Назад к обновлениям
New releaseAug 16, 2026

Smap v1.0.0-beta

замена Nmap «как есть» на основе shodan.io

Поделиться

Логотип Smap

альтернатива nmap на базе shodan.io

Демонстрация Smap

Smap — это пассивный сканер портов, построенный на бесплатном API shodan.io. Он принимает те же аргументы командной строки, что и Nmap, и выдаёт тот же вывод, что делает его готовой заменой Nmap.

Возможности

  • Сканирует 200 хостов в секунду
  • Не требует аккаунта или API-ключа
  • Обнаружение уязвимостей
  • Поддерживает выходные форматы nmap
  • Определение сервисов и их версий
  • Не устанавливает соединение с целями в пассивном режиме
  • Опциональное ускорение nmap с использованием портов, сообщённых Shodan

Установка

Бинарные файлы

Вы можете скачать готовый бинарный файл здесь и использовать его сразу.

Вручную

go install -v github.com/s0md3v/smap/cmd/smap@latest

Запутались или что-то не работает? Более подробные инструкции — здесь

Пакет AUR

Smap доступен в AUR как smap-git (сборка из исходников) и smap-bin (готовый бинарный файл).

Homebrew/Mac

Smap также доступен в Homebrew.

brew update
brew install smap

Использование

Smap принимает те же аргументы, что и Nmap, но параметры, отличные от -p, -h, -V, -o*, -iL, --concurrency и --append-output, в пассивном режиме игнорируются. Используйте --nmap, чтобы передать параметры Nmap для реального сканирования после пассивного обнаружения портов. Если вы не знакомы с Nmap, вот как использовать Smap.

Указание целей

smap 127.0.0.1 127.0.0.2

Вы также можете использовать список целей, разделённых переводами строк.

smap -iL targets.txt

Поддерживаемые форматы

1.1.1.1         // IPv4 address
example.com     // hostname
178.23.56.0/8   // CIDR
1.1.1.1-20      // IPv4 range

Вывод

Smap поддерживает 7 форматов вывода, которые можно использовать с -o* следующим образом:

smap example.com -oX output.xml

Если вы хотите вывести результат в терминал, используйте дефис (-) в качестве имени файла.

Поддерживаемые форматы

oX    // nmap's xml format
oG    // nmap's greppable format
oN    // nmap's default format
oA    // output in all 3 formats above at once
oP    // IP:PORT pairs separated by newlines
oS    // custom smap format
oJ    // json

Примечание: поскольку Nmap не сканирует и не отображает уязвимости и теги, эти данные недоступны в форматах nmap. Используйте -oS, чтобы просмотреть эту информацию.

Указание портов

По умолчанию Smap сканирует эти ~4000 портов. Если вы хотите отобразить результаты для определённых портов, используйте параметр -p.

smap -p21-30,80,443 -iL targets.txt

Ускорение Nmap

Используйте --nmap, чтобы сузить область сканирования с помощью вашего локального nmap. Smap сначала собирает объединение портов, сообщённых Shodan, а затем один раз запускает Nmap против исходных целей с уменьшенным диапазоном портов.

smap --nmap -Pn -sV --version-light 1.1.1.1

За исключением --nmap и --concurrency, переданные аргументы передаются Nmap. Smap заменяет диапазон портов кандидатами Shodan; если вы укажете -p, он сначала ограничивает кандидатов этим диапазоном. Nmap сам обрабатывает сканирование и вывод, поэтому его параметры и форматы вывода работают как обычно. Операции только с хостами, такие как -sL и -sn, выполняются без пассивного обнаружения портов.

Собственные форматы вывода Smap — это функции пассивного режима; при использовании --nmap параметры вывода имеют обычные значения Nmap. Если Shodan не сообщает ни одного кандидатного порта, Nmap не запускается.

Это может сэкономить время, если пассивных данных достаточно для вашего сценария использования.

Управление параллелизмом

По умолчанию Smap использует 3 рабочих потока, чтобы не слишком нагружать Shodan. Вы можете изменить это с помощью --concurrency.

smap --concurrency 5 -iL targets.txt

Рекомендации

Поскольку Smap просто получает существующие данные о портах с shodan.io, он очень быстр, но это ещё не всё. Вам стоит использовать Smap, если:

Вы хотите

  • обнаружение уязвимостей
  • сверхбыстрый сканер портов
  • отсутствие соединений с целями

Вы готовы к тому, что

  • нет возможности сканировать IPv6-адреса
  • результаты могут быть устаревшими до 7 дней
  • в пассивном режиме возможно редкое ненадёжное определение программного обеспечения

Примечание: если вы используете --nmap, Smap запустит nmap против цели и установит активные соединения. Поскольку данные Shodan могут быть устаревшими или неполными, использование их в качестве фильтра портов может пропустить открытые порты.

Категории