ローカルネットワークスキャナー
ローカルIPv4ネットワークをスキャンするTkinter GUIです(ARP + nmapプロービング)。デバイスを表示し、フルポートスキャンの実行、結果のエクスポートが可能です。
クイック概要
- LAN上のデバイスを検出するARPスキャン。
- ホスト名、ベンダー、開放ポート、OS推測、レイテンシのための改良されたnmapプローブ。
- フルポートボタンで選択したデバイスに対して集中的なnmapスキャンを実行。
- 検出された開放ポートに基づくスマートなリスクスコアリング(低/中/高/クリティカル)。
- リアルタイムのダッシュボード統計(総デバイス数、開放ポートホスト数、高リスクホスト数、平均レイテンシ)。
- 迅速なトリアージのためのライブフィルタリング/検索とソート可能なテーブル列。
- 選択再スキャン、IPコピー、ネットワークインサイト(ローカル/パブリックIP + プラットフォーム詳細)。
- 結果をCSVまたはJSONにエクスポート。
必要条件
- Windows 10/11(テスト済み)
- Python 3.9以上(3.10以上推奨)
- NmapがインストールされPATHに通っていること(https://nmap.org/ からダウンロード)
- Npcapがインストールされていること(Windows上のscapyに必要)— オファーされた場合は「WinPcap互換モード」を選択
- 完全な機能(ARP、rawソケット、一部のnmap機能)のために管理者権限でスクリプトを実行
Pythonパッケージ(requirements.txtでインストール):
- scapy
- python-nmap
- tqdm
- requests
インストール
- PowerShellを開く(推奨:便宜上管理者として実行)
- 仮想環境を作成して有効化(任意だが推奨)
- python -m venv .venv
- ..venv\Scripts\Activate.ps1
- パッケージをインストール
- pip install -r requirements.txt
nmap.exeがインストールされPATHで利用可能であることを確認(nmap --versionを実行して確認)。
GUIの実行
推奨(Windows):
- Visual Studio Codeを右クリックして「管理者として実行」を選択し、プロジェクトを開き、F5キーでデバッグまたは実行。
- または管理者PowerShellを開いて次のコマンドを実行:
注意事項:
- プログラムは起動時に昇格を要求します(ShellExecute)。VS Codeから実行する場合、VS Codeを管理者として起動して、統合デバッガが正しく特権で起動するようにしてください。
- UACプロンプトを受け入れた後にGUIが表示されない場合は、昇格したPowerShellから直接スクリプトを実行して確認してください。
VS Codeの設定
デバッグ設定が必要な場合は、.vscode/launch.jsonを追加(例):
{
"version": "0.2.0",
"configurations": [
{
"name": "Network Scanner (Admin)",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/app.py",
"console": "integratedTerminal",
"args": []
}
]
}
重要:Windowsでは、デバッグ設定を起動する前にVS Code自体を管理者として実行(右クリック→管理者として実行)する方が簡単です。
GUIの使用方法
- IP範囲入力は次を受け付けます:
- CIDR:
192.168.1.0/24
- 単一IP:
192.168.1.10
- ハイフン範囲:
192.168.1.1-254 または 192.168.1.10-192.168.1.20
- ワイルドカード:
192.168.1.*
- カンマ区切りリスト:
192.168.1.1,192.168.1.5,192.168.1.100
- ボタン:
- スキャン開始 — ARP検出 + 軽量プローブ
- フルポートスキャン — 行を選択し、クリックでそのIPに対して集中的なnmapスキャンを実行
- 選択再スキャン — 現在選択されているホストのみの詳細を更新
- IPコピー — 選択したホストのIPをクリップボードにコピー
- ネットワークインサイト — ログパネルにローカル/パブリックネットワークメタデータを出力
- 停止 — スキャン停止を要求
- CSVエクスポート / JSON保存 — 収集したデバイス情報を保存
- 終了 — アプリを閉じる
- リアルタイムでデバイスをフィルタリング(IP、ホスト名、ベンダー、OS、リスクで検索)。オプションで開放ポートのあるホストのみ表示。
- 列ヘッダーをクリックして行を並べ替え。
- デバイス行をクリックすると、下部パネルにユーザーフレンドリーな概要と生の構造化データが表示されます。ログ内の行をクリックすると、IPが存在する場合に自動的にデバイスを選択できます。
動作と制限
- ARPスキャンはローカルイーサネット/LANセグメントでのみ機能します。
- フルポートスキャンとOS検出には管理者権限が必要な場合があり、ホストあたり数分かかることがあります。
- ハイフン/ワイルドカード展開には、偶発的な大規模スキャンを防ぐための制限が含まれています(防御的)。
- Nmapは別途インストールする必要があります — python-nmapはラッパーにすぎません。
トラブルシューティング
- 「管理者承認」UACダイアログが表示されるがGUIが開かない場合:
- VS Codeが管理者として起動されていることを確認(推奨)するか、管理者PowerShellでスクリプトを実行してください。
- 同じ環境で
nmap --versionが動作することを確認。
- デバッガを使用する場合は、昇格したVS Codeインスタンスからデバッグセッションを実行してください。
- Windowsでscapyが失敗する場合:Npcapがインストールされていること、および仮想環境が同じPythonインタプリタを使用していることを確認してください。
セキュリティと法的注意
所有している、またはテストの明示的な許可があるネットワークとデバイスのみをスキャンしてください。無許可のスキャンは違法であり、混乱を招く可能性があります。
ロードマップ
スキャナー改善
インターフェース
セキュリティ機能
プラットフォームサポート