ネットワークセキュリティツールキットのデスクトップアプリケーションです。 ペネトレーションテストやCTFの学習・実践を目的として開発しています。
A desktop network security toolkit built with Rust + Tauri v2 and React/TypeScript frontend, designed for penetration testing and CTF practice.
GitHub Releases に添付される HappyHackingTools-bootstrapper.exe の利用を推奨します。
bootstrapper は Windows 用インストーラーを取得して起動します。
- Npcap は初回必須ではありません
- ARP Spoof など Npcap 依存機能を開く時にアプリ内でダウンロード導線を案内します
- 上級者向けには Tauri が生成する Windows インストーラーも併せて配布します
開発環境のセットアップ手順は CONTRIBUTING.md を参照してください。
ペネトレーション・CTF目的に作成しているので、第三者に対する攻撃に使用しないようにしてください。 本レポジトリ所有者はいかなる責任も負いません。
This tool is designed for penetration testing and CTF purposes only, and must not be used for attacks against third parties. The owner of this repository assumes no responsibility whatsoever.
| カテゴリ | 技術 |
|---|---|
| バックエンド | Rust (Edition 2021, MSRV 1.77.2) |
| フレームワーク | Tauri v2 |
| フロントエンド | React 18 + TypeScript 5.6 |
| ビルドツール | Vite 5 |
| ルーティング | React Router v7 |
| テスト | Vitest + Testing Library + happy-dom / node:test |
| パケットキャプチャ | pnet / pcap (Npcap SDK) |
| 設定管理 | TOML |
| 機能 | 説明 |
|---|---|
| LAN スキャン | ARP を使用したローカルネットワーク内のホスト検出、ベンダー情報の取得 |
| ポートスキャン | 指定ホストのオープンポート検出 |
| ARP スプーフィング | ARP テーブルのポイズニングとパケットスニッフィング |
| バイナリビューア | ファイルのバイナリ表示 |
| CTF ツール | CTF 向けユーティリティ |
| ネットワーク情報 | ネットワークインターフェース情報の表示 |
HappyHackingTools.py_2022/
├── src/ # フロントエンド (React/TypeScript)
│ ├── components/ # UI コンポーネント
│ │ ├── ArpSpoof/
│ │ ├── Binary/
│ │ ├── Ctf/
│ │ ├── LanScan/
│ │ ├── Layout/
│ │ ├── PortScan/
│ │ └── common/
│ ├── pages/ # ページコンポーネント
│ ├── config/ # フロントエンド設定 (defaults.ts)
│ ├── hooks/ # カスタム React フック
│ ├── types/ # TypeScript 型定義
│ └── styles/ # スタイルシート
├── src-tauri/ # バックエンド (Rust/Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri コマンド (IPC ハンドラ)
│ │ ├── network/ # ネットワーク処理モジュール
│ │ ├── utils/ # ユーティリティ (バイナリ処理等)
│ │ ├── config.rs # アプリケーション設定
│ │ ├── error.rs # エラー型定義
│ │ ├── lib.rs # Tauri アプリケーション初期化
│ │ └── main.rs # エントリポイント
│ ├── config/
│ │ └── default.toml # デフォルト設定ファイル
│ ├── capabilities/ # Tauri v2 権限設定
│ └── tauri.conf.json # Tauri 設定
├── tests/ # Vitest / node:test / 補助検証テスト
├── docs/ # 補足ドキュメント
├── scripts/ # ビルドスクリプト
│ └── setup-npcap-sdk.ps1 # Npcap SDK セットアップ
├── package.json
├── vite.config.ts
├── vitest.config.ts
└── tsconfig.json
- Node.js (npm が利用可能であること)
- Rust (Edition 2021, MSRV 1.77.2 以上)
- Npcap (Windows でパケットキャプチャ機能を使用する場合)
- Npcap 本体: https://npcap.com/#download
- Npcap SDK: ビルド時に必要
Windows 版は wpcap.dll / Packet.dll を遅延ロードするため、Npcap ランタイムが未導入でもアプリ起動自体は可能です。Npcap 依存機能ではダウンロード導線を案内します。
Npcap SDK は以下のいずれかの方法で配置してください。
- 環境変数
NPCAP_SDK_DIRに SDK ルートディレクトリを設定する - 以下のいずれかのパスに配置する:
C:\npcap-sdk\Lib\x64C:\Program Files\Npcap SDK\Lib\x64%USERPROFILE%\.npcap-sdk\Lib\x64
または、付属のセットアップスクリプトを使用できます:
.\scripts\setup-npcap-sdk.ps1- Windows (アプリ起動は可能。ARP Spoof などの Npcap 依存機能には Npcap が必要)
- Linux / macOS (libpcap が必要)
npm ci、npx tauri dev、npx tauri build などの開発者向け手順は CONTRIBUTING.md に集約しています。
ビルド成果物は src-tauri/target/release/ に出力されます。
| コマンド | 説明 |
|---|---|
npm run dev |
Vite 開発サーバーのみ起動 (フロントエンド単体) |
npx tauri dev |
Tauri 開発モード (フロントエンド + バックエンド) |
npx tauri build |
リリースビルド |
npm run build |
フロントエンドのみビルド |
npm run lint |
ESLint によるコード検査 |
npx vitest |
テスト実行 |
npx vitest --coverage |
カバレッジ付きテスト実行 |
node --test tests/buildRsConsistency.test.mjs |
build.rs の構造検証 |
node --test tests/readmeConsistency.test.mjs |
README 整合性チェック |
node --test tests/buildDelayLoadConsistency.test.mjs |
遅延ロード設定の回帰チェック |
node --test tests/releaseWorkflowConsistency.test.mjs |
Release / Contributor 文書の整合性チェック |
node --test tests/repoCleanupConsistency.test.mjs |
不要生成物・旧資産の再混入防止チェック |
cargo test --manifest-path tools/windows-bootstrapper/Cargo.toml |
Windows bootstrapper の単体テスト |
アプリケーションの設定は src-tauri/config/default.toml で管理されています。
| セクション | 設定項目 | 説明 |
|---|---|---|
[scan] |
arp_timeout_ms |
ARP 応答タイムアウト (ms) |
[scan] |
arp_retry_count |
ARP リトライ回数 |
[scan] |
port_scan_timeout_ms |
ポートスキャンタイムアウト (ms) |
[scan] |
port_scan_concurrency |
ポートスキャン同時接続数 |
[scan] |
sniff_timeout_sec |
スニッフィングタイムアウト (秒) |
[scan] |
poison_interval_sec |
ARP ポイズニング間隔 (秒) |
[scan] |
reset_packet_count |
ARP 停止時に送信する復旧パケット数 |
[scan] |
progress_report_interval |
進捗イベント送信間隔 |
[scan] |
lan_scan_arp_retry_count |
LAN スキャン時の ARP リトライ回数 |
[vendor] |
api_url |
MAC ベンダー API の URL |
[vendor] |
use_local_oui |
ローカル OUI データベースの使用 |
[vendor] |
api_timeout_ms |
MAC ベンダー API タイムアウト (ms) |
[vendor] |
user_agent |
MAC ベンダー API 呼び出し時の User-Agent |
[network] |
udp_probe_target |
ネットワーク情報取得時の UDP プローブ先 |
[network] |
enable_external_cli_fallback |
netsh / ip フォールバックの有効化 |
[feature_flags] |
prefer_rust_implementation |
Rust 実装を優先するか |
[paths] |
pcap_output_dir |
キャプチャファイル出力先 |
[paths] |
pcap_filename |
キャプチャファイル名 |
src-tauri/tauri.conf.json と src-tauri/capabilities/default.json の権限を絞った後は、以下の手順で必要機能だけが動作することを確認してください。
- アプリを起動する。
npx tauri dev
- Npcap が未インストールの環境で LAN Scan / ARP Spoof など Npcap 依存機能を開く。
- Npcap 案内ダイアログに表示される
https://npcap.com/#downloadのリンクをクリックし、既定ブラウザで外部ページが開くことを確認する。 - バイナリビューアで「Select File」を実行し、ファイル選択ダイアログが開くことと、選択ファイルの読み取りが成功することを確認する。
- 上記以外の画面操作で、外部 URL を任意に開く導線が存在しないことを確認する。
- 開発者ツールの Console に CSP 違反エラーが継続的に出ていないことを確認する。
補足:
- 現在の権限は
core:default、dialog:allow-open、shell:allow-openのみを許可し、fs:defaultなど広い権限は付与しない構成です。 - 外部リンク導線は Npcap ダイアログに限定し、
shell.openはhttps://npcap.com/#downloadのみ許可する設定です。