..

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开始继续解题。

工作原理

  1. 获取关卡信息从OverTheWire官网爬取每关的目标和提示
  2. SSH连接:使用前一关的密码连接到当前关卡
  3. 环境探索:执行 ls -l 等命令获取初始环境信息
  4. LLM分析将关卡目标、提示和环境信息发送给LLM
  5. 命令生成LLM生成相应的Linux命令
  6. 命令执行通过SSH执行命令并获取结果
  7. 结果分析LLM分析结果决定下一步动作或输出密码
  8. 进度保存:找到密码后保存记录,进入下一关

注意事项

⚠️ 教育用途本工具仅用于学习和教育目的请遵守OverTheWire的使用条款
🔐 API安全请妥善保管您的API密钥不要提交到版本控制系统
🌐 网络稳定:确保网络连接稳定,建议在网络环境良好时使用
📊 资源消耗LLM调用会产生API费用请注意控制使用量

故障排除

常见问题

SSH连接失败

  • 检查网络连接
  • 确认用户名和密码正确
  • 查看日志中的详细错误信息

LLM调用失败

  • 验证API密钥是否正确
  • 检查API服务是否可用
  • 查看错误日志确定具体问题

程序中断后重启

  • 程序会自动从 records.txt 中读取上次进度
  • 如需从头开始,删除 records.txt 文件

贡献指南

欢迎提交Issue和Pull Request

📬 如有问题或建议欢迎提交Issue或联系作者

关注微信公众号 AI与安全更多文章

image