
محرك Rails قابل للتثبيت يوفر أكثر من 24 سيناريو لغرفة الهروب في الأمن السيبراني مع كلمات مرور عشوائية، وحوار NPC مُجمَّع في الوقت المناسب (JIT)، وواجهة برمجة تطبيقات RESTful لإدارة حالة اللعبة. صُمم للتدريب الأمني العملي.
لعبة غرفة هروب للتدريب على الأمن السيبراني كمحرك Rails قابل للتركيب.
في ملف Gemfile:
gem 'break_escape', path: 'path/to/break_escape'
ثم:
bundle install
rails break_escape:install:migrations
rails db:migrate
rails db:seed # (اختياري: إنشاء مهام من السيناريوهات)
في ملف config/routes.rb:
mount BreakEscape::Engine => "/break_escape"
export BREAK_ESCAPE_STANDALONE=true
rails server
# Visit http://localhost:3000/break_escape/
قم بتثبيته في Hacktivity أو تطبيق Rails آخر. سيستخدم المحرك current_user للتطبيق المضيف عبر Devise.
# 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 - الوضع المستقل فقط (اختياري)GET /games/:id/scenario - JSON السيناريو (مولد بواسطة ERB)GET /games/:id/ink?npc=X - نص الشخصية غير اللاعبة (مترجم في الوقت المناسب من .ink)GET /games/:id/bootstrap - بيانات اللعبة الأوليةPUT /games/:id/sync_state - مزامنة حالة اللاعبPOST /games/:id/unlock - التحقق من محاولة الفتحPOST /games/:id/inventory - تحديث المخزونيتم تخزين السيناريوهات كقوالب .json.erb ويتم عرضها عند الطلب بقيم عشوائية:
<%= random_password %> - يولد كلمة مرور فريدة لكل لعبة<%= random_pin %> - يولد رمز PIN فريد من 4 أرقام<%= random_code %> - يولد رمز سداسي عشري فريديتم تجميع نصوص حوار الشخصيات غير اللاعبة عند الطلب الأول (حوالي 300 مللي ثانية):
.json موجودًا وأحدث من ملف .inkinklecate لتجميعهيتم تخزين حالة اللاعب في عمود JSONB:
يتم تشغيل الاختبارات تلقائيًا على GitHub Actions. يحدد ملف Gemfile.lock الملتزم الإصدارات الدقيقة للـ gems المستخدمة.
bundle install
bundle exec rails db:create db:migrate RAILS_ENV=test
bundle exec rails test
يأتي المحرك مع نص برمجي bin/setup يقوم بتهيئة الحزمة من نسخة Hacktivity المجاورة (التي تحتوي بالفعل على جميع gems المطلوبة في مجلد vendor):
# من جذر 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/ بواسطة git; يتم التزام Gemfile.lock فقط.
انظر HACKTIVITY_INTEGRATION.md لدليل التكامل.
شكر جزيل لكل من ساهم في المشروع. يرجى الرجوع إلى سجل GitHub.