一套把 FOFA 查询、模板复用、批量执行、结果导出与排错流程收进桌面端的工作台。
DaofaGui 是基于 Wails 构建的 FOFA 桌面应用,围绕日常资产检索中的高频动作,把查询、模板、导出、日志、配置和账号校验集中到一个统一界面里。它不追求功能堆叠,而是更强调把常用操作串成一条连续、顺手、可复用的工作流。
- 面向日常 FOFA 检索、批量研判和结果整理场景
- 把查询、模板执行、模板维护、数据处理和排错能力整合到一个桌面工作区
- 减少在网页、配置文件、导出表格和日志之间来回切换的成本
FOFA 查询页负责承接最核心的日常搜索流程,适合从“输入语句”一路走到“结果预览”和“字段导出”。
- 支持查询语句输入、时间过滤、国家筛选和每页数量控制
- 支持
search/search-next两种查询方式 - 支持结果预览、分页浏览和当前结果内检索
- 支持自定义导出字段,并可保存默认查询字段与默认导出字段
模板执行页面向实际批量使用场景,把“选择模板”“填写参数”“批量执行”“查看结果”收在一个独立工作区里。这是作者之前使用的较多的功能。
- 选择模板后可直接填参执行批量任务
- 支持时间过滤、国家筛选、目标批量输入和结果导出
- 单个目标失败时不会直接拖垮整批任务
- 结果支持按目标分组展示,便于横向比对与复盘
模板库管理页负责模板沉淀和维护,让模板不只是“存起来”,而是真的能被持续整理和复用。
数据处理工具页用于承接查询后的轻量整理工作,让结果在导出前就能完成基础归一和分组分析。
- 主机归一化:统一输入格式,补全显式协议
- C 段统计:快速观察资产分布
- 资产分组:按根域名归类整理
- 一份输入,多种处理视角,适合结果清洗与研判辅助
请求日志页把常见排错信息集中展示出来,方便在查询异常、导出失败或账号校验异常时快速定位问题。
- 支持查看请求 URL、响应摘要和日志内容
- 展示日志文件路径、文件大小和最近更新时间
- 支持刷新与清空日志
- 对大体积响应做收敛展示,更适合日常排查
设置页负责统一维护运行所需的核心配置,让查询和导出策略可以直接在界面中保存和复用。
- 支持配置邮箱、API Key
- 支持维护默认查询字段和默认导出字段
- 配置修改后可直接服务于后续查询与导出流程
- 降低重复输入和人工确认成本
账号验证页用于在执行任务前确认 FOFA 账户状态,减少因为额度或权限问题带来的无效操作。
- 支持校验账号可用性
- 可查看会员状态、API 查询额度、数据额度和余额信息
- 将账户状态检查前置,便于及时发现环境问题
DaofaGui 默认从项目根目录的 templates/ 读取模板文件,支持 .yaml 和 .yml 后缀。模板用于驱动“模板执行”和“模板库管理”两个工作区,建议统一按照下面的结构编写。
| 字段 | 是否必填 | 说明 |
|---|---|---|
id |
建议填写 | 模板唯一标识,建议与文件名或模板用途保持一致,便于在界面中识别 |
description |
可选 | 模板用途说明 |
author |
可选 | 模板作者或维护人 |
fofaQuery |
必填 | 模板实际执行的 FOFA 查询语句 |
inputs |
可选 | 模板输入参数定义 |
searchFields |
可选 | 模板执行时使用的查询字段列表 |
补充说明:
fofaQuery为空时模板无法执行- 历史字段名
fofa_query也能被兼容读取,但新模板建议统一使用fofaQuery searchFields: []表示跟随设置页里的默认查询字段searchFields中的字段需要是程序支持的 FOFA 查询字段
inputs 是一个数组,每一项对应一个可替换参数。fofaQuery 中出现的 {target}、{keyword} 这类占位符,会按照同名 key 进行替换。
每个输入项支持以下字段:
| 字段 | 是否必填 | 说明 |
|---|---|---|
key |
必填 | 参数名,对应 fofaQuery 里的 {key} |
label |
可选 | 表单展示名称,不填时会根据 key 自动生成 |
type |
可选 | 输入类型,建议使用 text 或 textarea,默认是 text |
required |
可选 | 是否必填 |
placeholder |
可选 | 输入框提示文案 |
default |
可选 | 默认值,未填写时会自动带入 |
输入规则说明:
type: text适合单值输入,例如关键词、自定义查询语句、产品名type: textarea适合批量输入,例如 IP、域名、目标列表- 当前程序只会把第一个
textarea输入项视为“批量执行字段” - 批量输入会按换行、空格、Tab、逗号、分号拆分,并自动去重
- 如果模板完全不需要参数,建议显式写成
inputs: []
- 推荐在
fofaQuery中直接使用{target}、{keyword}、{query}这类具名占位符 inputs[].key必须和查询里的占位符名称一致- 兼容旧模板写法:
{PlaceHolder}和{param_1}会自动映射为{target} - 如果模板未显式声明
inputs,程序会尝试从fofaQuery中自动推断占位符,并补成必填输入项
适合批量根域名查询的模板示例:
id: RootDomains
description: 根据根域名查询相关资产
author: starlink
fofaQuery: domain="{target}"
inputs:
- key: target
label: 根域名
type: textarea
required: true
placeholder: example.com
searchFields:
- host
- ip
- domain适合固定查询、无需额外参数的模板示例:
id: ExchangeQuery
description: Exchange 固定查询
author: alice
fofaQuery: app="Microsoft-Exchange" && (port="80" || port="443")
inputs: []
searchFields: []- 文件统一放在项目根目录的
templates/下,便于模板库直接读取 - 文件名建议与
id保持一致,方便排查和维护 - 一个模板里尽量只保留一个
textarea输入项,避免批量执行语义不明确 - 查询语句里的变量建议写在引号内,例如
ip="{target}"、title="{keyword}" - 没有特殊字段需求时,
searchFields可以写成空数组,让模板跟随全局默认配置
- 批量查询目标是否使用指定产品 适合批量筛查一组域名、主机名或 IP 是否命中指定产品特征,包含模板示例、操作步骤和结果解读。
- 安装前端依赖
cd DaofaFrontend
npm install- 安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest- 在项目根目录启动开发环境
wails dev- 打包构建
wails build- 使用脚本生成发布包
.\scripts\build-release.ps1 -Version 0.1.0脚本会完成以下工作:
- 执行
wails build --clean --platform windows/amd64 - 在
releases/下生成发布目录、.zip包和.sha256.txt - 自动收集
DaofaGui.exe、DaofaBackend/、templates/、使用案例.md - 自动创建空的
daofa_requests.log - 自动清空发布包中
DaoFaConf.yaml里的Email和ApiKey
如果已经手动构建完成,只想重新打包,可以使用:
.\scripts\build-release.ps1 -Version 0.1.0 -SkipBuild当前发布包默认不包含 README.md。
本项目仅用于合法授权的安全研究、资产梳理与验证场景,请勿用于未授权目标。







