简介
借助官方的宣传简介阐述一下:
 在渗透测试中信息收集的重要性不言而喻,子域收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题:
- 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证,FUZZ以及信息拓展等功能。
- 不够友好,固然命令行模块比较方便,但是当可选的参数很多,要实现的操作复杂,用命令行模式就有点不够友好,如果有交互良好,高可操作的前端那么使用体验就会好很多。
- 缺少维护,很多工具几年没有更新过一次,issues和PR是啥,不存在的。
- 效率问题,没有利用多进程,多线程以及异步协程技术,速度较慢。
为了解决以上痛点,此项目应用而生,正如其名,我希望OneForAll是一款集百家之长,功能强大的全面快速子域收集终极神器。
 github地址:https://github.com/shmilylty/OneForAll
 更多详细使用可以在官方简介里面去查阅。
安装
安装要求
OneForAll基于Python 3.6.0开发和测试,OneForAll需要高于Python 3.6.0的版本才能运行。
 确保自己的环境是满足要求的:
 
安装过程
有两种方式安装,git方式安装和docker方式安装。
 两种方式任选都行,下面演示git的安装方式。
 先将源码克隆到任意目录:
git clone https://github.com/shmilylty/OneForAll.git
或者:
git clone https://gitee.com/shmilylty/OneForAll.git


 然后进行安装:
 先通过通过pip3安装OneForAll的依赖,进入OneForAll根目录,以管理员身份运行cmd,依次执行下面命令:
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
出现就成果了:
 
项目更新
git stash        # 暂存本地的修改
git fetch --all  # 拉取项目更新
git pull         # 下载覆盖
git stash pop    # 释放本地修改
使用
NAME
    oneforall.py - OneForAll帮助信息
SYNOPSIS
    oneforall.py COMMAND | --target=TARGET <flags>
DESCRIPTION
    OneForAll是一款功能强大的子域收集工具
    Example:
        python3 oneforall.py version
        python3 oneforall.py --target example.com run
        python3 oneforall.py --targets ./domains.txt run
        python3 oneforall.py --target example.com --valid None run
        python3 oneforall.py --target example.com --brute True run
        python3 oneforall.py --target example.com --port small run
        python3 oneforall.py --target example.com --fmt csv run
        python3 oneforall.py --target example.com --dns False run
        python3 oneforall.py --target example.com --req False run
        python3 oneforall.py --target example.com --takeover False run
        python3 oneforall.py --target example.com --show True run
    Note:
        参数alive可选值True,False分别表示导出存活,全部子域结果
        参数port可选值有'default', 'small', 'large', 详见config.py配置
        参数fmt可选格式有 'csv','json'
        参数path默认None使用OneForAll结果目录生成路径
ARGUMENTS
    TARGET
        单个域名(二选一必需参数)
    TARGETS
        每行一个域名的文件路径(二选一必需参数)
FLAGS
    --brute=BRUTE
        s
    --dns=DNS
        DNS解析子域(默认True)
    --req=REQ
        HTTP请求子域(默认True)
    --port=PORT
        请求验证子域的端口范围(默认只探测80端口)
    --valid=VALID
        只导出存活的子域结果(默认False)
    --fmt=FMT
        结果保存格式(默认csv)
    --path=PATH
        结果保存路径(默认None)
    --takeover=TAKEOVER
        检查子域接管(默认False)
示例

 
 具体更为详细的参数,可进入配置文件:config/setting.py进行查看/配置。



















