107 lines
9.1 KiB
Markdown
107 lines
9.1 KiB
Markdown
# Невпізнаний — детектив на двох, розділ 3
|
||
|
||
Процедурний детектив у дусі Shadows of Doubt: тіло без імені, вбивці немає в списку підозрюваних,
|
||
і **кожен код сесії — цілком нова справа**. Кооператив для двох у локальній мережі.
|
||
|
||
## Запуск
|
||
|
||
```
|
||
npm install # один раз (єдина залежність — ws)
|
||
node server.js
|
||
```
|
||
|
||
Порт за замовчуванням — **3002**. Обидва гравці відкривають адресу з консолі, вводять
|
||
**однаковий код сесії** і різні ролі. Код сесії — це seed справи: той самий код — та сама
|
||
справа та її автозбереження (грати можна кілька вечорів), новий код — нова справа.
|
||
|
||
## Ролі
|
||
|
||
- **Польовий детектив** — ходить районом (WASD/стрілки, E — увійти), обшукує місця,
|
||
стукає у квартири, говорить з людьми. У приватне житло — лише з ключем або ордером.
|
||
- **Аналітик** — база мешканців (пошук за іменем з клавіатури — досить початку слова, регістр
|
||
не важить; фільтри за слідами: взуття, зріст, одяг, відбитки), мапа району
|
||
з напарником наживо, системи (оператор, банки, камери, криміналістика, лабораторія)
|
||
і **шифри**: Цезар, base64, PIN, злам md5-пароля за фактами з досьє.
|
||
|
||
## Два типи справ
|
||
|
||
- **Вбивство** (~75%): тіло без імені. Акт I — встановіть особу жертви. Акт II — ХТО, ЯК і ЧОМУ.
|
||
- **Викрадення** (~25%): людини нема, але вона ще жива. Особа відома із заяви про зникнення;
|
||
з'ясуйте, ХТО забрав людину, **ДЕ її тримають** і ЧОМУ. Фінал — рапорт на штурм:
|
||
правильне ім'я і місце = заручника рятують. Помилка = штурм іде не туди.
|
||
|
||
## Правила
|
||
|
||
- У справі-вбивстві: Акт I — встановіть особу жертви. Акт II — хто, як і чому.
|
||
- Мотивів у пулі — одинадцять: від ревнощів і боргів до спадку, старих гріхів, одержимого
|
||
переслідувача, кримінального бізнесу, викупу і серійного патерну з підписом на тілі.
|
||
- Обшуки знаходять і докази, і **дрібниці** — чек, запальничку, чужий записник. Що з цього
|
||
справа, а що мотлох — вирішуєте самі (викреслюйте і ховайте зайве на дошці).
|
||
- Кожен мешканець має **плітки про район** — здебільшого шум, але серед балачок трапляється правда.
|
||
- Сліди з місця злочину — це фільтри для бази мешканців. ДНК порівнюють лише зі звуженим колом.
|
||
- Ордер дає прокурор — і лише коли доказ прямо вказує на особу.
|
||
- Стережіться хибних слідів: вони правдоподібні, але спростовні.
|
||
- **Звинувачення одне.** Хто, чим, чому + закріплені 📌 докази; підписують обоє.
|
||
Помилка — звільнення і правда, яку ви не розкрили.
|
||
|
||
## Міні-ігри
|
||
|
||
- **Польовий**: вилучення доказів твердою рукою (зафіксуй пінцет у зоні; промахи розширюють
|
||
зону); **сейф із кодовим замком** — код не підбирається, а виводиться з деталі десь у
|
||
квартирі; пошук оголошення-акростиха в місті (див. 3301).
|
||
- **Аналітик**: **гель-електрофорез ДНК** — звузьте коло і зіставте смуги доріжок оком;
|
||
**дактилоскопія** — відбиток зі знаряддя знято під кутом, порівняйте візерунки;
|
||
**архів камер** — оберіть, КОЛИ дивитися плівку (час смерті є в матеріалах);
|
||
**тріангуляція** — три вежі, три дуги на мапі: клацніть будинок на їх перетині, щоб
|
||
звузити коло до тих, хто там буває. Помилковий вибір у лабораторії чесно каже «ні».
|
||
- **Інструменти дешифрування** (вкладка «Шифри»): Base64, перебір усіх зсувів Цезаря,
|
||
Hex→текст, Binary→текст. Інструменти механічні — думати, що і куди вставляти, доведеться самим.
|
||
|
||
**Шифри — в кожній справі й не лише на ноутбуці.** Крім сюжетних (щоденник під Цезарем,
|
||
акаунт у Base64, PIN телефона), кожен кейс має ще два: **пошту жертви під md5-паролем** і
|
||
**записку-шифр** (ротація Base64/Цезар/Hex/Binary). Це необов'язкові дрібниці — але саме
|
||
там ви набиваєте руку на кожному типі.
|
||
|
||
## Підказки — приховані
|
||
|
||
Усі підказки сховані за кнопкою **💡 Підказка** (і в шифрах, і в лабораторії, і в сейфі).
|
||
Промт описує лише артефакт і дає хеш/рядок — думайте самі, розкривайте підказку, лише
|
||
коли справді застрягли.
|
||
|
||
## Паролі (крек латиницею)
|
||
|
||
Паролі до пристроїв — завжди **латиницею**, у промті показано md5-хеш: беріть свій
|
||
`hashcat`/`john` і будь-який словник (напр. `rockyou.txt`). Алгоритм дає два стилі порівну:
|
||
|
||
- **Особистий** — виводиться з досьє: кличка собаки чи ім'я жертви, **транслітеровані в
|
||
латиницю** (у досьє вони кирилицею — це і є робота), інколи + рік народження. Швидше
|
||
здогадатися, ніж брутити (`Барон` → `baron`, `Лола`+рік → `lola1985`).
|
||
- **Випадковий** — жодного зв'язку з жертвою, реальний запис зі словника. Тут лише перебір:
|
||
`hashcat -m 0 <hash> rockyou.txt` знайде `cookie`, `ginger`, `letmein`…
|
||
|
||
Пароль флешки 3301 теж латиницею: акростих оголошення транслітеруєте й додаєте рік.
|
||
|
||
## CICADA 3301
|
||
|
||
У **кожній** справі захована чотиришарова головоломка в дусі Cicada 3301 (прості числа,
|
||
шари шифрів, «оголошення в місті» замість плакатів):
|
||
скринька з кодовим замком (код — на гравіюванні десь у квартирі) → картка з рядком
|
||
Base64-поверх-Цезаря → інструкція веде до оголошення в місті → перші літери рядків +
|
||
чотири цифри = пароль до флешки. Нагорода — особистий архів жертви: найкоротший шлях
|
||
до правди. Ланцюжок необов'язковий: справа розв'язується і без нього.
|
||
|
||
## Перевірка
|
||
|
||
```
|
||
npm test
|
||
```
|
||
|
||
Fair-play валідатор ганяє 300 випадкових справ: кожна розв'язна від стартових фактів,
|
||
кожен хибний слід спростовний, усі шифри чесні. Інтеграційний тест проходить справжню
|
||
справу двома ws-клієнтами до розкриття (і до звільнення).
|
||
|
||
## Генератор як бібліотека
|
||
|
||
`casegen/` не залежить від сервера й DOM: `generateCase(seed)` → мешканці, жертва, вбивця,
|
||
мотив, граф доказів, шифри; `solve(cs)` — симулятор досяжності; `checkAccusation(...)`.
|
||
Можна брати в будь-який інший проєкт.
|