
認可されたペネトレーションテスト向けの教育用Pythonツールキット:スレッド化ポートスキャナー、サブドメインおよびディレクトリ列挙、バナーグラバー、ホストディスカバリを備え、リッチなCLIを提供します。
軽量で教育目的のPythonツールキットで、許可されたペネトレーションテストで使用される一般的な偵察および列挙タスクを自動化します。サイバーセキュリティ/倫理的ハッキングの練習用の学習プロジェクトとして構築されました。
このツールキットはアクティブスキャンと列挙を実行します。所有していないシステム、またはテストに対する明示的な書面による許可がないシステムに対して実行することは、ほとんどの法域で犯罪となる可能性があります。
作者は誤用に対して一切の責任を負いません。
| コマンド | 動作 |
|---|---|
portscan | ホストに対する並行TCPコネクトスキャン |
banner | 開いているポートからサービスバナーを取得 |
dirscan | ワードリストからWebパスを列挙 |
subdomains | 候補サブドメインを解決 |
netscan | CIDR範囲全体で稼働中のホストを検出 |
httpprobe | HTTPレスポンスを検査(ステータス、ヘッダー、プレビュー) |
logincheck | 脆弱/デフォルト認証情報リスクのラボ専用デモ(レート制限あり) |
v1 → v2 での変更点:モジュール化されたパッケージ、サブコマンド付きの argparse CLI、スレッド化されたスキャナー、rich によるUI(ASCIIバナー、ライブプログレスバー、結果テーブル)、入力検証、認証ゲート、ユニットテスト、GitLab CIパイプライン。
# install virtualenv and activate
python3 -m venv venv
. venv/bin/activate
# install packages
pip3 install -r requirements.txt
# run (always from the project root)
python3 main.py --help
python -m venv venv
. .\venv\Scripts\activate # (PowerShell)
. venv/scripts/activate # (Git Shell)
pip install -r requirements.txt
python main.py --help
常にプロジェクトルートから python main.py … で実行してください(src パッケージには http や dir という名前のモジュールが含まれているため、src/ 内からスクリプトを実行すると標準ライブラリをシャドウする可能性があります)。
# Port scan with a custom port set / range
python main.py portscan 192.168.1.10 --ports 22,80,443
python main.py portscan 192.168.1.10 --ports 1-1024
# Banner grab
python main.py banner 192.168.1.10 22
# Directory enumeration (default or custom wordlist)
python main.py dirscan http://target.local
python main.py dirscan http://target.local --wordlist admin login backup api
# Subdomain discovery
python main.py subdomains example.com
# Live-host discovery on a subnet
python main.py netscan 192.168.1.0/24
# HTTP response inspection
python main.py httpprobe http://target.local
# Credential test against a lab login form (authorization required)
python main.py logincheck http://target.local/login \
--users admin user --passwords admin 1234 password
# Global options
python main.py --threads 100 --timeout 1.5 -v portscan 192.168.1.10
# Skip the interactive prompt in scripted, pre-scoped engagements
python main.py --i-am-authorized netscan 10.0.0.0/24
pip install -r requirements-dev.txt # runtime + pytest + ruff
pytest -v # run tests
ruff check . # lint
ランタイム依存関係は requirements.txt にあり、テスト/リントツールは requirements-dev.txt にあります(ランタイムのものも取り込みます)ので、エンドユーザーが pytest をインストールすることはありません。
GitLabパイプライン(.gitlab-ci.yml)は、プッシュごとにリント+テストを実行します。
simple-pentesting/
├── main.py # entry point (run from here)
├── src/ # the package
│ ├── __init__.py
│ ├── cli.py # argparse CLI
│ ├── config.py # defaults & Settings
│ ├── utils.py # validation helpers
│ ├── ui.py # rich UI: banner, progress, tables, auth prompt
│ ├── port_scanner.py # one file per feature ↓
│ ├── banner.py
│ ├── dir.py
│ ├── subdomain.py
│ ├── netscan.py
│ ├── http.py
│ └── login_check.py
├── tests/ # offline unit tests
├── .gitlab-ci.yml
├── requirements.txt # runtime deps
├── requirements-dev.txt # + pytest, ruff
├── LICENSE
└── .gitignore