FofaMap v2.0 - Platinum Agent Edition, a FOFA asset mapping intelligent agent supporting MCP protocol and AI self-reflection mechanism
Project description
🗺️ FofaMap v2.0 — Platinum Agent Edition
🧠 全网首个支持 MCP 协议 + AI 自我反思机制的红队资产测绘智能体
Self-Reflecting AI Queries → MCP Protocol Integration → Intelligent Vulnerability Scanning
✨ 一句话介绍
❌ 它不是 FOFA 工具
❌ 也不是 Nuclei 封装
✅ 它是:一个可以被 AI 接管、会自己反思、会自己决策扫描策略的「全网资产测绘智能体」
🚀 v2.0 是什么级别的升级?
FofaMap 从「资产查询工具」→ 进化为 AI Agent(智能体)
🧠 1️⃣ 你只要说人话
python3 fofamap.py -ai "帮我找一下bing.com所有的子域名,并扫描一下"
AI 自动完成:
- 理解你的意图
- 生成 FOFA 语法
- 查询资产
- 若 0 结果 → 启动 自我反思机制 自动放宽条件重试
- 分析资产指纹
- 判断是否值得扫描
- 自动生成 Nuclei 扫描参数
- 询问你是否执行
🤖 2️⃣ 会“自我反思”的 AI(核心黑科技)
不再出现:
0 Results
AI 会自动:
- 判断:
- 是否地区条件过严?
- 是否关键词不合理?
- 是否语法太死?
- 自动:
- 放宽条件
- 重写语法
- 多策略重试
- 直到:尽量给你产出结果
🔌 3️⃣ 原生 MCP 支持(给 AI / Agent 用)
支持:Claude Desktop / Cursor / 自建 Agent
你可以直接对 AI 说:
「调用 FofaMap,帮我分析最近致远 OA 的风险态势」
AI 会:
自动调用 FofaMap → 自动跑任务 → 自动总结报告
- Cursor调用效果
- LM Stuido调用效果
🎯 4️⃣ 看人下菜的“智能扫描决策”
AI 会根据资产指纹:
| 发现 | 自动推荐 |
|---|---|
| Spring | -tags spring |
| WebLogic | -tags weblogic |
| ThinkPHP | -tags thinkphp |
| Struts2 | -tags struts |
❌ 不再无脑全量扫
✅ 每一次扫描都是 有脑子的精准打击
🧩 谁适合用?
- 🧑💻 安全小白:
会说一句话就能用
- 🛡️ SRC / 红队:
批量资产 + 自动化挖洞 + 自动报告
- 🤖 AI Agent 开发者:
直接当「安全能力插件」
- 🏗️ 平台开发者:
可嵌入到攻防平台 / 资产平台 / SOC
📦 项目结构(平台级架构)
.
├── config/
│ ├── __init__.py # ✅ 负责读取 yaml 并导出 settings 对象
│ └── settings.yaml # ⭐ 全局配置(FOFA / AI / 系统)
│
├── core/ # 🧠 核心引擎层
│ ├── ai.py # AI Agent 中枢(意图 / 反思 / 决策 / 总结)
│ ├── client.py # FOFA API 封装
│ ├── core.py # 主工作流调度器
│ ├── excel.py # Excel 报告导出
│ ├── handler.py # CLI / MCP 入口分发
│ └── scanner.py # Nuclei 智能联动
│
├── utils/
│ ├── helpers.py # 通用工具函数
│ ├── logger.py # 日志系统
│ └── printer.py # 终端富文本输出
│
├── fofamap.py # 🚀 CLI 主入口(一切从这里开始)
├── mcp_server.py # 🔌 MCP Server(给 AI 调用)
├── results/ # 📂 所有任务项目目录
├── requirements.txt
└── README.md
🛠️ 安装
1️⃣ 环境
Python >= 3.10
git clone https://github.com/asaotomo/FofaMap.git
cd FofaMap
pip3 install -r requirements.txt
python3 fofamap.py --help #查看工具用法
2️⃣ 初始化配置(✨ 向导模式)
python3 fofamap.py init
自动引导你填写:
- FOFA Email / Key
- 使用的 AI(DeepSeek / OpenAI / Ollama / LMStudio)
- 默认模型名称
配置保存至:
config/settings.yaml
3️⃣ 配置 Nuclei(可选)
如需漏洞扫描:
- 确保
nuclei在 PATH 中
nuclei -version #输入此命令查看是否添加成功
- 或下载nuclei二进制文件后直接放入项目根目录
https://github.com/projectdiscovery/nuclei/releases ## nuclei 扫描器官方下载地址,注意要下载对应自己操作系统版本的二进制文件
⚙️ 配置文件详解(config/settings.yaml)
#====== 用户信息 (User Info) ======
userinfo:
# [基础] FOFA 凭证
email: "your_email@example.com"
key: "your_fofa_api_key"
# [进阶] AI 模型配置 (支持 DeepSeek/OpenAI/Ollama 等)
deepseek_api_key: "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
# 场景 A: 使用官方 DeepSeek
api_type: "deepseek"
base_url: "https://api.deepseek.com/v1"
model: "deepseek-chat"
# 场景 B: 使用本地 Ollama (注释掉上方,启用下方)
# api_type: "ollama"
# base_url: "http://localhost:11434/v1"
# model: "qwen2.5:7b"
# ====== 搜索设置 (Search Settings) ======
search:
fields: "host,protocol,ip,port,title,domain,country,icp"
size: 100
full: false # 设为 true 可查询一年前的数据
start_page: 1
end_page: 5 # 自动爬取前 5 页
# ====== 性能与输出 (System) ======
system:
logger: true
sheet_merge: true
concurrency: 15 # 建议根据网络状况调整 (10-50)
💻 使用方法
🧙 模式一:交互式任务向导模式(✨ 新手 & 日常首选)
💡 什么参数都不用记,只要运行:
python3 fofamap.py
或:
python fofamap.py
即可进入 AI 驱动的交互式任务向导界面:
________ ____ __ ___
/ ____/ /_ __/ __/___ _ / |/ /___ _____
/ /_ / __ \/ / /_/ __ `/ / /|_/ / __ `/ __ \
/ __/ / /_/ / / __/ /_/ / / / / / /_/ / /_/ /
/_/ \____/_/_/ \__,_/ /_/ /_/\__,_/ .___/
/_/ v2.0
[ AI Powered & Interactive Wizard ] -- By Hx0 Team
[!] 启动任务向导...
? 请选择您要执行的操作:
» 1. 🔮 AI 智能侦察 (自然语言 -> 自动决策)
2. 🔍 FOFA 标准查询 (语法输入)
3. 🖥️ Host 聚合查询 (IP/域名详情)
4. 📊 统计聚合查询 (数据分布分析)
5. 🖼️ Icon Hash 查询 (favicon 逆向)
6. 📁 批量文件查询 (TXT 批量指令)
---------------
0. 🚪 退出程序
🎯 这个模式适合谁?
- ✅ 不想记命令参数的人
- ✅ 第一次使用的新手
- ✅ 日常使用 / 演示 / 培训 / 快速操作
- ✅ 所有“我只想点一下跑任务”的场景
🧠 向导模式能做什么?
你可以通过方向键选择:
1️⃣ 🔮 AI 智能侦察(⭐ 强烈推荐)
直接输入一句话:
我收集一下美国哈佛大学的子域名网站,并扫描一下
系统将自动:
- AI 理解意图
- 自动生成 FOFA 语法
- 自动查询
- 自动反思(0 结果会重试)
- 自动判断是否扫描
- 自动生成扫描参数
- 自动生成报告
2️⃣ 🔍 FOFA 标准查询
使用FOFA查询语句查询数据
app="ThinkPHP" && country="CN"
3️⃣ 🖥️ Host 聚合查询(AI 深度画像)
根据当前的查询内容,生成聚合信息,host通常是ip,包含基础信息和IP标签。
8.8.8.8 / baidu.com
4️⃣ 📊 统计聚合查询(AI 态势分析)
根据当前的查询内容,生成全球统计信息,当前可统计每个字段的前5排名。
app="redis"
5️⃣ 🖼️ Icon Hash 查询
用户可通过填入任意一网站地址,系统会自动获取该网站的favicon.ico图标文件,并计算其hash值,并查找与此图标相似的网站。
https://www.bing.com
6️⃣ 📁 批量文件查询
批量查询,用户可新建一个记事本文件,如targets.txt,然后将准备查询的fofa语句写入其中,输入文件路径(若放在工具根目录可以直接输入文件名称)即可进行批量查询。
114.114.114.114
www.baidu.com
app="kafka"
🔮 模式二:经典模式( 老用户推荐)
1️⃣ AI查询模式
python3 fofamap.py -ai "帮我收集一下美国哈佛大学的子域名网站,并扫描一下"
2️⃣ 基础查询
如果用户想要使用fofa联合查询语句,例如:app="grafana" && country="US"。
Linux和macOS用户直接使用python3 fofamap.py -q 'app="grafana" && country="US"'即可成功查询。
Windows用户因为系统原因,需要使用python3 fofamap.py -q "app="ThinkPHP" && country="CN""系统才可成功识别,即Windows用户需要对查询命令内部的"使用\进行转义,否则系统识别错误。
python3 fofamap.py -q 'app="ThinkPHP" && country="CN"'
3️⃣ Host 深度画像(AI 报告)
用户使用Host聚合查询模式时,系统可以根据当前的查询内容,生成聚合信息,host通常是ip,包含基础信息和IP标签。
python3 fofamap.py -hq 8.8.8.8
4️⃣ 统计聚合(AI 态势解读)
使用统计聚合功能,可以根据当前的查询内容,生成全球统计信息,当前可统计每个字段的前5排名。例如,我们使用下列命令统计全球范围内使用Redis应用的Top5国家。其中-cq为查询内容,-f为需要统计聚合的字段,默认为title,可按照示例配置多个字段 fields=country,protocol,domain,port。详细用法见FOFA API 官方文档
python3 fofamap.py -cq 'app="redis"' -f country,org
5️⃣ 图标 Hash 查询
用户可通过填入任意一网站地址,Fofamap会自动获取该网站的favicon.ico图标文件,并计算其hash值,并去查找使用相同favicon.ico图标文件的网站。
python3 fofamap.py -ico https://www.bing.com
6️⃣ 批量查询
用户可新建一个记事本文件,如targets.txt,然后将准备查询的fofa语句写入其中,运行以下命令即可进行批量查询。
python3 fofamap.py -bq targets.txt
targets.txt文件内容:
8.8.8.8
baidu.com
icp="京ICP备10036305号"
7️⃣ 过滤查询
| 特性 | -i (--include) | -k (--key_word) |
|---|---|---|
| 筛选逻辑 | 过滤 (Filter) | 搜索 (Search) |
| 处理阶段 | 第一层 (先执行) | 第二层 (后执行) |
| 常用对象 | 状态码 | 筛选包含关键词的内容 |
| 输入示例 | "200,301" (支持状态码) |
"登录,后台" (支持多词) |
| 目的 | “筛选出对应状态码的查询结果” | “把查询结果中保护指定关键词数据找出来” |
如下命令:在 baidu.com 的所有资产中,保留 状态码为 200 (网页正常) 的结果,并进一步提取出包含 '文心' 或 '旅游' 关键词的目标。
python3 fofamap.py -q 'domain="baidu.com"' -i "200" -k "文心,旅游"
🔌 模式三:MCP 服务(🔥 给 AI / Agent 用)
1️⃣ 集成到 Cursor (最推荐,体验丝滑)
Cursor 对 MCP 的支持非常完善,配置好后,你可以直接在 Composer (Ctrl+I) 或 Chat (Ctrl+L) 中用自然语言调用工具。
- 打开 Cursor Settings (点击右上角齿轮)。
- 在左侧菜单找到 Tools & MCP。
- 点击 + Add New MCP Server。
- 填写mcp.json配置信息:
- Name:
fofamap-v2(随便起) - Type:
command(或者叫 Stdio) - Command:
你的Python解释器绝对路径(若写入环境变量可以直接填python)- 例如:
python3.10
- 例如:
- Args:
你的脚本绝对路径- 例如:
/Users/ka/Downloads/fofamap/fofa/mcp_server.py
- 例如:
- Name:
- 点击 Save。
- 此时你会看到一个 绿色的圆点 🟢,状态显示
Connected。
- 此时你会看到一个 绿色的圆点 🟢,状态显示
- 如果显示红色,点击刷新图标,或者去 Cursor 的 `Output` -> `MCP Log` 或者是我们刚才修好的 `Log` 窗口看报错。
👉 如何使用: 打开 Cursor Chat (Ctrl+L),直接输入:
“帮我查一下 baidu.com 的资产信息,并检查是否有存活。”
Cursor 会自动分析意图,并在界面上显示 Using tool: search_assets...。
2️⃣ 集成到 LM Studio (本地模型)
LM Studio 0.3.0+ 版本开始支持 MCP。这允许你用本地的 DeepSeek 或 Llama 3 调用你的工具。
- 打开 LM Studio。
- 点击对话框中的 MCP (插头图标)。
- 点击Install按钮 。
- 选择Edit mcp.json。
- 填写配置:
- Name:
fofamap-v2 - Command:
你的Python解释器绝对路径 - Args:
你的脚本绝对路径(注意:LM Studio 有时需要把 args 分开填,或者填在一个框里,视版本而定)。- 建议形式:
["/Users/ka/.../mcp_server.py"]
- 建议形式:
- Name:
- 点击 Save。
👉 如何使用:
- 去 Chat 界面。
- 加载一个支持 Tool Calling 的模型(推荐
openai/gpt-oss-20b或Qwen 2.5 7B Instruct,或者是 LM Studio 里的 DeepSeek R1/V3)。 - 在聊天框上方的 Tools 下拉菜单中,勾选
mcp/fofamap-v2。
- 输入提示词:“帮我查一下Nginx在美国的分布情况···”
☢️ 漏洞扫描联动(Nuclei)
在2.0版本中AI 会根据查询结果智能生成Nuclei漏洞扫描命令参数:
[AI] 推荐命令: nuclei -tags spring -severity critical,high
> 🚀 执行
> ✏️ 修改
> 🚫 仅生成报告
📂 结果输出结构
results/
└── domain__harvard_edu_____country__US_20260108_173107
├── batch_merge_20260108_173107.xlsx
├── nuclei_result_20260108_173107.txt
├── report_20260108_173107.md
└── targets_20260108_173107.txt
🛡️ 免责声明
- 本工具仅面向合法授权的企业安全建设行为(如内部攻防演练、资产管理)。
- 在使用本工具进行检测时,您应确保该行为符合当地法律法规,并已取得目标所有者的授权。
- 禁止用于任何非法用途。如您在使用本工具的过程中存在非法行为,您需自行承担相应后果,开发者不承担任何法律责任。
FofaMap-V2.0由Hx0战队开发维护
【打赏支持❤️】代码传情跨山海,点滴支持皆温暖✨
虽然代码完全开源,但每杯咖啡都能让我们走得更远 ☕️
特别鸣谢~渊龙Sec团队
特别鸣谢~FOFA官方
FoFaMap 已加入 FOFA 共创者计划,感谢 FOFA 提供的账号支持。
【战队公众号】扫描关注战队公众号,获取最新动态
【战队知识星球】福利大放送,限时优惠-仅限前100名
历史Star
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_asaotomo_fofamap-2.0.1.tar.gz.
File metadata
- Download URL: iflow_mcp_asaotomo_fofamap-2.0.1.tar.gz
- Upload date:
- Size: 55.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47fe56713eb4704f0031032761afdae33a8dff681a9f575dd314f264f6570188
|
|
| MD5 |
ef384c85d8e6235f5edd113a2e8c642a
|
|
| BLAKE2b-256 |
418185a46fed4562d5a8ff946b546e8c2e7b0474df643851dda6cf058e720276
|
File details
Details for the file iflow_mcp_asaotomo_fofamap-2.0.1-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_asaotomo_fofamap-2.0.1-py3-none-any.whl
- Upload date:
- Size: 56.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad3453d276dad3660b3b50d8367592aae2df57fc410d98d9833c7d9c66c2a43e
|
|
| MD5 |
dfa1e4bb586437d9a028aa2f5379c6b1
|
|
| BLAKE2b-256 |
f665e95c887ba7665bd37473474beb307b2b35776226e9044d94b7697f64c3d1
|