
50以上の収集モジュール、DNSブルートフォース、パッシブDNS分析、証明書透過性、検索エンジンスクラピング、およびサブドメイン乗っ取り検出を備えた、偵察用のマルチソースサブドメイン列挙ツール。
👊OneForAllは強力なサブドメイン収集ツールです 📝英語ドキュメント
📢 このドキュメントを必ずお読みください。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からのダウンロードは推奨しません。Releasesのバージョン更新は遅く、更新も不便だからです。このプロジェクトは码云(Gitee)にミラーされています。国内の方はGiteeからクローンする方が速いです:
git clone https://gitee.com/shmilylty/OneForAll.git
または:
git clone https://github.com/shmilylty/OneForAll.git
pip3を使ってOneForAllの依存関係をインストールできます。以下はWindowsシステムでpip3を使って依存関係をインストールする例です:注意:Python3がシステムのProgram Filesディレクトリ(例:C:\Program Files\Python36)にインストールされている場合は、管理者としてコマンドプロンプト(cmd)を実行して以下のコマンドを実行してください!
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
他のプラットフォームについては依存関係のインストールを参照してください。依存関係のインストール中に特定のライブラリのコンパイルに失敗した場合は、よくある質問と回答.mdの解決方法を参照してください。それでも解決しない場合は、グループに参加してフィードバックしてください。
以下のコマンドを実行してプロジェクトを更新します(/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はOneForAll実行ごとに収集されたサブドメインを保存するSQLite3結果データベースで、そのデータベース構造は以下の通りです:

example_com_origin_resultのようなテーブルには各モジュールの最初のサブドメイン収集結果が保存されます。
example_com_resolve_resultのようなテーブルにはサブドメインの解決結果が保存されます。
example_com_last_resultのようなテーブルには前回のサブドメイン収集結果が保存されます(2回以上収集すると生成されます)。
example_com_now_resultのようなテーブルには現在のサブドメイン収集結果が保存されます。通常はこのテーブルを確認すれば十分です。
詳細はフィールド説明を参照してください。
コマンドライン引数は一般的なものだけを提供しています。より詳細なパラメータ設定はsetting.pyを参照してください。コマンドラインでよく使うパラメータが不足しているなどの問題があれば、フィードバックをお願いします。周知の理由により、一部の収集インターフェースがブロックされている場合、setting.pyでプロキシを設定してください。一部の収集モジュールではAPIの提供が必要です(ほとんどはアカウント登録で無料で取得できます)。使用する場合はapi.pyでAPI情報を設定してください。使用しない場合は関連するエラーを無視してください。(詳細なモジュールは収集モジュール説明を参照)
OneForAllのコマンドラインインターフェースはFireに基づいています。Fireのより高度な使い方についてはFire CLIの使用を参照してください。
oneforall.pyがメインプログラムのエントリです。oneforall.pyはbrute.py、takerover.py、dbexport.pyなどのモジュールを呼び出せます。サブドメインのブルートフォースを容易にするためにbrute.pyが独立しており、サブドメインの乗っ取りリスクチェックのためにtakerover.pyが独立しており、データベースエクスポートのためにdbexport.pyが独立しています。これらのモジュールは個別に実行でき、より多くのパラメータを受け付けます。個別に使用する場合は使用ヘルプを参照してください。
❗注意:使用中に問題や疑問が生じた場合は、まずIssuesで検索して答えを探し、よくある質問と回答も参照してください。
oneforall.pyの使い方
以下のヘルプ情報は最新ではない可能性があります。python oneforall.py --helpで最新のヘルプ情報を取得してください。
python oneforall.py --help
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
每行一个域名的文件路径(二选一必需参数)