Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
BreakEscape — 可挂载的Rails引擎,提供24+个网络安全密室逃脱场景,包含随机密码、即时编译的NPC对话以及用于游戏状态管理的RESTful API。专为实践性安全培训设计。 | Kitploit
工具/GitHubGitHub/cliffe/breakescape
Web安全CTF渗透测试学习与教育学习路径与课程实验室与实践
GitHubcliffe/breakescape

BreakEscape

可挂载的Rails引擎,提供24+个网络安全密室逃脱场景,包含随机密码、即时编译的NPC对话以及用于游戏状态管理的RESTful API。专为实践性安全培训设计。

查看仓库
627天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

BreakEscape Rails 引擎

一个可挂载的 Rails 引擎,用于网络安全培训的密室逃脱游戏。

功能

  • 24+ 个网络安全密室逃脱场景
  • 服务端进度追踪,采用 2 表架构
  • 通过 ERB 为每个游戏实例生成随机密码
  • NPC 对话的即时 Ink 脚本编译
  • 多态玩家支持(User/DemoUser)
  • Pundit 授权
  • 用于游戏状态管理的 RESTful API
  • 基于会话的状态持久化

安装

在你的 Gemfile 中:

root@kitploit:~
gem 'break_escape', path: 'path/to/break_escape'

然后:

root@kitploit:~
bundle install
rails break_escape:install:migrations
rails db:migrate
rails db:seed  # 可选:从场景创建任务

在主机应用中挂载

在你的 config/routes.rb 中:

root@kitploit:~
mount BreakEscape::Engine => "/break_escape"

使用方法

独立模式(开发)

root@kitploit:~
export BREAK_ESCAPE_STANDALONE=true
rails server
# 访问 http://localhost:3000/break_escape/

挂载模式(生产)

在 Hacktivity 或其他 Rails 应用中挂载。引擎将使用主机应用的 current_user(通过 Devise)。

配置

root@kitploit:~
# config/initializers/break_escape.rb
BreakEscape.configure do |config|
  config.standalone_mode = false  # 开发环境设为 true
  config.demo_user_handle = 'demo_player'
end

数据库模式

  • break_escape_missions - 场景元数据(名称、显示名称、发布状态、难度)
  • break_escape_games - 玩家状态 + 场景快照(JSONB)
  • break_escape_demo_users - 仅独立模式(可选)

API 端点

  • GET /games/:id/scenario - 场景 JSON(ERB 生成)
  • GET /games/:id/ink?npc=X - NPC 脚本(从 .ink 即时编译)
  • GET /games/:id/bootstrap - 初始游戏数据
  • PUT /games/:id/sync_state - 同步玩家状态
  • POST /games/:id/unlock - 验证解锁尝试
  • POST /games/:id/inventory - 更新物品栏

架构

ERB 场景生成

场景存储为 .json.erb 模板,按需渲染并带有随机值:

  • <%= random_password %> - 为每个游戏生成唯一密码
  • <%= random_pin %> - 生成唯一的 4 位 PIN 码
  • <%= random_code %> - 生成唯一的十六进制代码

即时 Ink 编译

NPC 对话脚本在首次请求时编译(约 300ms):

  1. 检查 .json 是否存在且比 .ink 更新
  2. 如果需要,运行 inklecate 编译
  3. 缓存编译后的 JSON 供后续请求使用

状态管理

玩家状态存储在 JSONB 列中:

  • 当前房间和已解锁的房间
  • 物品栏和已收集的物品
  • NPC 遭遇
  • 全局变量(与客户端同步)
  • 生命值和迷你游戏状态

测试

CI

测试在 GitHub Actions 上自动运行。提交的 Gemfile.lock 固定了所使用的确切 gem 版本。

本地有网络

root@kitploit:~
bundle install
bundle exec rails db:create db:migrate RAILS_ENV=test
bundle exec rails test

本地无网络

引擎附带一个 bin/setup 脚本,可从同级 Hacktivity 检出目录引导 bundle(其中已包含所有必需的 gem):

root@kitploit:~
# 从 BreakEscape 根目录运行 — Hacktivity 必须在 ../Hacktivity
bin/setup
bundle exec rails test

# 如果 Hacktivity 在其他位置,设置 HACKTIVITY_DIR:
HACKTIVITY_DIR=/path/to/Hacktivity bin/setup

bin/setup 将解析后的 .gem 文件复制到 vendor/cache/ 中,并运行 bundle install --local。vendor/cache/ 和 vendor/bundle/ 目录已被 gitignore;仅提交 Gemfile.lock。

文档

集成指南请参见 HACKTIVITY_INTEGRATION.md。

致谢

感谢所有为该项目做出贡献的人。请参考 GitHub 历史记录。

  • 本项目得到网络安全知识体系 (CyBOK 1.1) 资源在 2023-2024 年度的支持。
  • 本项目得到网络安全知识体系 (CyBOK 1.1) 资源在 2024-2025 年度的支持。
  • 本项目得到网络安全知识体系 (CyBOK) 资源在安全知情安全 (Security-Informed Safety) 项目 2025-2026 年度的支持。
下载工具