在互联网资产测绘的工作里,FOFA 几乎是一个基础工具。它的搜索语法成熟,数据覆盖广,查一个域名、一个指纹、一个端口,通常很快就能拿到结果。

但真正进入落地环节时,往往会卡在一个很具体的环节:导出

FOFA 网页端单次最多只能导出 10000 条数据。对于很多真实场景来说,这个数字并不够用。一个大型企业的互联网资产、一个热门组件的暴露面、一次漏洞应急中的同类目标收集,动辄就是几万、几十万条。超过限制之后,只能拆查询条件、分时段、反复手动合并,效率很低。

更让人头疼的是 F 点。FOFA 的某些导出能力会消耗 F 点,做大批量任务时,F 点很快就见底。于是经常出现一种尴尬局面:搜索结果就在眼前,却拿不下来。

fofatoto 是做什么的

fofatoto 是一个围绕 FOFA API 构建的导出工具,目标很明确:把搜索结果完整、高效地落到本地,同时尽量省下 F 点。

它的核心思路是通过 before 时间游标分批拉取数据。FOFA 单次返回有上限,但时间维度可以向前追溯。fofatoto 会自动完成分页、合并、去重这一系列操作,把原本需要手动拆分的任务变成一条命令。

你可以把它理解成一个”放大器”:在你已有的 FOFA API 权限范围内,把能拿到的结果尽量都拿回来,而不是被网页端的 10000 条限制卡住。

为什么能省 F 点

这里需要先说明一下:fofatoto 本身不会凭空创造 FOFA 额度,它走的是标准 API。但它和网页端导出有一个关键区别:它不会在导出环节额外扣 F 点。

换句话说,你只要有一个能调用 FOFA API 的账号,查询结果就可以持续往下拉,不用担心”这次导出又要花多少 F 点”。对于需要频繁导出、大批量导出的人来说,这一点能显著降低成本。

网页端卡死的 10000 条限制,在这里不再是天花板。5 万、10 万、更多,都可以按同样的逻辑跑完。

主要功能

除了突破导出数量限制,fofatoto 还覆盖了几个比较实用的能力:

全量导出

通过 -l max 启动深度抓取,工具会先探测总匹配数,然后按时间游标逐批拉取,自动去重并实时显示进度。默认覆盖约 80% 的数据,可以通过 --fill 参数调到更高。

批量查询

从文件读取多个目标,配合占位符自动替换并执行。比如有一个 targets.txt 文件,里面每行一个域名,执行 ./fofatoto "host={}" -b targets.txt -o batch.csv,就可以一次性跑完所有目标并合并结果。

字段与格式自定义

支持 CSV、JSON、TXT 三种导出格式,字段可以自己指定。默认会导出 hostipportprotocoldomaintitleserver 等常用字段,也可以只导出 IP 列表、URL 列表等更轻量的结果。

本地 Web 界面

如果你不习惯命令行,直接双击运行就能启动一个本地 Web UI,支持即时预览、深度导出和批量模式。UI 默认监听 127.0.0.1,从 17380 端口开始自动探测可用端口。

去重与 URL 拼接

支持按单字段、多字段组合以及 url 字段去重。如果导出字段包含 url 但 API 没有直接返回,工具会自动根据 hostportprotocol 拼接完整 URL。

跨平台二进制

项目使用 GitHub Actions 自动构建,提供 Windows、Linux、macOS 的 amd64 和 arm64 版本,不需要配置 Python 环境,下载即可使用。

典型使用场景

fofatoto 比较适合下面这几类工作:

  • 企业互联网资产梳理:导出全量暴露面,做后续风险评估和漏洞管理。
  • 红队目标收集:快速拉出某个域名、某个组件、某个指纹对应的目标列表。
  • 漏洞应急:出现一个高危漏洞时,批量收集互联网上受影响的资产。
  • 数据沉淀:把 FOFA 上查到的结果定期落盘,建立自己的资产库。

快速上手

Releases 下载对应平台的二进制,首次运行会在程序目录生成 config.json,填入 FOFA API Key 后即可使用。

1
2
3
4
5
6
7
8
9
10
11
# 基础查询
./fofatoto "domain=example.com"

# 导出全部结果
./fofatoto "domain=example.com" -l max -o results.csv

# 批量目标查询
./fofatoto "host={}" -b targets.txt -o batch.csv

# 指定字段和格式
./fofatoto "domain=example.com" -f "ip,port,title" -json -o output.json

写在最后

fofatoto 不是一个 Fancy 的工具,它解决的是一个很实际的问题:让 FOFA 的查询结果更容易被拿下来、更容易被使用。

如果你也遇到过导出受限、F 点不够用、手动合并数据很繁琐的情况,可以尝试一下。

项目地址:https://github.com/keyblues/fofatoto

欢迎在 GitHub 上提 Issue 或 Star。