
マルチスレッド対応のPythonツールで、FOFA APIを照会し、カスタムフィールド(IP、ポート、証明書、TLSなど)を抽出し、結果の重複を排除し、中断された検索を再開できます。
FOFA (Fofa.so) API を照会し、選択したフィールドを抽出して、スマートな整形でユニークな結果を保存する強力なマルチスレッド Python ツールです。
ip、port、title、cert.*、tls.*、…)domains_*.txt、ips_*.txt)list コマンドで全有効フィールドを表示)raw_input を使用 – Python 3 への移植は簡単)requests ライブラリ依存関係をインストール:
pip install requests
🔧 設定
API_KEY = "PUT UR TOKEN HERE"
import os
API_KEY = os.getenv("FOFA_API_KEY", "your_default_key")
🚀 使い方
スクリプトを実行:
python fofa_searcher.py
対話形式でプロンプトが表示されます:
[?] Enter FOFA query: domain="example.com"
[?] Enter max page to scrape [Default: 1]: 5
各ページは最大 SIZE_DEFAULT 件の結果を返します。
[?] Enter fields [Default: host,ip,port]: host,ip,port,title,cert.sn
list と入力すると、すべての有効なフィールド(basic、certificate、TLS)を表示できます。
すべての結果は、説明用のファイル名で OUTPUT_DIR に保存されます。例: results/domains_example_com_20250315_143022.txt
📂 出力例
単一フィールド – ラベル付きで見やすく:
IP: 93.184.216.34
Port: 443
Title: Example Domain
複数フィールド – コンパクトな形式:
93.184.216.34 | Port:443 | [Example Domain] | {US}
証明書 / TLS フィールド – 明確なラベル:
Cert Serial Number: 01:23:45:...
TLS version: TLSv1.2
🧩 有効なフィールド
このツールは、一般的な FOFA フィールドに加えて、証明書(cert.)および TLS(tls.)フィールドをサポートしています。
基本フィールド(一部)
ip, port, protocol, base_protocol, host, domain, title, server, country, region, city, os, asn, org, banner, header, body, cname, icp, jarm, icon, fid, status_code, product
証明書フィールド
cert, cert.sn, cert.not_after, cert.not_before, cert.domain, cert.subject.org, cert.subject.cn, cert.issuer.org, cert.issuer.cn, cert.is_valid, cert.is_match, cert.is_equal
TLS フィールド
tls.version, tls.ja3s
フィールドのプロンプトで list と入力すると、すべてを確認できます。
⚙️ 設定変数(スクリプト内)
変数 デフォルト 説明 CONCURRENT_THREADS 10 並行するページ要求数 SIZE_DEFAULT 100 1ページあたりの結果数(FOFA の最大値) OUTPUT_DIR results 出力ファイルを保存するディレクトリ
📝 重要な注意事項
· スクリプトは API エンドポイントとして en.fofa.info を使用します。 · 重複排除は最初のフィールド値(例: IP またはドメイン)に基づき、大文字と小文字を区別しません。 · 長い文字列(タイトル、バナー、ヘッダー)は可読性のため出力で切り詰められます。 · スクリプトを中断(Ctrl+C)すると、正常に終了します。 · スクリプトは現在 Python 2 の raw_input を使用しています。Python 3 で実行するには、raw_input を input に置き換え、print 文を調整してください。
❗ トラブルシューティング
問題 解決方法 API_KEY が未設定 スクリプトを編集してキーを追加してください。 無効なフィールド スクリプトを実行し、list と入力して許可されたフィールドを確認してください。 結果なし FOFA クエリ構文と API クレジットを確認してください。 ImportError: No module named requests pip install requests で requests をインストールしてください。 UnicodeEncodeError スクリプトは既に UTF‑8 エンコーディングを処理しています。ターミナルが対応していることを確認してください。
📄 ライセンス
MIT ライセンス – 自身の偵察(レコン)用途に自由に使用・変更できます。 注: FOFA API の利用は FOFA の利用規約に従うものとします。
🙌 謝辞
FOFA 検索エンジンのために作られました – 強力な IoT およびアセット検索プラットフォームです。
ハッピーハンティング! 🔍