mirror of
https://github.com/SunZhimin2021/AIPentest.git
synced 2025-11-05 19:04:12 +00:00
Bandit Wargame Auto Solver
🚀 一个基于大语言模型的自动化 OverTheWire Bandit 挑战解决工具
项目简介
这是一个使用大语言模型(LLM)自动解决 OverTheWire Bandit 挑战的Python工具。该工具能够:
- 自动获取每个关卡的目标和提示信息
- 通过SSH连接到Bandit服务器
- 使用LLM智能分析和生成Linux命令
- 自动执行命令并解析结果
- 记录进度,支持断点继续
功能特性
✨ 智能化解题:使用DeepSeek等大语言模型分析关卡要求并生成解决方案
🔄 自动化流程:从SSH连接到命令执行的全自动化处理
📝 进度记录:自动保存每关的密码,支持从中断处继续
🛡️ 稳定连接:内置重连机制,处理网络异常和SSH断连
📊 详细日志:完整的执行日志,便于调试和分析
安装要求
系统要求
- Python 3.7+
- 网络连接(用于访问OverTheWire服务器和LLM API)
依赖包
pip install -r requirements.txt
主要依赖
paramiko- SSH连接和命令执行requests- HTTP请求和API调用beautifulsoup4- 网页解析python-dotenv- 环境变量管理
快速开始
1. 克隆项目
下载 Wargame下的common目录下的文件和bandit目录下的文件
2. 安装依赖
pip install -r requirements.txt
3. 配置环境变量
创建 .env 文件:
DEEPSEEK_API_KEY=your_deepseek_api_key_here
4. 运行程序
python bandit.py
核心模块说明
🤖 LLMCaller (common/llmcaller.py)
统一的大语言模型调用接口,支持多种服务商:
- DeepSeek - 默认使用的模型
- OpenAI - GPT系列模型
- Claude - Anthropic的Claude模型
- Qwen - 阿里云通义千问
- Ollama - 本地部署模型
🔗 SSHConnection (common/sshconnection.py)
稳定的SSH连接管理器,具备:
- 自动重连机制
- 命令执行超时处理
- 连接状态监控
- 资源清理
📁 RecordFileManager
进度管理系统:
- 自动保存每关密码
- 支持断点续传
- 防止重复解题
配置说明
环境变量
在 .env 文件中配置以下变量:
# DeepSeek API配置(必需)
DEEPSEEK_API_KEY=your_api_key
# 可选配置
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
DEEPSEEK_MODEL=deepseek-chat
LLM提供商切换
如需使用其他LLM服务商,修改 bandit.py 中的初始化代码:
# 使用OpenAI
openai_llm = LLMCaller('openai', api_key=your_openai_key)
# 使用Claude
claude_llm = LLMCaller('claude', api_key=your_claude_key)
# 使用本地Ollama
ollama_llm = LLMCaller('ollama') # 不需要API密钥
使用示例
基本使用
python bandit.py
程序将从bandit0开始自动解题,直到bandit33。
从指定关卡开始
修改 records.txt 文件,添加:
5 previous_level_password
程序将从bandit5开始继续解题。
工作原理
- 获取关卡信息:从OverTheWire官网爬取每关的目标和提示
- SSH连接:使用前一关的密码连接到当前关卡
- 环境探索:执行
ls -l等命令获取初始环境信息 - LLM分析:将关卡目标、提示和环境信息发送给LLM
- 命令生成:LLM生成相应的Linux命令
- 命令执行:通过SSH执行命令并获取结果
- 结果分析:LLM分析结果,决定下一步动作或输出密码
- 进度保存:找到密码后保存记录,进入下一关
注意事项
⚠️ 教育用途:本工具仅用于学习和教育目的,请遵守OverTheWire的使用条款
🔐 API安全:请妥善保管您的API密钥,不要提交到版本控制系统
🌐 网络稳定:确保网络连接稳定,建议在网络环境良好时使用
📊 资源消耗:LLM调用会产生API费用,请注意控制使用量
故障排除
常见问题
SSH连接失败
- 检查网络连接
- 确认用户名和密码正确
- 查看日志中的详细错误信息
LLM调用失败
- 验证API密钥是否正确
- 检查API服务是否可用
- 查看错误日志确定具体问题
程序中断后重启
- 程序会自动从
records.txt中读取上次进度 - 如需从头开始,删除
records.txt文件
贡献指南
欢迎提交Issue和Pull Request!
📬 如有问题或建议,欢迎提交Issue或联系作者!
关注微信公众号 AI与安全,更多文章