
最新の高性能DNSスキャナーで、Textual で構築された美しいターミナルユーザーインターフェース (TUI) を備えています。このツールは数百万のIPアドレスをスキャンして動作するDNSサーバーを発見でき、オプションでSlipstreamプロキシテストと自動マルチプラットフォームクライアントダウンロードに対応しています。
スキャナーは、複数の IP レンジにわたって各レンジの開始と終了から同時にスキャンし、ランダムシャッフルを組み合わせます。線形スキャンと比較して、より高速で動作する DNS サーバーを見つける可能性が高まります。
全 DNS タイプ(A、AAAA、MX、TXT、NS)がサーバーごとに自動テストされ、スコア付けされます。SlipNet スキャナーと同じスコアリングシステムです。
完全にカスタマイズ可能なスキャンパラメータ:
指定された MTU 値でスキャンし、高度なネットワークチューニングを実現。
google.com を解決できるかテストし、結果をテーブルに表示textual>=0.47.0 # TUI framework aiodns>=3.1.0 # Async DNS resolver httpx[socks]>=0.25.0 # HTTP client with SOCKS5 support for proxy testing loguru>=0.7.0 # Advanced logging
google-re2>=1.0 # Fast RE2 regex engine (falls back to stdlib re) orjson>=3.9.0 # Fast JSON serialization (falls back to stdlib json) pyperclip>=1.8.0 # Clipboard support (silently disabled when absent)
### オプション
- **Slipstream Client** - プロキシテスト機能用(同時5テスト)
- **自動ダウンロード**: アプリケーションが自動的にプラットフォームを検出し、適切なクライアントをダウンロードします
- **スマート検出**: 既存のインストール(レガシーファイル名を含む)を検出します
- **再開サポート**: 部分的にダウンロードされたファイルは保存され、再試行時に再開できます
- 対応プラットフォーム:
- Linux (x86_64): `slipstream-client-linux-amd64`
- Linux (ARM64): `slipstream-client-linux-arm64`
- Windows (x86_64): `slipstream-client-windows-amd64.exe`
- macOS (ARM64): `slipstream-client-darwin-arm64`
- macOS (Intel): `slipstream-client-darwin-amd64`
- Android (ARM64): `slipstream-client-linux-arm64`
- 手動ダウンロードはこちら: [slipstream-rust-plus-deploy releases](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest)
### 📦 バンドルされたSlipstreamクライアント
プリコンパイルされたSlipstreamクライアントバイナリ(より高速な[Fox-Fig/slipstream-rust-plus-deploy](https://github.com/Fox-Fig/slipstream-rust-plus-deploy)より)は、`slipstream-client/`フォルダに全プラットフォーム分が含まれています:
| プラットフォーム | パス | 説明 |
|----------|------|-------------|
| **Linux x86_64** | `slipstream-client/linux/slipstream-client-linux-amd64` | Linux x86_64 バイナリ |
| **Linux ARM64** | `slipstream-client/linux/slipstream-client-linux-arm64` | Linux ARM64 バイナリ(Raspberry Pi、ARMサーバー) |
| **Android/Termux** | `slipstream-client/android/slipstream-client-linux-arm64` | Android ARM64(Termux対応) |
| **Windows** | `slipstream-client/windows/slipstream-client-windows-amd64.exe` | Windows x86_64 実行ファイル |
| **macOS ARM** | `slipstream-client/mac/slipstream-client-darwin-arm64` | macOS Apple Silicon (M1/M2/M3/M4) |
| **macOS Intel** | `slipstream-client/mac/slipstream-client-darwin-amd64` | macOS Intel x86_64 |
> **⚠️ Windowsに関する注意:** WindowsクライアントにはOpenSSL DLL(`libcrypto-3-x64.dll` と `libssl-3-x64.dll`)が必要で、これらは`slipstream-client/windows/`フォルダに含まれています。自動ダウンロードを使用する場合、これらのDLLはWindows実行ファイルとともに自動的にダウンロードされます。
#### 📥 オールインワンアーカイブ
利便性のため、全プラットフォームのバイナリを含む圧縮アーカイブも用意されています:
- **`slipstream-client/slipstream-client-all-platforms.tar.gz`** - 最高圧縮率(推奨)
- **`slipstream-client/slipstream-client-all-platforms.zip`** - Windows向け形式
これらのアーカイブには、Linux、Windows、macOSのクライアントが1つのダウンロードに含まれています。
### オプション
- **SlipNet Client** — SlipNet(DNSTT / NoiseDNS)トンネルテスト用
- **自動ダウンロード**: アプリケーションが自動的にプラットフォームを検出し、適切なSlipNetクライアントをダウンロードします
- **スマート検出**: 既存のインストールを検出します
- **再開サポート**: 部分的にダウンロードされたファイルは保存され、再試行時に再開できます
- 対応プラットフォーム:
- Linux (x86_64): `slipnet-linux-amd64`
- Linux (ARM64): `slipnet-linux-arm64`
- Windows (x86_64): `slipnet-windows-amd64.exe`
- macOS (ARM64): `slipnet-darwin-arm64`
- macOS (Intel): `slipnet-darwin-amd64`
- 手動ダウンロードはこちら: [anonvector releases](https://github.com/anonvector/SlipNet/releases)
### 📦 バンドルされたSlipNetクライアント
プリコンパイルされたSlipNetクライアントバイナリ([anonvector](https://github.com/anonvector/SlipNet/releases)提供)は、`slipnet-client/`フォルダに全プラットフォーム分が含まれています:
| プラットフォーム | パス | 説明 |
|----------|------|-------------|
| **Linux x86_64** | `slipnet-client/linux/slipnet-linux-amd64` | Linux x86_64 バイナリ |
| **Linux ARM64** | `slipnet-client/linux/slipnet-linux-arm64` | Linux ARM64 バイナリ(Raspberry Pi、ARMサーバー) |
| **Windows** | `slipnet-client/windows/slipnet-windows-amd64.exe` | Windows x86_64 実行ファイル |
| **macOS ARM** | `slipnet-client/mac/slipnet-darwin-arm64` | macOS Apple Silicon (M1/M2/M3/M4) |
| **macOS Intel** | `slipnet-client/mac/slipnet-darwin-amd64` | macOS Intel x86_64 |
## 🚀 インストール
### 方法1: PyPIからインストール(推奨)
PYDNS Scannerをインストールする最も簡単な方法:
#### pipを使用```bash
pip install pydns-scanner
pip install pydns-scanner[full]
#### uv の使用(高速)```bash
uv pip install pydns-scanner # core
uv pip install pydns-scanner[full] # desktop extras
pkg update && pkg install python pip install pydns-scanner # core only — always works on Termux pydns-scanner
> **注意:** Android/Termuxでは、オプションのC拡張パッケージ(`google-re2`、`orjson`、`pyperclip`)は自動的にスキップされます。スキャナーは手動操作なしでstdlibの同等機能にフォールバックします。
#### ミラーの使用(PyPIへのアクセスが制限されているユーザー向け)```bash
# Runflare Mirror
pip install pydns-scanner -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
# Or Alibaba Cloud Mirror
pip install pydns-scanner -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# Or TUNA Mirror
pip install pydns-scanner -i https://pypi.tuna.tsinghua.edu.cn/simple
pydns-scanner
---
### 方法2: ソースから実行 (手動)
リポジトリから直接コードを実行したい場合:
#### ステップ1: リポジトリをクローンする```bash
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner
uvを使用する(推奨 - 高速!)```bash uv pip install -r requirements.txt
**pip の使用**```bash
pip install -r requirements.txt
ミラーを使用する (PyPIへのアクセスが制限されているユーザー向け)```bash
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#### ステップ3: アプリケーションの実行```bash
python -m python
PyPIから:```bash pydns-scanner
**ソースから:**```bash
python -m python
これにより、以下の設定が可能な対話型TUIが起動します:
1行に1つのCIDR範囲を記述したテキストファイルを作成してください:```
1.1.1.0/24 8.8.8.0/24 178.22.122.0/24 185.51.200.0/22
### ワークフロー例
1. **アプリケーションを起動** : ```bash
python dnsscanner_tui.py
スキャンパラメータの設定:
google.com)スキャンの開始:
結果の表示:
結果の保存:
results/TIMESTAMP.csv に保存されますc キーを押すか、または「💾 結果を保存」をクリックして手動保存アクティブなスキャン中:
ログ記録はデフォルトで無効になっており、インターフェースをクリーンに保ち、不要なディスク書き込みを回避します。
ログを有効にするには、dnsscanner_tui.py を編集します:```python
logger.remove() # Remove default handler to disable logging
logger.add( "logs/dnsscanner_{time}.log", rotation="50 MB", compression="zip", level="DEBUG", )
有効にすると:
- ログは `logs/dnsscanner_TIMESTAMP.log` に保存されます
- 50 MB で自動ローテーション
- 自動的に圧縮(zip)
- DEBUGレベルの詳細を含む
### 同時実行設定
システムとネットワークに合わせて調整してください:
- **低 (50-100)**: 控えめ、低速なシステムに適しています
- **中 (100-300)**: バランスの取れたパフォーマンス
- **高 (300-500)**: 高速スキャン、優れたハードウェアが必要
- **非常に高 (500+)**: 最大速度、リソース制限に達する可能性があります
### Slipstream テスト
スキャナーは自動ダウンロードによる並列 Slipstream プロキシテストをサポートしています:```python
# In __init__ method
self.slipstream_max_concurrent = 5 # Max parallel proxy tests
self.slipstream_base_port = 10800 # Base port (uses 10800, 10801, 10802)
自動ダウンロード機能:
.partialファイルを保持)slipstream-client.exe)DNSクエリは2秒でタイムアウトします:```python
resolver = aiodns.DNSResolver(nameservers=[ip], timeout=2.0, tries=1)
## 📊 出力形式
結果は **CSV形式** (`results/TIMESTAMP.csv`) で保存されます。列は有効なテストに応じて適応されます:```csv
DNS,Ping (ms),IPv4/IPv6,TCP/UDP,Security,EDNS0,Resolved IP,ISP
8.8.8.8,12,IPv4/IPv6,TCP+UDP,DNSSEC,Yes,142.250.185.46,AS15169 Google LLC
1.1.1.1,15,IPv4/IPv6,TCP+UDP,DNSSEC,Yes,142.250.185.46,AS13335 Cloudflare Inc
Optional columns (Proxy Test, Security, EDNS0) are included only when the corresponding test is enabled in settings.
スキャナーは、以下の条件を満たす場合にサーバーを「動作中のDNS」とみなします:
このアプローチにより、成功応答のみを受け入れるツールよりも多くの動作中のDNSサーバーを捕捉できます。
有効にすると、クエリはランダムなプレフィックスを使用します:``` original: google.com random: a1b2c3d4.google.com
**ユースケース**: キャッシュされたDNS応答のバイパス
**必要条件**: 対象ドメインにはワイルドカードDNS(`*.example.com`)が必要
## 📂 プロジェクト構成```
PYDNS-Scanner/
├── README.md # English documentation
├── README-FA.md # Farsi documentation
├── README-ZH.md # Chinese documentation
├── RELEASE_NOTES.md # Release notes (EN / FA / ZH)
├── pyproject.toml # Python package configuration
├── requirements.txt # Python dependencies
├── pydns-scanner.spec # PyInstaller build spec
├── python/
│ ├── __init__.py # Package init
│ ├── __main__.py # Entry point (pydns-scanner CLI)
│ ├── dnsscanner_tui.py # Main TUI application
│ ├── iran-ipv4.cidrs # Sample Iranian CIDR file
│ ├── requirements.txt # Python dependencies (source)
│ ├── scanner/ # Modular scanner package
│ │ ├── __init__.py
│ │ ├── config_mixin.py # Configuration mixin for TUI
│ │ ├── constants.py # Shared constants
│ │ ├── extra_tests.py # Security & EDNS0 tests
│ │ ├── ip_streaming.py # Streaming IP generation from CIDR
│ │ ├── isp_cache.py # ISP detection & caching
│ │ ├── proxy_testing.py # Slipstream proxy testing
│ │ ├── results.py # Result formatting & CSV export
│ │ ├── slipnet.py # SlipNet (DNSTT/NoiseDNS) testing
│ │ ├── slipstream.py # Slipstream client management
│ │ ├── utils.py # Utility functions
│ │ ├── widgets.py # Custom TUI widgets
│ │ └── worker_pool.py # Async worker pool
│ ├── slipstream-client/ # Bundled Slipstream binaries
│ │ ├── linux/
│ │ ├── windows/
│ │ ├── mac/
│ │ └── android/
│ └── slipnet-client/ # Bundled SlipNet binaries
│ ├── linux/
│ ├── windows/
│ └── mac/
├── results/ # Scan results (auto-generated)
├── logs/ # Application logs (when enabled)
└── static/ # Static assets
pip install textual
### 「ファイルが見つかりません」エラー
- CIDRファイルのパスが正しいことを確認してください
- 絶対パスまたはスクリプトの場所からの相対パスを使用してください
- 内蔵のファイルブラウザ(📂 参照ボタン)を使用してください
### スキャンが遅い
- 同時実行数を減らす
- ネットワーク帯域幅を確認する
- DNSタイムアウト設定を確認する
### メモリ使用量が多い
- スキャナーはストリーミングを使用してメモリを最小限に抑えます
- 問題が続く場合は、`_stream_ips_from_file` 内のチャンクサイズを減らしてください
### Slipstreamのダウンロードに失敗する
- **ネットワークの問題**: アプリは指数バックオフで最大5回自動的に再試行します
- **再開**: 部分的なダウンロードは `.partial` ファイルとして保存されます - 再実行するだけで再開できます
- **手動ダウンロード**: [slipstream-rust-plus-deploy releases](https://github.com/Fox-Fig/slipstream-rust-plus-deploy/releases/latest) からダウンロード
- **ログを確認**: 詳細なエラー情報については、ログを有効にしてください(設定セクションを参照)
- **ファイアウォール**: GitHubへのアクセスが許可されていることを確認してください
### Slipstreamが検出されない
- プラットフォーム固有のディレクトリが存在することを確認してください(`slipstream-client/windows/` など)
- ファイル名が一致することを確認してください(新しい名前とレガシー名の両方をサポート)
- レガシーインストールの場合: `slipstream-client.exe` を使用(自動検出)
- ログを有効にして検出プロセスを確認してください
### Slipstreamのテストが失敗する
- 実行可能ファイルに正しい権限があることを確認してください(Linux/macOS: `chmod +x`)
- ポート10800-10802が利用可能であることを確認してください
- `logs/` ディレクトリ内のログ(有効になっている場合)を確認してください
- 手動でDNSサーバーへの接続をテストしてください
## 📝 ログ記録
**デフォルト: 無効** - システムをクリーンに保つため、ログは作成されません。
**ログを有効にするには:**
1. `python/dnsscanner_tui.py` を編集
2. `logger.add()` セクションのコメントを解除
3. ログは `logs/dnsscanner_TIMESTAMP.log` に保存されます
**ログレベル:**
- **DEBUG**: 詳細なDNSクエリ結果、ダウンロード進捗
- **INFO**: スキャンの進捗と統計
- **WARNING**: 重大でない問題、再試行
- **ERROR**: 重大な障害、ダウンロードエラー
## 🌍 CIDRリストの見つけ方
### 国別IP範囲
**IPv4**:
- https://www.ipdeny.com/ipblocks/data/aggregated/
**IPv6**:
- https://www.ipdeny.com/ipv6/ipaddresses/aggregated/
### 使用例```bash
# Download Iran IPv4 ranges
wget https://www.ipdeny.com/ipblocks/data/aggregated/ir-aggregated.zone -O iran-ipv4.cidrs
# Use in scanner
python dnsscanner_tui.py
# Then select iran-ipv4.cidrs in the file browser
コントリビューションを歓迎します!プルリクエストを提出したり、イシューを開いたりしてください。
git clone https://github.com/xullexer/PYDNS-Scanner.git cd PYDNS-Scanner/python pip install -r requirements.txt python dnsscanner_tui.py
## 📄 ライセンス
このプロジェクトはMITライセンスの下で提供されています。
## 👨💻 著者
- GitHub: [@xullexer](https://github.com/xullexer)
## 🙏 謝辞
- [Textual](https://github.com/Textualize/textual) (Textualize社製) を使用して構築
- DNS解決は [aiodns](https://github.com/saghul/aiodns) 経由
- 効率的なDNSサーバー発見の必要性に触発されました
- [**anonvector**](https://github.com/anonvector) 氏に感謝します。彼が開発した **SlipNet CLI** のおかげで、本プロジェクトにバンドルされているSlipNetクライアントバイナリは彼の成果を利用しています
- Pythonコードベースは**モジュール化**され、開発と保守が容易になりました
## 📈 パフォーマンスに関する注意
様々なシステムでのテストパフォーマンス:
- **小規模スキャン** (1,000 IP): 約10~30秒
- **中規模スキャン** (50,000 IP): 約5~10分
- **大規模スキャン** (100万IP以上): 約1~3時間
*結果はネットワーク速度、同時実行設定、システムリソースによって異なります。*
## 🔐 セキュリティに関する考慮事項
- 暗号学的に安全な乱数生成器 (`secrets.SystemRandom`) を使用
- 認証情報や機密データはログに記録されません
- DNSクエリは標準的なUDP/TCPポート53を使用
- Slipstreamプロキシテストはオプションであり、デフォルトでは無効
## 💝 プロジェクトを支援する
このプロジェクトが役立つと思われたら、開発支援をご検討ください:
### 仮想通貨による寄付
- **ビットコイン (BTC)**
`bc1qpya0kc2uh0mc08c7nuzrqkpsqjr36mrwscgpxr`
- **ソラナ (SOL)**
`J1XzZfizQ6mgYiyxpLGWU52kHBF1hm2Tb9AZ5FaRj8tH`
- **イーサリアム (ETH)**
`0x26D9924B88e71b5908d957EA4c74C66989c253cb`
- **バイナンススマートチェーン (BNB/BSC)**
`0x26D9924B88e71b5908d957EA4c74C66989c253cb`
- **トロン (TRX)**
`TYBZFr8WUsjgfrXrqmrdF5EXPXo7QdimA8`
- **イーサリアムベース**
`0x26D9924B88e71b5908d957EA4c74C66989c253cb`
- **TON (Telegram Open Network)**
`UQBcI_ZZGQq3fcNzTkL-zszgFR5HpRDLFHYRZffizriiScxJ`
---
**スキャンを楽しんでください! 🚀**
| キー | 状況 | アクション |
|---|
s | 設定画面 | スキャン開始 |
q | いつでも | アプリケーション終了 |
c | スキャン中 | 結果を保存 |
p | スキャン中 | スキャン一時停止 |
r | 一時停止中 | スキャン再開 |
x | 一時停止中 | 残りのIPをシャッフル |