“ 路漫漫其修远兮 吾将上下而求索。”
最近难得有时间深入了解下大模型,之前工作中也有偶有用到,比如写代码,分析日志等等。用下来感觉大模型对技术岗的影响挺大。首先是写代码这一块,搞安全运营,免不了要写点脚本。比如从一堆日志里提取特定字段,或者把不同格式的告警数据做个格式化处理。这些事不难,但特别“脏活累活”,耗时间。试用了最近比较火的trae,大模型进化的已经可以根据提示词写工程化项目了,并且能跑通,这是我比较意外的,以前吭哧吭哧一下午才能搞定的工具,有了大模型加持一小时搞定。
比如,写一个弱口令扫描工具,我的提示词是这样的。
你是一个专业的AI prompt专家,写一个弱口令扫描器,逻辑是这样的。数据源有两种,一是从fofa上获取配置文件中fofa搜索语法的结果,fofa搜索语法比如protocol:ssh、title="phpmyadmin",二是读取本地文件,读取本地文件需要指定扫描的插件。来源fofa的读取到扫描结果后直接调用对应的弱口令扫描插件进行扫描,扫描插件从插件路径plugins目录里拉取,调用弱口令扫描插件,扫描完成后把结果更新到data目录的result.json文件中。程序加入多线程扫描,fofa每天拉取的结果保存下来,命名安装语法加日期.txt,扫描时候支持进度条显示,根据这个需求你生成一个prompt。
然后发给千问生成专业的提示词。
AI Prompt:设计并实现一个支持多数据源的弱口令扫描器系统
你是一个专业的网络安全工具开发者。请设计并实现一个弱口令扫描器,具备以下核心功能和架构要求:
📌 1. 背景与目标
构建一个自动化、可扩展的弱口令检测工具,支持从FOFA 网络空间搜索引擎和本地文件两种数据源获取目标资产,调用插件化弱口令检测模块进行扫描,并将结果持久化存储。系统需支持多线程、进度可视化、结果去重与历史记录管理。
🧩 2. 核心功能需求
✅ 2.1 数据源支持数据源一:FOFA API 拉取
从配置文件(如 config.yaml或config.json)读取 FOFA 查询语法(如protocol:ssh、title="phpMyAdmin")。使用 FOFA API( https://fofa.info)获取匹配的 IP:Port 列表。每日拉取一次,避免重复请求(按日期去重)。 保存原始结果到本地文件:
路径:data/fofa/
命名规则:{搜索语法简写}_{YYYYMMDD}.txt(如phpmyadmin_20250802.txt)数据源二:本地文件导入
支持从本地文本文件读取目标列表(格式: IP:Port,每行一条)。必须在启动时指定对应的弱口令扫描插件名称(如 phpmyadmin、redis),用于后续调用。
✅ 2.2 插件化弱口令扫描引擎
扫描逻辑通过插件实现,插件存放于 plugins/目录。每个插件为独立 Python 文件(如 plugins/ssh.py、plugins/phpmyadmin.py),需实现统一接口:python 深色版本
defscan(target: str, timeout: int = 10) -> dict:
"""
target: IP:Port
return: {
"target": "1.1.1.1:22",
"plugin": "ssh",
"status": "success|failure|error",
"vulnerable": True|False,
"credentials": [{"user": "root", "pass": "123456"}] | [],
"message": "optional info"
}
```主程序动态导入并调用对应插件。
✅ 2.3 扫描调度与执行
支持从 FOFA 或本地文件加载目标后,自动匹配并调用对应插件。 示例:FOFA 查询 title="phpMyAdmin"→ 自动调用plugins/phpmyadmin.py支持多线程并发扫描,线程数可在配置文件中设置(默认 50)。 扫描过程显示实时进度条(使用 tqdm或类似库),显示:已扫描/总数、成功数、失败数。
✅ 2.4 结果存储与管理
扫描结果统一写入 JSON 文件: data/result.json文件结构为数组,每条记录包含: json 深色版本
{
"scan_id": "uuid",
"target": "1.1.1.1:80",
"plugin": "phpmyadmin",
"source": "fofa|local",
"source_query": "title=\"phpMyAdmin\"",
"scan_time": "2025-08-02T10:00:00",
"vulnerable": true,
"credentials": [{"user": "admin", "pass": "admin"}],
"status": "success"
}每次扫描追加新结果,避免覆盖历史数据(可考虑按日期分文件或数据库,但当前阶段用 JSON 即可)。
✅ 2.5 配置管理
配置文件 config.yaml示例:yaml 深色版本
fofa:
email:""
key:"your_fofa_api_key"
queries:
-"protocol:ssh"
-'title="phpMyAdmin"'
-"app:Redis"
scan:
threads:50
timeout:10
plugins_dir:"plugins"
result_file:"data/result.json"
logging:
level:"INFO"
⚙️ 3. 系统流程
读取配置文件。 判断数据源:
若为 FOFA 查询:调用 API 获取目标,保存原始结果,提取协议/标题 → 映射插件名。 若为本地文件:读取 IP:Port,结合用户指定插件名。
加载对应插件模块。 多线程调用插件扫描目标,显示进度条。 汇总结果,写入 data/result.json。
结果竟然能直接跑起来。
生成的README.md也比较详细,有工具介绍、配置说明、使用方法、插件开发思路、程序的目录结果。不得不说大模型生成的文档着实专业。
