
Инструмент для перечисления поддоменов с более чем 50 модулями сбора, DNS-брутфорсом, пассивным анализом DNS, прозрачностью сертификатов, извлечением данных из поисковых систем и обнаружением захвата поддоменов для разведки.
👊OneForAll — мощный инструмент для сбора поддоменов 📝English Document
📢 Обязательно уделите время прочтению этого документа, это поможет быстро освоить OneForAll!
OneForAll разработан и протестирован на Python 3.6.0. Для работы OneForAll требуется версия Python выше 3.6.0. Инструкцию по установке Python можно найти в Руководстве по установке Python 3. Выполните следующие команды для проверки версий Python и pip3:
python -V
pip3 -V
Если вы видите примерно такой вывод, значит с окружением Python всё в порядке:
Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
Поскольку проект находится в разработке и постоянно обновляется, при загрузке используйте git clone для клонирования актуального репозитория. Это также удобно для последующего обновления. Не рекомендуется загружать из Releases, так как там версии обновляются реже и неудобно обновляться.
Репозиторий также зеркалирован на Gitee. Для пользователей из Китая рекомендуется клонировать оттуда:
git clone https://gitee.com/shmilylty/OneForAll.git
Или:
git clone https://github.com/shmilylty/OneForAll.git
Вы можете установить зависимости OneForAll с помощью pip3. Ниже приведён пример установки зависимостей с помощью pip3 в Windows: Примечание: если ваш Python3 установлен в системную директорию Program Files, например C:\Program Files\Python36, запускайте командную строку от имени администратора при выполнении следующих команд!
cd OneForAll/
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --help
Для других операционных систем обратитесь к Установке зависимостей. Если во время установки зависимостей возникла ошибка компиляции какой-либо библиотеки, смотрите раздел Часто задаваемые вопросы и ответы. Если проблема не решается, присоединяйтесь к группе для обратной связи.
Выполните следующие команды для обновления проекта (изменения в /config/setting.py и /config/api.py будут сохранены):
git stash # временно сохранить локальные изменения
git fetch --all # загрузить обновления проекта
git pull # применить обновления
git stash pop # восстановить локальные изменения
Сначала загрузите и отредактируйте конфигурационные файлы, добавьте свои api и личные настройки, сохранив исходную структуру файлов:
config
├── api.py
├── default.py
├── __init__.py
├── log.py
└── setting.py
Запустите образ, заменив ~/.config на путь к вашей папке с конфигурационными файлами:
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run
Параметры добавляются в конец команды. Результаты будут сохранены в локальную директорию ~/results. При необходимости путь можно изменить.
Если вы установили зависимости через pip3, запустите пример следующими командами:
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
Рассмотрим команду python3 oneforall.py --target example.com run. При выполнении с параметрами по умолчанию OneForAll создаст соответствующие результаты в директории results:

example.com.csv — результаты сбора поддоменов для каждого основного домена.
all_subdomain_result_1583034493.csv — сводный файл с результатами всех поддоменов за один запуск OneForAll, включающий example.com.csv. Удобен для получения полных результатов в сценариях массового сбора.
result.sqlite3 — база данных SQLite3, хранящая результаты сбора поддоменов за каждый запуск. Структура базы данных показана ниже:

Таблицы вида example_com_origin_result содержат первоначальные результаты сбора поддоменов каждого модуля.
Таблицы вида example_com_resolve_result содержат результаты разрешения поддоменов.
Таблицы вида example_com_last_result содержат результаты предыдущего сбора (создаются после двух и более запусков).
Таблицы вида example_com_now_result содержат текущие результаты сбора. Обычно достаточно следить именно за этой таблицей.
Дополнительную информацию см. в Пояснении полей.
Параметры командной строки предоставляют лишь часто используемые опции. Более детальная настройка параметров описана в setting.py. Если вы считаете, что какой-то параметр часто используется в командном интерфейсе или чего-то не хватает, приветствуются отзывы. По известным причинам, если необходимо использовать заблокированные интерфейсы сбора, сначала настройте прокси в setting.py. Некоторые модули сбора требуют API (большинство можно получить бесплатно после регистрации). Если нужно их использовать, сконфигурируйте API в api.py. Если не используете, игнорируйте соответствующие сообщения об ошибках. (Подробнее о модулях читайте в Описании модулей сбора.)
Интерфейс командной строки OneForAll построен на Fire. Более продвинутое использование Fire см. в Использование CLI Fire.