mirror of
https://github.com/cliffe/BreakEscape.git
synced 2026-02-21 11:18:08 +00:00
78ac25478ff11fbd9b60b2a7d18c5598d95a2762
Created foundation for Mission 6 "Follow the Money" - Crypto Anarchists financial investigation: **Mission Metadata (mission.json):** - Difficulty: Tier 2 (Intermediate) - SecGen Scenario: Hackme and Crack Me (password cracking) - CyBOK Coverage: Applied Cryptography, Security Operations, Systems Security, Human Factors - Focus: Cryptocurrency forensics, blockchain analysis, financial network mapping **Design Documentation (README.md):** - Complete mission overview and narrative structure - Room layout design (8 rooms: exchange infrastructure) - NPC roster: Elena Volkov (recruitable CTO), Satoshi Nakamoto II (leader) - Critical revelations: The Architect's Fund ($12.8M), coordinated attack timeline - Educational objectives and VM integration plan - Campaign connections to M2, M5, M7, M9 **Key Mission Features:** - Password cracking mechanics with crypto-themed passwords - Blockchain transaction analysis connecting all ENTROPY cells - Financial forensics: trace M2 ransomware + M5 espionage payments - Major choices: seize assets vs. monitor; recruit Elena vs. arrest - Architect identity narrowed: 87% probability = Dr. Adrian Tesseract **Campaign Integration:** - Connects M2 hospital ransomware payment trail - Connects M5 corporate espionage financial compensation - Reveals The Architect's Fund: $12.8M for 72-hour coordinated attack - 180-340 projected casualties across all cells - Setup for M7 crisis (fund distribution triggers attack) - Setup for M9 revelation (Architect identity clues) **Implementation Status:** Design complete. Pending: Ink scripts, scenario.json.erb completion, validation. This mission serves as the financial hub of Season 1, revealing how all ENTROPY operations are coordinated and funded through the Crypto Anarchists' infrastructure.
BreakEscape Rails Engine
Cybersecurity training escape room game as a mountable Rails Engine.
Features
- 24+ cybersecurity escape room scenarios
- Server-side progress tracking with 2-table schema
- Randomized passwords per game instance via ERB
- JIT Ink script compilation for NPC dialogue
- Polymorphic player support (User/DemoUser)
- Pundit authorization
- RESTful API for game state management
- Session-based state persistence
Installation
In your Gemfile:
gem 'break_escape', path: 'path/to/break_escape'
Then:
bundle install
rails break_escape:install:migrations
rails db:migrate
rails db:seed # Optional: creates missions from scenarios
Mounting in Host App
In your config/routes.rb:
mount BreakEscape::Engine => "/break_escape"
Usage
Standalone Mode (Development)
export BREAK_ESCAPE_STANDALONE=true
rails server
# Visit http://localhost:3000/break_escape/
Mounted Mode (Production)
Mount in Hacktivity or another Rails app. The engine will use the host app's current_user via Devise.
Configuration
# config/initializers/break_escape.rb
BreakEscape.configure do |config|
config.standalone_mode = false # true for development
config.demo_user_handle = 'demo_player'
end
Database Schema
break_escape_missions- Scenario metadata (name, display_name, published, difficulty)break_escape_games- Player state + scenario snapshot (JSONB)break_escape_demo_users- Standalone mode only (optional)
API Endpoints
GET /games/:id/scenario- Scenario JSON (ERB-generated)GET /games/:id/ink?npc=X- NPC script (JIT compiled from .ink)GET /games/:id/bootstrap- Initial game dataPUT /games/:id/sync_state- Sync player statePOST /games/:id/unlock- Validate unlock attemptPOST /games/:id/inventory- Update inventory
Architecture
ERB Scenario Generation
Scenarios are stored as .json.erb templates and rendered on-demand with randomized values:
<%= random_password %>- Generates unique password per game<%= random_pin %>- Generates unique 4-digit PIN<%= random_code %>- Generates unique hex code
JIT Ink Compilation
NPC dialogue scripts compile on first request (~300ms):
- Check if
.jsonexists and is newer than.ink - If needed, run
inklecateto compile - Cache compiled JSON for subsequent requests
State Management
Player state stored in JSONB column:
- Current room and unlocked rooms
- Inventory and collected items
- NPC encounters
- Global variables (synced with client)
- Health and minigame state
Testing
rails test
License
AGPL v3 - See LICENSE file for details
Documentation
See HACKTIVITY_INTEGRATION.md for integration guide.
Description
Languages
JavaScript
86.5%
Ink
7%
HTML
2.9%
CSS
2.5%
Ruby
0.9%
Other
0.2%