
ノック サブドメイン スキャン
✅ 高速 & 非同期 • 🔐 リコン + ブルートフォース • 🔧 拡張容易
KnockPy は、パッシブリコンネサンスとブルートフォースによりサブドメインを列挙するモジュール式のPython 3ツールです。async/await対応、パフォーマンス向上、最新のHTTP/TLS処理を備えています。
httpx と DNS 解決を使用)--verbose 単一ドメイン診断(DNS/TCP/TLS/リダイレクトチェーン/リクエストエラー + セキュリティチェック)show/delete/export/search)git clone https://github.com/guelfoweb/knockpy.git
cd knockpy
# recommended: install in a virtual environment
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install -U pip
pip install .
# alternative: install for the current user (no venv)
# python3 -m pip install --user .
⚠️ 推奨Pythonバージョン: 3.9以上
コードベースは責務ごとに整理されており、後方互換性を保つ安定したファサードを提供します。
knockpy/
cli.py # CLIエントリポイント(ファサード/オーケストレーション)
cli_parts/
status.py # 実行時/ステータスパネルのレンダリング
setup.py # インタラクティブセットアップと永続的な実行時デフォルト
report.py # インタラクティブレポートモード
scan_flow.py # 除外ルール、リコンテスト、ワイルドカードヘルパー
core.py # 公開コアファサード(互換性)
engine/
runtime.py # スキャンエンジンの実装
storage.py # 公開ストレージファサード(互換性)
storage_parts/
db.py # SQLite永続化/設定
export.py # レポートエクスポートのオーケストレーション
html_report.py # HTMLレポートのレンダリング
output.py # ターミナル出力のレンダリング
server_versions.py # Webサーバーバージョンカタログ
knockpy.py # 互換モジュールのエクスポート
互換性に関する注意:
import knockpy または from knockpy import KNOCKPYengine/、cli_parts/、storage_parts/ に分割されています。GitHubで安定版がリリースされた後にのみ
pip install knock-subdomains
knockpy -d domain.com [options]
--threads と --timeoutこれらの2つのオプションは、大規模スキャンの実行時間に最も大きな影響を与えます。
--threads は同時実行数を制御(並列処理されるターゲット数)--timeout は各ネットワークステップが諦めるまでの待機時間を制御トレードオフ:
threads が高い = スキャンは高速だが、CPU/ネットワーク/DNS負荷が増加し、リモートレート制限のリスクが高まるtimeout が低い = スキャンは高速だが、低速ながら有効なターゲットを見逃すリスク(偽陰性)が高まる推奨プロファイル:
--threads 50 --timeout 5--threads 150 --timeout 4--threads 250 --timeout 3非常に大きなリストで速度と完全性の両方が必要な場合は、2パス戦略を使用:
--threads 250 --timeout 3--threads 80 --timeout 5(またはそれ以上)注意:
--setup)は組み込みデフォルトを上書きしますthreads=250、timeout=3 ですknockpy -d example.com --recon --bruteforce
knockpy -d example.com --recon --test
knockpy --update-versions
knockpy --check-update
初回実行時に、KnockPyは以下を作成します。
~/.knockpy/recon_services.json
services 配列を編集することで、ソースの追加/無効化が可能です。
また、コードを変更せずにカスタムファイルパスを指定することもできます。
export KNOCK_RECON_SERVICES=/path/to/recon_services.json
各サービスは以下をサポートします。
nameenabled(true/false)parserurl_template({domain}、{virustotal_key}、{shodan_key} をサポート)requires_api(virustotal または shodan、オプション)サポートされているパーサー:
csv_first_columnrapiddns_html_tdjson_listvirustotal_subdomainsshodan_subdomainsecho "example.com" | knockpy -d
export API_KEY_VIRUSTOTAL=your-virustotal-api-key
export API_KEY_SHODAN=your-shodan-api-key
.env ファイルを使用できます:
API_KEY_VIRUSTOTAL=your-virustotal-api-key
API_KEY_SHODAN=your-shodan-api-key
knockpy -d example.com --recon --bruteforce
knockpy --report list
knockpy --report latest
knockpy --report
インタラクティブレポートメニュー:
1 show2 delete3 export4 search0 reset db(明示的な確認を要求)レポートモードを終了:
Enter を押すCTRL+C を押すknockpy -d forum.example.com --verbose
knockpy -d example.com --wildcard
KnockPyはPythonモジュールとして使用できます。
import knockpy
result = knockpy.KNOCKPY("example.com", timeout=5.0, threads=20)
print(result["domain"], result["ip"])
または:
from knockpy import KNOCKPY
domain = 'example.com'
results = KNOCKPY(
domain,
dns="8.8.8.8",
useragent="Mozilla/5.0",
timeout=5,
threads=10,
recon=True,
bruteforce=True,
wordlist=None,
silent=False
)
for entry in results:
print(entry['domain'], entry['ip'], entry['http'], entry['cert'])
デフォルトのワードリストは knockpy/wordlist/wordlist.txt に含まれています。
独自のワードリストを --wordlist で指定できます。
python3 -m pytest
# (optional) smoke-run example script
python3 examples/poc.py
GPLv3ライセンスのもとで提供されています。
Gianni Amato (@guelfoweb)
| フラグ | 説明 |
|---|
-d, --domain | 対象ドメイン(値なしの場合はstdinを使用) |
-f, --file | ドメインリストのファイル |
--recon | パッシブリコンネサンスを有効化 |
--bruteforce, --brute | ワードリストを使用したブルートフォースを有効化 |
--exclude TYPE VALUE | 一致を除外(status、length/lenght、body) |
--verbose | 単一ドメインスキャンのみ詳細診断 |
--wildcard | ワイルドカードDNSをテストして終了 |
--test | --recon と併用、各リコンソースをテスト(失敗/空/データ) |
--setup | インタラクティブセットアップ(DB内の実行時デフォルト + APIキー) |
--update-versions | ローカルの最新Webサーバーバージョンカタログを更新 |
--report [ID|latest|list] | レポートモード(インタラクティブなshow/delete/export/search/reset db、HTMLエクスポート) |
--check-update | PyPIで新しいKnockpyリリースが利用可能かオンラインチェック |
--wordlist | ワードリストの実行時オーバーライド |
--dns | DNSリゾルバの実行時オーバーライド |
--useragent | HTTP User-Agentの実行時オーバーライド |
--timeout | タイムアウト(秒)の実行時オーバーライド |
--threads | 並列ワーカーの実行時オーバーライド |
--silent | プログレスバーを非表示 |
--json | JSONのみの出力(--silent を強制) |
--status | 実行時ステータスを表示して続行 |
-h, --help | ヘルプメッセージを表示 |