# FofaMap
**Repository Path**: asaotomo/FofaMap
## Basic Information
- **Project Name**: FofaMap
- **Description**: FofaMap v2.0 是一款基于 Python3 开发的红队资产测绘工具,在保留 FOFA 数据采集、存活检测等核心功能的基础上,新增原生支持 MCP 协议,可接入 Cursor、Claude 等 AI 平台。其内置 AI 自我反思机制,能自动优化查询语法并联动 Nuclei 推荐扫描策略,实现从被动采集到主动智能决策的升级。
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: v2.0.0
- **Homepage**: https://github.com/asaotomo/FofaMap
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2022-01-17
- **Last Updated**: 2026-01-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: fofa, python3, fofamap, 批处理, nuclei
## README
# 🗺️ 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️⃣ 你只要说人话
```bash
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
>
---
# 📦 项目结构(平台级架构)
```bash
.
├── 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️⃣ 环境
```bash
Python >= 3.10
```
```bash
git clone https://github.com/asaotomo/FofaMap.git
cd FofaMap
pip3 install -r requirements.txt
```

```bash
python3 fofamap.py --help #查看工具用法
```
---
## 2️⃣ 初始化配置(✨ 向导模式)
```bash
python3 fofamap.py init
```
自动引导你填写:
+ FOFA Email / Key
+ 使用的 AI(DeepSeek / OpenAI / Ollama / LMStudio)
+ 默认模型名称
配置保存至:
```bash
config/settings.yaml
```

---
## 3️⃣ 配置 Nuclei(可选)
如需漏洞扫描:
+ 确保 `nuclei` 在 PATH 中
```bash
nuclei -version #输入此命令查看是否添加成功
```

+ 或下载nuclei二进制文件后直接放入项目根目录
```bash
https://github.com/projectdiscovery/nuclei/releases ## nuclei 扫描器官方下载地址,注意要下载对应自己操作系统版本的二进制文件
```

---
# ⚙️ 配置文件详解(config/settings.yaml)
```bash
#====== 用户信息 (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)
```
---
# 💻 使用方法
---
# 🧙 模式一:交互式任务向导模式(✨ 新手 & 日常首选)
💡 **什么参数都不用记,只要运行:**
```plain
python3 fofamap.py
```
或:
```plain
python fofamap.py
```
即可进入 **AI 驱动的交互式任务向导界面**:
```plain
________ ____ __ ___
/ ____/ /_ __/ __/___ _ / |/ /___ _____
/ /_ / __ \/ / /_/ __ `/ / /|_/ / __ `/ __ \
/ __/ / /_/ / / __/ /_/ / / / / / /_/ / /_/ /
/_/ \____/_/_/ \__,_/ /_/ /_/\__,_/ .___/
/_/ 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 智能侦察(⭐ 强烈推荐)
直接输入一句话:
```plain
我收集一下美国哈佛大学的子域名网站,并扫描一下
```
系统将自动:
+ AI 理解意图
+ 自动生成 FOFA 语法
+ 自动查询
+ 自动反思(0 结果会重试)
+ 自动判断是否扫描
+ 自动生成扫描参数
+ 自动生成报告



---
### 2️⃣ 🔍 FOFA 标准查询
使用FOFA查询语句查询数据
```plain
app="ThinkPHP" && country="CN"
```

---
### 3️⃣ 🖥️ Host 聚合查询(AI 深度画像)
根据当前的查询内容,生成聚合信息,host通常是ip,包含基础信息和IP标签。
```plain
8.8.8.8 / baidu.com
```

---
### 4️⃣ 📊 统计聚合查询(AI 态势分析)
根据当前的查询内容,生成全球统计信息,当前可统计每个字段的前5排名。
```plain
app="redis"
```

---
### 5️⃣ 🖼️ Icon Hash 查询
用户可通过填入任意一网站地址,系统会自动获取该网站的favicon.ico图标文件,并计算其hash值,并查找与此图标相似的网站。
```plain
https://www.bing.com
```

---
### 6️⃣ 📁 批量文件查询
批量查询,用户可新建一个记事本文件,如targets.txt,然后将准备查询的fofa语句写入其中,输入文件路径(若放在工具根目录可以直接输入文件名称)即可进行批量查询。
```plain
114.114.114.114
www.baidu.com
app="kafka"
```

# 🔮 模式二:经典模式( 老用户推荐)
## 1️⃣ AI查询模式
```bash
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用户需要对查询命令内部的"使用\进行转义,否则系统识别错误。
```bash
python3 fofamap.py -q 'app="ThinkPHP" && country="CN"'
```
## 3️⃣ Host 深度画像(AI 报告)
用户使用Host聚合查询模式时,系统可以根据当前的查询内容,生成聚合信息,host通常是ip,包含基础信息和IP标签。
```bash
python3 fofamap.py -hq 8.8.8.8
```
## 4️⃣ 统计聚合(AI 态势解读)
使用统计聚合功能,可以根据当前的查询内容,生成全球统计信息,当前可统计每个字段的前5排名。例如,我们使用下列命令统计全球范围内使用Redis应用的Top5国家。其中-cq为查询内容,-f为需要统计聚合的字段,默认为title,可按照示例配置多个字段 fields=country,protocol,domain,port。详细用法见FOFA API 官方文档
```bash
python3 fofamap.py -cq 'app="redis"' -f country,org
```
---
## 5️⃣ 图标 Hash 查询
用户可通过填入任意一网站地址,Fofamap会自动获取该网站的favicon.ico图标文件,并计算其hash值,并去查找使用相同favicon.ico图标文件的网站。
```bash
python3 fofamap.py -ico https://www.bing.com
```
---
## 6️⃣ 批量查询
用户可新建一个记事本文件,如targets.txt,然后将准备查询的fofa语句写入其中,运行以下命令即可进行批量查询。
```bash
python3 fofamap.py -bq targets.txt
```
**targets.txt文件内容:**
```plain
8.8.8.8
baidu.com
icp="京ICP备10036305号"
```
## 7️⃣ 过滤查询
| **特性** | **-i (--include)** | **-k (--key_word)** |
| ------------ | ------------------------ | ------------------------------------ |
| **筛选逻辑** | **过滤 (Filter)** | **搜索 (Search)** |
| **处理阶段** | 第一层 (先执行) | 第二层 (后执行) |
| **常用对象** | 状态码 | 筛选包含关键词的内容 |
| **输入示例** | `"200,301"` (支持状态码) | `"登录,后台"` (支持多词) |
| **目的** | **“筛选出对应状态码的查询结果”** | **“把查询结果中保护指定关键词数据找出来”** |
如下命令:在 baidu.com 的所有资产中,保留 状态码为 200 (网页正常) 的结果,并进一步提取出包含 '文心' 或 '旅游' 关键词的目标。
```bash
python3 fofamap.py -q 'domain="baidu.com"' -i "200" -k "文心,旅游"
```
---
# 🔌 模式三:MCP 服务(🔥 给 AI / Agent 用)
### 1️⃣ 集成到 Cursor (最推荐,体验丝滑)
Cursor 对 MCP 的支持非常完善,配置好后,你可以直接在 Composer (Ctrl+I) 或 Chat (Ctrl+L) 中用自然语言调用工具。
1. 打开 **Cursor Settings** (点击右上角齿轮)。

2. 在左侧菜单找到 **Tools** **&** **MCP**。

3. 点击 **+ Add New MCP Server**。

4. 填写mcp.json配置信息:
- **Name**: `fofamap-v2` (随便起)
- **Type**: `command` (或者叫 Stdio)
- **Command**: `你的Python解释器绝对路径(若写入环境变量可以直接填python)`
* 例如:`python3.10`
- **Args**: `你的脚本绝对路径`
* 例如:`/Users/ka/Downloads/fofamap/fofa/mcp_server.py`

5. 点击 **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 调用你的工具。
1. 打开 **LM Studio**。
2. 点击对话框中的 **MCP (插头图标)**。
3. 点击**Install按钮** 。
4. **选择Edit mcp.json**。

5. 填写配置:
- **Name**: `fofamap-v2`
- **Command**: `你的Python解释器绝对路径`
- **Args**: `你的脚本绝对路径` (注意:LM Studio 有时需要把 args 分开填,或者填在一个框里,视版本而定)。
* _建议形式_: `["/Users/ka/.../mcp_server.py"]`

6. 点击 **Save**。
**👉 如何使用:**
1. 去 **Chat** 界面。
2. 加载一个支持 Tool Calling 的模型(推荐 `openai/gpt-oss-20b` 或 `Qwen 2.5 7B Instruct`,或者是 LM Studio 里的 DeepSeek R1/V3)。
3. 在聊天框上方的 **Tools** 下拉菜单中,勾选 `mcp/fofamap-v2`。

4. 输入提示词:“帮我查一下Nginx在美国的分布情况···”

---
# ☢️ 漏洞扫描联动(Nuclei)
在2.0版本中AI 会根据查询结果智能生成Nuclei漏洞扫描命令参数:
```latex
[AI] 推荐命令: nuclei -tags spring -severity critical,high
> 🚀 执行
> ✏️ 修改
> 🚫 仅生成报告
```
---
# 📂 结果输出结构
```bash
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 [共创者计划](https://fofa.info/development),感谢 FOFA 提供的账号支持。
**【战队公众号】扫描关注战队公众号,获取最新动态**
**【战队知识星球】福利大放送,限时优惠-仅限前100名**
## 历史Star
[](https://star-history.com/#asaotomo/FofaMap)