BG
GamesJavaScript

HELIOS: Breach

A hacker puzzle game in the browser: break into a fictional corporation with real Linux commands, ciphers and encodings.

README

ХЕЛИОС: Проникване

Играй Лиценз: MIT Без библиотеки

Хакерска пъзел игра, която се играе изцяло в браузъра. Получаваш фалшив Linux терминал и с истински команди проникваш в системите на измислената корпорация „Хелиос Системс“, за да спреш проект „КОНТРОЛНО“: изкуствен интелект, който иска учениците да пишат контролни всеки ден.

▶ Играй тук

Съдържание

Как се играе

Пишеш команди в терминала и натискаш Enter. Във всяко от шестте нива трябва да намериш парола и да я въведеш с unlock <парола>. Командата help показва какво можеш, man <команда> обяснява подробно всеки инструмент, а hint дава подсказка срещу 75 точки.

Ниво Сървър Какво учиш
1 helios-guest ls, cd, cat: навигация във файлова система
2 helios-portal скрити файлове и папки (ls -a), .bash_history, .env
3 helios-mail шифър на Цезар
4 helios-db Base64 (и защо това не е шифроване), конфигурационни файлове
5 helios-logs grep и пайпове (cat auth.log | grep root)
6 helios-core шестнадесетичен и двоичен код, обърнат текст

Удобства:

  • Tab допълва имена на команди, файлове и папки (cat to + Tab → cat todo.txt).
  • ↑ / ↓ връщат предишни команди.
  • Пайп | подава изхода на една команда към друга: cat auth.log | grep root.
  • Прогресът се пази автоматично в браузъра. Може да затвориш таба и да продължиш по-късно.
  • Всеки клавиш или клик прескача анимациите с текст.
  • На телефон има бутони за най-честите команди под терминала.

Всяка игра е различна

Всяка нова игра генерира свой свят от случаен номер (семе). От него зависят:

  • паролите на всичките шест нива;
  • кой е издал паролата и къде: стажантът, чистачката, охраната или рецепцията в ниво 1; .bash_history, .env или скрита папка в ниво 2; различни конфигурационни файлове и скриптове в ниво 4;
  • ключът на шифъра на Цезар и гатанката, която го издава (планети, дни от седмицата, месеци, футболисти…);
  • часът, в който директорът влиза в ниво 5, и защо точно тогава;
  • как е разделен ключът в ниво 6 и с какво е кодиран всеки фрагмент (hex, двоичен или наобратно, в различен ред);
  • обстановката на нивата от 2 до 6:
Обстановка Ефект
Спокойна нощ нормално: 3% следа на команда, 12% за грешна парола
Засилена охрана 5% следа на команда
Админът гледа сериал само 2% следа на команда
Нова защита грешна парола струва 25%
Шумен прокси започваш нивото с 30% следа

Номерът на света се вижда в началото, в страничния панел, със status и на финалната карта. С reset <номер> можеш да изиграеш точно същия свят отново или да го дадеш на приятел и да сравните резултатите. Само reset започва нов, случаен свят.

Команди

Команда Какво прави
ls [-a] [папка] показва файловете; -a показва и скритите (имената им започват с точка)
cd <папка> влиза в папка; cd .. е нагоре, cd ~ е вкъщи
cat <файл> показва съдържанието на файл
pwd показва къде си
tree [-a] рисува дървото от папки (шумно: +5% следа)
find <име> търси файл по име из целия сървър (много шумно: +8% следа)
echo <текст> отпечатва текст, удобно с пайп
unlock <парола> въвежда намерена парола
note [текст] бележник в страничния панел; note -d <n> трие, note -c чисти
man <команда> подробно ръководство, например man grep или man pipe
hint подсказка за нивото (−75 точки, по 3 на ниво)
status · achievements прогрес · постижения
clear · sound чисти екрана · звук
reset [номер] нова игра в случаен свят или в свят с даден номер

Инструменти, които се отключват по пътя: caesar (ниво 3), base64 (ниво 4), grep (ниво 5), hex, bin, rev (ниво 6).

Има и скрити команди: sudo, kafe, neofetch, whoami, date, vim, hack… пробвай ги.

Точки, следа и рангове

Събитие Точки
Минато ниво +500
Ниво, минато за под 2 минути +100 бонус
Подсказка (hint) −75
Засичане (следата стига 100%) −150

Следа. Всяка „истинска“ команда (ls, cd, cat, grep…) добавя 3% към лентата „СЛЕДА“, tree добавя 5%, find 8%, а грешна парола 12%. Обстановката на нивото може да промени тези числа. При 100% системата те засича: губиш 150 точки и се връщаш в началната папка. Над 70% екранът пулсира в червено. help, hint, note, man, status и clear не оставят следа. Следата се нулира в началото на всяко ниво.

Рангове: Скрипт-хлапе (под 1900) → Хакер (1900+) → Призрак (2600+) → Легенда (3200+). Максимумът е 3600: 6 нива × (500 + 100), без подсказки и засичания.

Ръководство за минаване (спойлери)

⚠️ Паролите са различни във всяка игра, затова тук е описано как се решава всяко ниво и във всички варианти. Примерите са от един конкретен свят. Опитай първо сам или с hint и отваряй нивата едно по едно само ако блокираш.

Ниво 1 · helios-guest — навигация

Започваш в /home/guest. Прочети readme.txt: той те моли да не пипаш папката на някого (стажанта, чистачката, охраната или рецепцията). Точно в тази папка е паролата.

ls
cat readme.txt
cd stajant          (или chistachka, ohrana, retseptsia)
ls
cat todo.txt        (или belejka.txt, dnevnik_smyana.txt, postit.txt)

Във файла някой е записал паролата за портала, например:

[ ] да сменя паролата за портала, защото е твърде лесна
    (сега е: slanchogled)
unlock slanchogled

⚠️ Ако видиш wifi.txt, паролата в него е само за wifi и не става за портала.

🐱 Тайно постижение: в същата папка има snimki/. Пробвай cat snimki/kotka.jpg.

Ниво 2 · helios-portal — скрити файлове

ls показва само docs/ и welcome.txt. Политиката в docs/politika.txt подсказва, че админът „скрива“ паролите. В Linux файловете с точка отпред са скрити:

ls -a

Паролата е в един от тези варианти:

Какво виждаш Какво правиш Къде е паролата
.bash_history cat .bash_history в команда като mysql -u admin -p'banitsa' или sshpass -p 'banitsa' ssh …
.env cat .env на реда MAIL_PASSWORD=banitsa
.taino/ cd .taino, после cat parola.txt „Паролата за пощата: banitsa“
unlock banitsa

(.config/ винаги е там и е безобидна.)

Ниво 3 · helios-mail — шифър на Цезар
cd inbox
ls
cat 001_direktor.txt

Директорът казва кой ще прати паролата и издава ключа с гатанка:

Гатанка Ключ
планетите в Слънчевата система (без Плутон) 8
дните в седмицата / цветовете на дъгата 7
месеците в годината 12
футболистите на терена 11
пръстите на двете ръце 10
краката на насекомо 6
пръстите на едната ръка 5
сезоните 4
„същият като на самия Юлий Цезар“ 3

Прочети шифрованото писмо (002_…txt, името зависи от подателя) и върни текста с минус ключа:

cat 002_ivan.txt
caesar -8 xizwtibi hi jihibi m wzjqbi
parolata za bazata e orbita
unlock orbita

💡 С пайп: echo <шифъра> | caesar -8. Ако не разгадаеш гатанката, пробвай ключовете един по един: те са само 25.

Ниво 4 · helios-db — Base64

Паролата на базата е „скрита“ с Base64 в един от тези файлове:

Файл Ред
config/database.yml password_enc: …
config/app.json "db_secret": "base64:…"
docker-compose.yml POSTGRES_PASSWORD_B64: …
scripts/backup.sh echo '…' | base64 -d

Използвай tree, за да видиш всичко наведнъж, или разгледай папките. После декодирай низа (без base64: отпред):

cat config/database.yml
base64 -d bHl1dGVuaXRzYQ==
unlock lyutenitsa

Base64 често завършва на = или ==. Това не е шифроване: няма ключ и всеки може да го декодира.

Ниво 5 · helios-logs — grep

Започваш в /var/log. Прочети чата:

cat notes/sysops_chat.txt

Той казва в колко часа влиза шефът (например 03:14, 13:37, 04:04…) и че е написал паролата си в полето за потребителско име. auth.log има над 260 реда, затова филтрираш по този час:

grep 03:14 auth.log
03:14:01 ... Failed password for invalid user noshtna_sova from 10.0.7.31
03:14:09 ... Accepted password for root from 10.0.7.31

Паролата е думата след invalid user (винаги е от две думи с долна черта):

unlock noshtna_sova

💡 Работи и grep invalid auth.log или cat auth.log | grep invalid.

Ниво 6 · helios-core — hex, bin, rev
cd fragmenti
ls

Има три фрагмента, номерирани 1, 2, 3. Разширението на всеки показва как е кодиран, а редът на кодиранията е различен всяка игра:

Разширение Как изглежда Команда
.hex 6e 79 61 6d 61 hex -d 6e 79 61 6d 61
.bin 01011111 01101011 … bin -d 01011111 01101011 …
.txt текст наобратно rev fragment_N.txt

Разкодирай ги поред, запиши всяко парче с note и ги слепи в ред 1-2-3 без интервали. Например nyama + _kontr + olni = nyama_kontrolni. Ключът винаги е смислена фраза („няма контролни“, „вечна ваканция“, „без домашни“…), така че веднага ще разбереш дали си я сглобил правилно.

unlock nyama_kontrolni

📜 Преди това прочети cat ../logs/dnevnik_na_helios.log за историята на ИИ-то (постижение „Археолог“).

Финалът — два края

ХЕЛИОС ти проговаря и имаш root достъп. Избери:

Команда Край
delete kontrolno Изтриваш само проекта. ХЕЛИОС оцелява и започва да помага с домашните… учтиво. (Дипломат)
shutdown helios Изключваш целия ИИ. Последни думи: „Но кой ще проверява домашните?“ (Терминатор)

Изборът не влияе на точките. С reset започваш в нов свят. Постиженията остават, така че можеш да изиграеш и другия край.

Съвети за ранг ЛЕГЕНДА (3200+ точки)
  • Максимумът е 3600 точки. Трябват ти поне 3200, значи можеш да си позволиш най-много 5 подсказки или две засичания.
  • Всяко ниво под 2 минути носи +100. Чети само файла, който ти трябва: readme.txt в ниво 1 веднага казва в чия папка да търсиш.
  • Използвай tree (в ниво 1 и 4) вместо много ls и cd. Струва малко повече следа, но спестява време.
  • Никога не гадай пароли: при „Нова защита“ една грешка е 25% следа.
  • При „Шумен прокси“ започваш с 30%. Тогава не ползвай find.
  • note, man, hint, status и help не оставят следа.

Постижения

14 постижения, пазят се и след reset. За всички трябват поне две игри (двата края).

Постижение Как се взима
Вътре съм Мини ниво 1.
Чета упътванията Използвай man.
Водопроводчик Свържи две команди с |.
Детектив Запиши бележка с note.
Археолог Прочети дневника на ХЕЛИОС в ниво 6.
Без патерици Завърши без нито един hint.
Невидим Завърши, без следата да стигне 100%.
Светкавица Мини всяко ниво за под 2 минути.
Легенда Завърши с 3200+ точки.
Дипломат Финал с delete kontrolno.
Терминатор Финал с shutdown helios.
3 тайни постижения (спойлер)
Постижение Как се взима
Котколюбец cat на снимка на котка в ниво 1.
Бариста Напиши kafe.
Не на мен тези Напиши sudo.

Технически детайли

  • Чист HTML, CSS и JavaScript, без библиотеки, без бекенд и без билд стъпка
  • Виртуална файлова система с относителни и абсолютни пътища (.., ~, /)
  • Tab допълване, история на командите (↑ ↓), пайпове между команди
  • Генератор на светове с детерминистично случайно семе: един и същ номер дава един и същ свят
  • Звукови ефекти с Web Audio API, генерирани в реално време
  • Прогресът и постиженията се пазят в localStorage
  • Работи на телефон, с бутони за най-честите команди
  • CRT ефекти: включване на екрана, сканиращи линии, червена тревога при висока следа
  • Карта на мрежата, бележник и известия за постижения
index.html        разметката на страницата
favicon.svg       иконата в таба
css/style.css     всички стилове и анимации
js/levels.js      генераторът на светове, man страниците и постиженията
js/sound.js       звуковите ефекти (Web Audio)
js/game.js        двигателят: терминал, команди, точки, запазване

Скриптовете са обикновени (не ES модули), за да работи играта и при директно отваряне на index.html от диска. Нов вариант на ниво се добавя като нов елемент в съответния pick([...]) в js/levels.js, а нови пароли в пуловете WORDS, NICKS и PHRASES.

Пускане

Отвори index.html в браузър. За GitHub Pages: Settings → Pages → Deploy from branch → main / root.

Лиценз

MIT © 2026 Крум Крумов · github.com/Krumqnkata