This skill turns natural-language recon requests into a stable FOFA workflow:
scripts/fofa_recon.py,This skill is distilled from the FofaMap project, but packaged for skill use instead of an interactive application. The host agent should do the reasoning, and the helper script should do the FOFA API work. The workflow keeps the project's key tactics: action routing, permission-aware field selection, zero-result reflection, live reachability verification, export-oriented delivery, and targeted follow-up suggestions.
For setup, the user only needs to provide FOFA credentials:
FOFA_EMAILFOFA_API_KEYUse this skill when the user asks for any of the following:
icon_hash query from a target websitenucleiDo not use this skill for:
If credentials are not configured yet, read references/setup.md.
Required credentials for this skill:
Core helper:
scripts/fofa_recon.py loginscripts/fofa_recon.py search --query 'app="nginx" && country="US"'scripts/fofa_recon.py search --query 'app="nginx" && country="US"' --alive-check --output nginx_us.xlsxscripts/fofa_recon.py host --target 8.8.8.8scripts/fofa_recon.py host --target 8.8.8.8 --report-output host_report.mdscripts/fofa_recon.py stats --query 'app="Redis"' --fields country,port,orgscripts/fofa_recon.py stats --query 'app="Redis"' --fields country,port,org --report-output stats_report.mdscripts/fofa_recon.py alive-check --target example.com --target 1.1.1.1:8443 --output alive.csvscripts/fofa_recon.py project-run --query 'app="nginx" && country="US"' --query 'app="grafana" && country="US"' --alive-check --split-exportsscripts/fofa_recon.py icon-hash --url https://example.comsearch when the user wants concrete assets.host when the user gives one IP or one domain and wants details.stats when the user wants rankings, trends, or distribution.icon-hash when the user wants similar assets by favicon.Default to safe, broadly available fields unless the user explicitly needs premium FOFA fields. The helper script already falls back to a safe field set if a higher-tier field request is rejected.
Before using advanced fields or highly specific filters, check references/query-playbook.md.
Do up to three progressively broader retries:
host= with broader title=, body=, or product-style matching when appropriateState clearly that the later attempts are broader fallback queries, not equivalent matches.
When reporting results, include:
Use --alive-check or alive-check when the user wants:
If the user asks for a deliverable, prefer exporting the checked result set so the handoff includes the current HTTP status.
Use:
xlsx when handing off to analysts, red teams, or non-technical stakeholderscsv when another tool or script will consume the resultIf live checks were run, include the HTTP status in the export. This preserves one of the most practical parts of the original project: not just finding assets, but packaging them for the next operator.
If the user wants active validation, ask or confirm before running tools such as nuclei, curl-based checks, or login probes. FOFA is passive indexed intelligence; active testing is a separate consent boundary.
When the user has multiple queries, wants delivery files, or needs a mini operation bundle, prefer project-run. It preserves one of the original project's best ideas: a single task should leave behind a project directory with exports, targets.txt, a suggested Nuclei command, and a Markdown report.
If the user explicitly wants active scanning and has authorization, project-run --run-nuclei can extend that workflow into a local Nuclei scan and fold the log summary into the report.
共 1 个版本