PhantomPort(ファントムポート) — 教育用トイサーバ/ポートスキャナ+シンプルGUI

Security

概要

PhantomPortは「toy server + scanner + simple GUI」をコンセプトにした教育用ツールセットです。単一のPythonスクリプト(phantomport.py)でサーバ動作とスキャン機能を持ち、GUI(gui.py)から操作できるようになっています。READMEにはサーバ起動やスキャンの実行例が記載され、PyInstallerを用いた単一実行ファイル化の手順も示されています。学習目的で自分のマシンやテスト環境内のみで使用することが強調されており、ネットワークプログラミング/ポートスキャンの基本動作を学ぶための入門用リポジトリです。

GitHub

リポジトリの統計情報

  • スター数: 9
  • フォーク数: 0
  • ウォッチャー数: 9
  • コミット数: 5
  • ファイル数: 5
  • メインの言語: Python

主な特徴

  • コマンドラインでサーバ起動(toy server)とポートスキャンが可能。
  • シンプルなGUI(gui.py)で手軽に操作できるラッパーを提供。
  • PyInstallerを使った単一ファイル化手順をREADMEに記載。
  • 教育目的に特化、テスト環境での使用を想定。

技術的なポイント

READMEの実行例から分かるように、phantomport.pyは少なくとも二つの動作モード(serverとscan)を持つ単一スクリプトです。serverモードはシンプルなサーバを立てて接続を受け付ける「おもちゃ的」な実装で、学習用としてソケットの受け口や接続処理の基本を学ぶ目的と考えられます。一方、scanモードはホストとポート範囲を受け取り、並列処理パラメータ(例:READMEの “40”)を指定して効率的にポートの開閉を確認する典型的なポートスキャナのCLIインターフェースを提供します。実装上の重要点としては、以下が挙げられます。

  • ソケットを用いた接続試行とタイムアウト設定:TCP接続の試行でエラーやタイムアウトを正しく扱うことでノイズの多いネットワークでも安定したスキャンが可能です。
  • ポート範囲のパースとバリデーション:“1-1024” のような範囲指定を解析して開始・終了ポートを算出するロジックが必要です。範囲外や不正な入力の検出とエラーメッセージの整備も重要です。
  • 並列化/スレッド或いはスレッドプールの利用:スキャン速度向上のためにマルチスレッドまたはスレッドプール、もしくはプロセスプールを使って複数ポートを並行してチェックする実装が想定されます。READMEの引数(40)からは並列ワーカー数を指定している可能性が高いです。
  • GUIラッパー(gui.py):最小限のGUIはTkinterなど標準ライブラリを使って手早く作れるため、gui.pyはスキャン操作のパラメータ入力や結果表示を行うフロントエンドになっていると推測できます。GUI側はバックエンドのphantomport.pyをサブプロセスとして呼ぶか、内部モジュールとして関数をインポートして呼び出す実装のいずれかでしょう。
  • 配布・移植性:requirements.txtを用意して依存管理を行い、READMEにあるPyInstaller手順でWindows向けに単一実行ファイル化できる点は配布面で便利です。ただし、PyInstaller化時はソケットやOS依存の挙動、アイコンや資源の扱いに注意する必要があります。
  • セキュリティと倫理:READMEが明記する通り、本ツールは教育目的で自ら管理する環境に限定して使用すべきです。ポートスキャンは対象の許可なしに実行すると法的・倫理的問題を生じるため、適切な注意喚起が行われています。

コード自体は比較的少数ファイルで構成され、学習教材として読みやすく、機能拡張(例えばサービス検知やバナー取得、スキャン結果のログ出力など)へ容易に発展させられる設計になっていると考えられます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • Quick run instructions: file
  • README.md: file
  • gui.py: file
  • phantomport.py: file
  • requirements.txt: file

まとめ

学習用途に特化したシンプルなポートスキャン+トイサーバ+GUIツールで、ネットワーク入門やツール開発の教材に最適です。

リポジトリ情報:

READMEの抜粋: PhantomPort — toy server + scanner + GUI

Purpose:

  • Educational. Use only on your own machines or test VMs.

Run server (terminal): $ python3 phantomport.py server

Run scanner (terminal): $ python3 phantomport.py scan 127.0.0.1 1-1024 40

Run GUI: $ python3 gui.py

Package to exe (optional, Windows): $ pip install pyinstaller $ pyinstaller —onefile phantomport.py

or for GUI: pyinstaller —onefile gui.py

Safety:

  • Do NOT scan or test other people’s sy…