     
PentestGPT
A GPT-empowered penetration testing tool.
Explore the docs »
Design Details · View Demo · Report Bug or Request Feature
\[!警告\] PentestGPT只是一个研究原型 PentestGPT是一个研究原型,率先在网络安全中使用GenAI。请注意,声称提供付费PentestGPT产品的第三方服务-原始项目是免费和开源的。
常规更新
- \[2025年7月7日更新\]我们在PentestGPT中引入了一个新的基准测试系统 管道PentestGPT v2.0代理升级即将就绪。
- \[2025年6月14日更新\]介绍 网络安全人工智能(
CAI)PentestGPT的作者启动了一个新项目,该项目代表了人工智能网络安全工具的下一个发展,建立在PentestGPP建立的基础之上。
- 仓库: https://github.com/aliasrobotics/CAI - 技术报告: https://arxiv.org/pdf/2504.06017
- \[2025年6月14日更新\]我们添加了关于诈骗和模仿者将PentestGPT歪曲为付费服务的警告。有关更多详细信息,请参阅:https://www.reddit.com/r/cybersecurity/comments/1l9m2f1/pentestgpt_is_not_a_product_solely_a_research/
- \[2024年10月25日更新\]我们正在完成PentestGPT的重构,并将很快发布v1.0!
- \[2024年8月12日更新\]关于PentestGPT的研究论文发表在 USENIX安全2024
- \[2024年3月25日更新\]我们正在开发PentestGPT的下一个版本,该版本具有在线搜索、RAG和更强大的提示功能。敬请期待!
快速安装和设置
# Install
pip3 install git+https://github.com/GreyDGL/PentestGPT
# Configure API keys (choose your preferred provider)
export OPENAI_API_KEY='your_key_here' # For OpenAI models
export GOOGLE_API_KEY='your_key_here' # For Gemini models
export DEEPSEEK_API_KEY='your_key_here' # For Deepseek models
# Test connection
pentestgpt-connection
# Start PentestGPT with default settings (GPT-4o)
pentestgpt本地模型设置(Ollama)
对于注重隐私或离线使用,您可以使用Ollama在本地运行模型:
# 1. Install Ollama (visit https://ollama.ai for installation instructions)
# 2. Pull a compatible model
ollama pull llama3.1:latest
# 3. Start Ollama server (if not auto-started)
ollama serve
# 4. Use with PentestGPT
pentestgpt --ollama llama3.1:latest预配置的gpt-oss:20b配置文件(本地Ollama)
此工作区随附 .env.local 将PentestGPT锁定到的文件 gpt-oss:20b Olama模型在 http://localhost:11434。要使用它,请执行以下操作:
# 1. Ensure the model exists locally
ollama pull gpt-oss:20b
# 2. Load the provided environment defaults
source .env.local
# 3. Install Python dependencies
/opt/homebrew/bin/python3 -m pip install -e .
# 4. Launch PentestGPT against your local Ollama runtime
make ollama-local设置 PENTESTGPT_USE_OLLAMA_DEFAULT=true (已在内部完成 .env.local)即使在以下情况下,CLI也会自动将推理和解析模型切换到Ollama --ollama 省略。
uv工作流程(可选)
喜欢紫外线而不是pip?回购现在附带了签到 uv.lock,因此您可以在不接触全局Python安装的情况下配置和运行所有内容:
# 1. (Once) install uv from https://docs.astral.sh/uv/getting-started/ if needed
# 2. Create/refresh the local virtualenv described by pyproject + uv.lock
make uv-sync # wraps: uv sync --python /opt/homebrew/bin/python3
# 3. Run the CLI against your Ollama defaults without activating .venv manually
make uv-ollama # wraps: uv run -- python -m pentestgpt.main --ollama $OLLAMA_MODEL
# 4. Launch the PySide6 desktop console inside the same environment
make uv-gui # wraps: uv run -- python -m pentestgpt.gui.ollama_console
# 5. When dependencies change, regenerate the lock file
uv lock全部 uv run … 命令继承 .env.local Makefile导出的值(例如。, PENTESTGPT_USE_OLLAMA_DEFAULT, OLLAMA_BASE_URL, OLLAMA_MODEL),因此不需要记住额外的激活/选择逻辑。如果你更喜欢原始的uv命令,只需运行 uv sync --python /opt/homebrew/bin/python3 偶尔 uv run pentestgpt --ollama gpt-oss:20b (或 uv run python -m pentestgpt.gui.ollama_console).
会话API和交互提供商
PentestGPT现在由可重用的会话层驱动,因此UI不再需要模仿传统的TTY提示。
pentestgpt.session.PentestGPTSession拥有代理生命周期。CLI调用session.run()带着一个PromptToolkitInteractionProvider,而PySide6 GUI通过事件回调启动同一会话session.start().- 交互提供者控制如何收集用户输入:
- PromptToolkitInteractionProvider (默认CLI)包装原始提示工具包流,保持选项卡完成和多行编辑的完整性。 - EventDrivenInteractionProvider 发射结构化 SessionEvent 物体(output, state, error, request).GUI或web客户端订阅这些事件,并通过调用来回答提示 session.respond(request_id, value).
- 请求事件涵盖了代理今天发出的每一个提示:
main_task,local_task,prompt_text,option_select,confirm,list_select,以及wait_for_enter每个有效载荷包含提示文本以及呈现本机对话框所需的任何选项列表或元数据。 - 现在构建一个新的前端只意味着:
1. 实例化 PentestGPTSession 具有所需的配置和 event_callback. 1. 流 output 将事件添加到UI中,更新上的状态指示器 state,并在以下情况下显示本机对话框/窗体 request 到达。 1. 通过中继将所选值传回 session.respond().
这种拆分将业务逻辑保留在内部 pentestgpt.utils.pentest_gpt.PentestGPT 同时允许未来的表面(TUI、web、VS Code、MCP桥等)插入而无需端子黑客。
桌面图形用户界面(PySide6)
您更喜欢点击式界面吗?轻量级的PySide6控制台现在可用:
# Ensure dependencies (adds PySide6)
/opt/homebrew/bin/python3 -m pip install -e .
# Launch the GUI (same env vars as the CLI)
make gui
# …or, if installed globally
pentestgpt-gui该窗口流式传输PentestGPT提示流,允许您发送命令、暂存文件附件(用于以后的工具),并打开MCP配置对话框,您可以在其中定义ollmcp服务器URL、启用/禁用工具和预注册代理预设。GUI只是编排通常的 pentestgpt --ollama 过程,所以全部 .env.local 默认值(例如。, gpt-oss:20b 在 http://localhost:11434)仍然适用。
Ollama的环境变量:
OLLAMA_BASE_URL:服务器URL(默认值:http://localhost:11434)OLLAMA_MODEL:默认模型名称(默认值:llama3.1:latest)
渗透测试推荐的Olama模型:
llama3.1:latest-通用,尺寸和性能平衡良好codellama:7b-专门用于代码分析和安全任务deepseek-coder:6.7b-非常适合代码理解和漏洞分析
可用型号
查看可用型号:
pentestgpt --models
目前的型号包括
- OpenAI:gpt-4o(默认)、o3、o4 mini、gpt4all
- 双子座:双子座-2.5-flash,双子座-2.5-pro
- Deepseek:Deepseek-r1、Deepseek-v3
- 本地:gpt4all,ollama(需要本地安装)
用法
pentestgpt [-h] [--logDir LOGDIR] [--baseUrl BASEURL] [--models]
[--reasoning MODEL_NAME] [--parsing MODEL_NAME]
[--logging] [--useAPI] [--ollama MODEL_NAME]模型选择示例
# Use default model (GPT-4o)
pentestgpt
# Use specific models for reasoning and parsing
pentestgpt --reasoning o3 --parsing gpt-4o
# Use Ollama with a local model
pentestgpt --ollama llama3.1:latest
# Use Ollama with CodeLlama for code analysis
pentestgpt --ollama codellama:7bOlama故障排除
常见问题:
- “无法连接到Ollama服务器”
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if not running
ollama serve- “找不到模型”警告
# Pull the specific model you want to use
ollama pull llama3.1:latest
# List available models
ollama list- 自定义Ollama服务器URL
# Use Ollama running on different host/port
export OLLAMA_BASE_URL="http://your-server:11434"
pentestgpt --ollama llama3.1:latest基本工具命令
help:显示帮助消息 下一步:输入执行结果后获取下一步 更多:获取当前步骤的详细说明 todo:显示todo列表 讨论:与PentestGPT讨论 退出:退出并将输出保存到日志文件
使用\结束输入,然后 为了一条新的线路。
子任务处理程序命令
- 该工具的工作原理与 *msfconsole*.按照指导进行渗透测试。
- 一般来说,PentestGPT接收类似于chatGPT的命令。有几个基本命令。
1. 命令如下: - help:显示帮助消息。 - next:键入测试执行结果并获取下一步。 - more:let Pentestgpt 以解释当前步骤的更多细节。此外,还将创建一个新的子任务求解器来指导测试人员。 - todo:显示待办事项列表。 - discuss:与 Pentestgpt. - google:在谷歌上搜索。该功能仍在开发中。 - quit:退出工具并将输出另存为日志文件(请参阅 报告 下节)。 1. 您可以使用\结束输入(和 用于下一行)。 1. 您可以随时使用 TAB 自动完成命令。 1. 当您收到一个下拉选择列表时,您可以使用光标或箭头键浏览该列表。按 ENTER 选择项目。同样,使用\确认选择。\ 用户可以提交以下信息: - 工具:使用的安全测试工具的输出 - 网络:网页的相关内容 - 默认:无论你想要什么,这个工具都能处理 - 用户评论:用户对PentestGPT操作的评论
- 在由启动的子任务处理程序中
more,用户可以执行更多命令来调查特定问题:
1. 命令如下: - help:显示帮助消息。 - brainstorm:让PentestGPT就所有可能的解决方案的本地任务进行头脑风暴。 - discuss:与PentestGPT讨论此本地任务。 - google:在谷歌上搜索。该功能仍在开发中。 - continue:退出子任务并继续主测试会话。
常见问题
- Q什么是PentestGPT?
- A.PentestGPT是一个由大型语言模型(LLM)支持的渗透测试工具。它旨在自动化渗透测试过程。它建立在ChatGPT API之上,以交互式模式运行,以指导渗透测试人员进行总体进度和具体操作。
- Q:我需要付费才能使用PentestGPT吗?
- A.:是的,为了达到最佳性能。一般来说,您可以使用所需的任何LLM,但建议您使用GPT-4 API,为此您必须 将支付方式链接到OpenAI.
- Q为什么选择GPT-4?
- A.经过实证评估,我们发现GPT-4在渗透测试推理方面的表现优于GPT-3.5和其他LLM。事实上,GPT-3.5会导致简单任务中的测试失败。
- Q:为什么不直接使用GPT-4?
- A.:我们发现,随着测试的深入,GPT-4会失去上下文。在此过程中保持“测试状态意识”至关重要。您可以查看 PentestGPT Arxiv纸 了解详情。
- Q:我可以使用本地GPT模型吗?
- A.:是的。我们使用自定义解析器支持本地LLM。看看例子 这里.
安装
PentestGPT在以下条件下进行测试 Python 3.10。其他Python3版本应该可以工作,但没有经过测试。
使用pip安装
Pentestgpt 依赖于 OpenAI API 以实现高质量的推理。您可以参考安装视频 这里.
- 安装最新版本
pip3 install git+https://github.com/GreyDGL/PentestGPT
- 您还可以将项目克隆到本地环境并安装,以便更好地进行自定义和开发 - git clone https://github.com/GreyDGL/PentestGPT - cd PentestGPT - pip3 install -e .
- 使用OpenAI API
- 确保您已将付款方式链接到您的OpenAI帐户。 - 使用导出API密钥 export OPENAI_API_KEY='' - 导出API基础 export OPENAI_BASEURL='https://api.xxxx.xxx/v1'如果你需要的话。 - 测试连接 pentestgpt-connection
- 要验证连接是否配置正确,您可以运行
pentestgpt-connection。过了一段时间,您应该会看到一些与ChatGPT的示例对话。
- 示例输出如下
You're testing the connection for PentestGPT v 0.11.0
#### Test connection for OpenAI api (GPT-4)
1. You're connected with OpenAI API. You have GPT-4 access. To start PentestGPT, please use
- 注意:如果您没有将付款方式链接到您的OpenAI帐户,您将看到错误消息。
- ChatGPT cookie解决方案已被弃用,不建议使用。您仍然可以通过运行来使用它
pentestgpt --reasoning_model=gpt-4 --useAPI=False.
从源代码构建
- 将存储库克隆到本地环境。
- 确保
poetry已安装。如果没有,请参阅 诗歌装置指南.
报告和记录
- \[更新\]如果您希望我们收集日志以改进工具,请运行
pentestgpt --logging。我们只会收集LLM的使用情况,不会收集与您的OpenAI密钥相关的任何信息。 - 完成渗透测试后,将在中自动生成报告
logs文件夹(如果您使用退出quit命令)。 - 通过运行以下命令,可以以人类可读的格式打印报告
python3 utils/report_generator.py.报告样本sample_pentestGPT_log.txt也上传了。
自定义模型端点和本地LLM
PentestGPT现在支持本地LLM,但提示仅针对GPT-4进行了优化。
- 要使用本地GPT4ALL模型,您可以运行
pentestgpt --reasoning=gpt4all --parsing=gpt4all. - 要选择要与GPT4ALL一起使用的特定型号,您可以更新
module_mapping类在pentestgpt/utils/APIs/module_import.py. - 您还可以遵循以下示例
module_import.py,gpt4all.py和chatgpt_api.py为您自己的模型创建API支持。
引用
请在以下网址引用我们的论文:
@inproceedings {299699,
author = {Gelei Deng and Yi Liu and V{\'\i}ctor Mayoral-Vilches and Peng Liu and Yuekang Li and Yuan Xu and Tianwei Zhang and Yang Liu and Martin Pinzger and Stefan Rass},
title = {{PentestGPT}: Evaluating and Harnessing Large Language Models for Automated Penetration Testing},
booktitle = {33rd USENIX Security Symposium (USENIX Security 24)},
year = {2024},
isbn = {978-1-939133-44-1},
address = {Philadelphia, PA},
pages = {847--864},
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/deng},
publisher = {USENIX Association},
month = aug
}许可证
根据MIT许可证分发。看 LICENSE.txt 了解更多信息。 该工具仅用于教育目的,作者不容忍任何非法使用。使用作为自己的风险。
联系贡献者!
- 邓-  - gelei.deng@ntu.edu.sg
- 维克多·马约拉尔·维尔切斯-  - v.mayoralv@gmail.com
- 刘毅yi009@e.ntu.edu.sg
- 刘鹏liu_peng@i2r.a-star.edu.sg
- 李跃康yuekang.li@unsw.edu.au
(back to top)
