您的私人FOFA资产搜索引擎与分析助手。
这是一个功能强大的 Telegram 机器人,它深度集成了 FOFA 的 API,允许您通过 Telegram 直接进行网络空间资产的搜索、下载、分析和管理。它不仅仅是一个数据拉取工具,更是一个集成了多种后处理和分析能力的一站式平台。
-
项目内所涉及任何脚本、LOGO 、工作流仅为资源共享、学习参考之目的,不保证其合法性、正当性、准确性;请根据情况自行判断,切勿使用项目做任何商业用途或牟利;
-
遵循避风港原则,若有图片和内容等侵权,请在 Issues 告知,核实后删除,其版权均归原作者及其网站所有;
-
本人不对任何内容承担任何责任,包括但不限于任何内容错误导致的任何损失、损害;
-
其它人通过任何方式登陆本网站或直接、间接使用项目相关资源,均应仔细阅读本声明,一旦使用、转载项目任何相关教程或资源,即被视为您已接受此免责声明。
-
本项目内所有资源文件,禁止任何公众号、自媒体进行任何形式的转载、发布。
-
本项目涉及的数据由使用的个人或组织自行填写,本项目不对数据内容负责,包括但不限于数据的真实性、准确性、合法性。使用本项目所造成的一切后果,与本项目的所有贡献者无关,由使用的个人或组织完全承担。
-
本项目中涉及的第三方硬件、软件等,与本项目没有任何直接或间接的关系。本项目仅对部署和使用过程进行客观描述,不代表支持使用任何第三方硬件、软件。使用任何第三方硬件、软件,所造成的一切后果由使用的个人或组织承担,与本项目无关。
-
本项目中所有内容只供学习和研究使用,不得将本项目中任何内容用于违法行为,包括但不限于建立 VPS 或违反国家/地区/组织等的法律法规或相关规定的其他用途。作者对于由此引起的任何隐私泄漏或其他后果概不负责.
-
所有基于本项目源代码,进行的任何修改,为其他个人或组织的自发行为,与本项目没有任何直接或间接的关系,所造成的一切后果亦与本项目无关。
-
本项目保留随时对免责声明进行补充或更改的权利,直接或间接使用本项目内容的个人或组织,视为接受本项目的特别声明。
-
🚀 高级资产搜索:
- 精准查询: 使用
/kkfofa命令执行任何 FOFA 语法查询。 - 预设与筛选: 支持管理员预设常用查询,并可在执行时快速叠加地域(大洲)筛选。
- 多种下载模式:
- 全量下载: 快速下载1万条以内的结果。
- 深度追溯 (Traceback): 通过时间线回溯,突破1万条限制,获取理论上的全量数据。
- 增量更新: 对已缓存的查询结果进行更新,只下载新增的数据,节省F点。
- 精准查询: 使用
-
📊 深度数据分析:
- 主机画像 (
/host): 获取单个IP或域名的全方位信息,包括开放端口、服务、证书、Banner等。 - 聚合统计 (
/stats): 对任意查询进行全局聚合统计,快速洞察资产的宏观分布(如Top国家、服务、端口等)。 - 批量特征分析 (
/batchfind): 上传IP列表(ip:port格式),机器人会自动查询并智能分析这批资产的共同特征,并自动生成建议的FOFA查询语句,是进行威胁情报分析和资产归类的利器。
- 主机画像 (
-
🛠️ 强大的后处理工具:
- 存活检测: 下载完成后可一键对结果进行端口存活检测。
- 子网扫描: 对结果中的IP所在C段进行相同端口的扫描,以发现更多潜在资产。
-
⚙️ 便捷的管理功能:
- 交互式设置 (
/settings): 通过菜单轻松管理API密钥、HTTP代理、查询预设等。 - 多API Key支持: 支持添加多个FOFA API Key,并可在查询时指定使用,机器人也会在某个Key失效或F点不足时自动切换。
- 数据管理: 支持配置的备份与恢复、查询历史回顾、以及导入已有的数据文件并与FOFA语法关联。
- 在线更新 (
/update): 可配置更新源URL,实现一键在线更新机器人脚本并自动重启。
- 交互式设置 (
在开始之前,您需要准备以下三样东西:
- 一台服务器: 一台可以7x24小时运行Python脚本的Linux服务器(或任何支持Python的PC/Mac)。最好不要在中国或其他Telegram被封锁的地区(比如伊朗)使用(由于GFW,需要配置网络代理)。
- FOFA API 密钥:
- 您必须拥有一个 FOFA 个人会员或以上账户。(或者不开会员,多充点F点)
- 登录后,在“个人中心” -> “API接口”中找到您的
Key。
- Telegram Bot Token:
- 在Telegram中搜索
@BotFather并开始对话。 - 发送
/newbot命令。 - 按照提示为您的机器人设置一个名字(Name)和用户名(Username,必须以
bot结尾)。 BotFather会给您一长串字符,这就是您的 Bot Token。请妥善保管,不要泄露。
- 在Telegram中搜索
即使您是新手,只需按照以下步骤操作,也能轻松部署成功。
将本项目提供的最新版Python脚本( fofa.py)下载到您的服务器上。
wget https://raw.githubusercontent.com/qszx11/fofa_bot/refs/heads/main/fofa.py也可以把requirements.txt也下载到服务器上。
wget https://raw.githubusercontent.com/qszx11/fofa_bot/refs/heads/main/requirements.txt你也可以直接去发行版中下载已经编译好的二进制文件。
机器人依赖于一些Python库。打开服务器的终端,执行以下命令来安装它们:
pip3 install python-telegram-bot==13.15 requests "urllib3<2.0"或者(如果你已经下载了requirements.txt)
pip3 install -r requirements.txt注意:我们指定了 python-telegram-bot 的版本为 13.15 以确保兼容性。
-
在脚本所在的目录下,创建一个名为
config.json的文件。 -
将以下内容复制并粘贴到
config.json文件中:{ "bot_token": "在这里粘贴你的Telegram Bot Token", "apis": [ "在这里粘贴你的第一个FOFA API Key" ], "admins": [], "proxy": "", "full_mode": false, "public_mode": false, "presets": [], "update_url": "" } -
修改配置文件:
"bot_token": 替换为你在 准备工作 中从@BotFather获取的 Token。"apis": 替换为你的 FOFA API Key。你可以添加多个Key,用逗号隔开,例如:["key1", "key2"]。"admins": 这一项先留空。当你第一次启动机器人并向它发送/start命令时,它会自动将你的Telegram用户ID添加为第一个管理员。"proxy": 如果你的服务器需要通过代理才能访问Telegram(如中国,伊朗等地),请在这里填写代理地址,例如"http://127.0.0.1:7890"。如果不需要,请保持为空""。
在终端中,使用以下命令启动机器人:
python3 fofa.py如果一切正常,您会看到类似 "🚀 终极版机器人已启动..." 的日志信息。现在,您可以在Telegram中找到您的机器人并开始使用了!
为了让机器人在您关闭终端后也能持续运行,推荐使用 nohup:
nohup python3 -u fofa.py > fofa_bot_run.log 2>&1 &也可以使用screen:
screen -S fofa
python3 fofa.py以上操作会让机器人在后台运行,并将所有日志输出到 fofa_bot_run.log 文件中(screen不可以)。
以下是所有可用指令的详细说明。
- /kkfofa
[key_index] <query>- 功能: 核心的FOFA查询指令。
- 用法:
- 不带参数 (
/kkfofa): 如果设置了预设,会弹出预设查询菜单。 - 带参数 (
/kkfofa domain="example.com"): 直接执行查询。 - 指定Key (
/kkfofa 2 app="nginx"): 使用config.json中配置的第2个API Key进行查询。
- 不带参数 (
- 交互流程:
- 执行查询后,机器人会询问是否按大洲进行地域筛选。
- 接着,它会检查是否有本地缓存。
- 如果结果超过1万,会提示选择下载模式(全量/深度追溯)。
-
/host
<ip|domain>- 功能: 获取单个目标的详细信息。
- 示例:
/host 1.1.1.1或/host example.com - 输出: 如果信息过多,会发送一个摘要,并将包含完整Banner/Header的详细报告作为文件发送。
-
/stats
<query>- 功能: 对一个FOFA查询进行聚合统计。
- 示例:
/stats app="Apache-Tomcat" - 输出: 返回Top 5的国家、组织、服务、端口等统计信息。
-
/batchfind
- 功能: 批量分析资产共性。这是本机器人的核心亮点之一。
- 用法:
- 发送
/batchfind命令。 - 上传一个
.txt文件,文件内容为每行一个ip:port(兼容各种复杂格式,如1.1.1.1:443 | ...)。 - 通过菜单选择你感兴趣的分析维度(如服务、证书、标题等)。
- 机器人会批量查询这些资产,并生成一份包含Top特征和建议FOFA查询语句的报告。
- 发送
-
/settings
- 功能: 进入交互式设置菜单,可以管理:
- API管理: 查看、添加、删除FOFA API Key,切换查询模式(近一年/完整历史)。
- 预设管理: 添加或删除常用的查询语句作为预设,方便快速调用。
- 代理设置: 设置或清除HTTP代理。
- 备份与恢复: 快速备份配置文件。
- 脚本更新: 设置更新源URL。
- 功能: 进入交互式设置菜单,可以管理:
-
/history
- 功能: 查看最近10条查询历史记录及其缓存状态。
-
/import
- 功能: 将一个已有的结果文件(
.txt)与一条FOFA查询语句关联,并存入缓存。 - 用法: 在Telegram中,回复一个你想导入的
.txt文件,然后输入/import命令,机器人会提示你输入关联的查询语句。
- 功能: 将一个已有的结果文件(
-
/backup & /restore
- 功能: 备份或恢复
config.json配置文件。 - 用法:
/backup会直接发送文件给你。/restore会提示你上传配置文件。
- 功能: 备份或恢复
-
/update
- 功能: 如果在设置中配置了
update_url,此命令会从该URL下载最新脚本并自动重启机器人。
- 功能: 如果在设置中配置了
-
/getlog
- 功能: 获取机器人的运行日志文件
fofa_bot.log。
- 功能: 获取机器人的运行日志文件
-
/shutdown
- 功能: 安全地关闭机器人进程。
-
/stop
- 功能: 紧急停止当前正在进行的数据下载任务(如深度追溯)。
-
/cancel
- 功能: 取消当前正在进行的会话操作(如设置、导入等)。
-
机器人没反应怎么办?
- 检查
config.json中的bot_token是否正确。 - 检查服务器网络是否正常,是否能访问Telegram API(如果不能,请设置代理,国内不设置代理肯定是不能使用的)。
- 查看
fofa_bot_run.log日志文件,看是否有报错信息(有的话请提交lssue)。
- 检查
-
为什么我发送命令,机器人提示我没有权限?
- 机器人启动后,第一个向它发送
/start的用户会被自动设为管理员。请确保您的Telegram用户ID已被正确添加到config.json的admins列表中。
- 机器人启动后,第一个向它发送
-
FOFA查询失败是什么原因?
- API Key无效: 检查Key是否正确,或是否已过期。
- F点不足: 登录FOFA官网查看F点余额。
- 语法错误: 检查您的FOFA查询语法是否正确。
- 🐛 Bug 报告:GitHub Issues
- 💡 功能建议:GitHub Discussions ## 📞 支持与反馈
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 提交 Pull Request
X-Fofa 提供深度追溯实现
Github社区