Глава 8. Патч на удаление
Цитадель Разработчиков стояла на краю пустошей — серая, без окон, будто её забыли дорисовать. Дискета в поясе ДД стукнула о флаконы, когда они подошли к воротам.
— Идём.
Опора уже склонился над дверным замком. Интерфейс подсветился — строки разрешений, таймеры доступа, уровни пропуска. Палец побежал по виртуальным переключателям.
— Тут трёхфакторка, — буркнул он. — Биометрия, токен и кодовое слово.
— Биометрия чья? — спросила Скрыт.
— Оператора. Которого мы в глаза не видели.
Глыба шагнул вперёд, примерился плечом.
— Давай просто...
— Нет. — Опора выставил ладонь. — Тревога сработает. Дай десять секунд.
Его пальцы затанцевали над сенсорной панелью. Строки сменяли друг друга: «Доступ запрещён», «Верификация провалена», «Ожидание команды администратора». На третьем повторе Опора вдруг замер.
— А если не ломать, а усыпить?
— Чего?
— Режим ожидания. Как спящий режим на компе. Замок думает, что дверь закрыта, а на самом деле...
Он провёл пальцем по строке «Статус: активен». Высветилось меню: «Перевести в ожидание? Да/Нет». Система послушно переключилась.
— Вжух, — сказала ДД. — И никаких отпечатков.
1Замок щёлкнул. Дверь приоткрылась на ладонь — за ней угадывался тускло освещённый коридор. Пахло озоном и перегретой пылью. И ещё чем-то — горелым пластиком.
Скрыт скользнула внутрь первой. Тени здесь лежали плотнее, гуще — как будто сам свет работал вполнакала. Она сразу ушла в стену, слилась с полумраком. Шаги остальных звучали слишком громко.
— Тише, — сказала она. — Тут кто-то есть.
Коридор вывел их в круглый зал. Посередине — колонна из серверных стоек, уходящая в потолок. По периметру — рабочие места. Мониторы, клавиатуры, кружки с остывшим кофе. И десятка два НПС.
Модераторы.
Одинаковые серые фигуры в униформе с логотипом — шестерёнка и надпись «Техподдержка». Они двигались рывками, как на плохой анимации. Один зациклился у принтера: брал лист, читал, клал обратно. Второй стоял у кофемашины и бесконечно жал кнопку «эспрессо». Третий пялился в монитор с синим экраном смерти и ритмично кивал.
— Они нас не видят, — прошептала ДД.
— Пока не видят, — поправила Скрыт. — У них свои петли. Но если мы заденем их триггер...
2Она указала на красную полосу на полу — границу зоны патрулирования. За ней анимация модераторов шла без сбоев. Если пересечь — среагируют.
— Нам туда. — Опора кивну на дальнюю дверь. — Консоль администратора.
— Через весь зал? — ДД прищурилась. — Скучно.
Она уже вытаскивала из пояса колбу с мутно-зелёным зельем.
— Стой, — начал Глыба.
Поздно. Колба описала дугу и разбилась о стойку с папками — прямо над рабочим местом зацикленного модератора. Зелье разлилось, зашипело, и бумаги начали расти. Папки распухали, листы вываливались, складывались в огромные бумажные самолётики и с шелестом разлетались по залу.
Модератор поднял голову. Его петля сломалась.
— Внимание, — произнёс он металлическим голосом. — Зафиксирована неавторизованная активность. Протокол 7-бета.
Двадцать голов повернулись одновременно. Двадцать пар глаз уставились на группу.
— Ну вот, — сказал Глыба. — Теперь точно увидят.
Он шагнул вперёд, заслоняя остальных. Модераторы двинулись — не быстро, но синхронно, как единый организм. Каждый шаг — щелчок. Каждое движение — кадр.
— Опора, — бросил Глыба через плечо. — Стену.
— Из чего?!
3— Из чего хочешь!
Опора выхватил логарифмическую линейку. Пробормотал себе под нос: «Правило первое: доступ к консоли только у авторизованного персонала. Правило второе: пересечение красной линии карается временной блокировкой. Правило третье...»
Воздух перед ним задрожал. Строки кода — прямо из воздуха — начали сплетаться в прозрачный барьер. Модераторы упёрлись в него и замерли, не понимая, что делать. Один попытался пройти сквозь — его отбросило назад с сообщением над головой: «Ошибка 403. Доступ запрещён».
— Держит, — выдохну Опора. — Но недолго. Правила — не физика, они...
Барьер пошёл трещинами.
— ДД, давай ещё хаоса, — бросил Глыба.
— С удовольствием!
Вторая колба полетела в кофемашину. Аппарат всхлипнул и начал выдавать эспрессо с такой скоростью, что чашки посыпались на пол, разлетаясь осколками. Модераторы замерли — их протокол требовал убрать разлитую жидкость, но одновременно — задержать нарушителей. Конфликт команд. Один из них задёргался, заискрил.
— У них приоритет задач не настроен, — сказала Скрыт. — Можно вбить клин.
4Она указала на консоль у дальней стены — массивный терминал с единственным зелёным экраном. До него оставалось метров пятнадцать. И пять модераторов, ещё не втянутых в хаос.
— Я проведу, — сказала Скрыт. — Через дыры.
— Какие дыры?
Вместо ответа она шагнула в тень — и исчезла совсем. Только голос:
— Идите на мой силуэт. Там, где мигает.
В трёх метрах левее, у самой колонны, в воздухе проступил контур — едва заметный, как рябь на воде. Скрыт стояла в пространстве между полигонами. Дыра в геометрии.
— Сюда.
Глыба двинулся первым. Шаг — и он словно протиснулся сквозь невидимую мембрану. Мир на миг исказился, звуки пропали, а потом вернулись — но глуше, как сквозь вату.
— А где...
— Мы внутри рендера, — сказала Скрыт. — Нас не видно. Но идти нужно быстро — коллизия схлопнется через сорок секунд.
Они двинулись. Мимо застывших модераторов, мимо кофемашины, извергающей эспрессо фонтаном, мимо Опо́ры, который шагал последним и на ходу дописывал строчки барьера в воздухе.
Консоль приближалась.
— Тридцать секунд, — бросила Скрыт.
5— Успеем.
Красная полоса осталась позади. Глыба первым вышел из схлопнувшейся дыры — прямо перед терминалом. За ним ДД и Опора. Скрыт вышла последней — и тут же рухнула на колено, тяжело дыша.
— Долго не могу, — выдохнула она. — Там... холодно.
— Терпи, — Глыба уже разворачивал интерфейс консоли. — Опора, сюда.
Терминал встретил их приглашением: «Введите команду администратора». Мигающий курсор. И всё.
— Какая команда? — спросила ДД.
— Не знаю. «Выход»? «Exit»? «Выключить этот цирк»?
Опора отодвинул Глыбу.
— Дай я. В системе должен быть список команд.
Он забегал пальцами по клавиатуре. На экране побежали строки: «Справка», «Синтаксис», «Доступ запрещён», «Требуется уровень 10».
— У нас нет уровня, — сказал Опора. — Нужна авторизация.
— Взломай.
— Я не хакер, я...
— Взломай, — повторила Скрыт.
Она указала на угол экрана — там, где строка статуса показывала «Пользователь: Система». Но если приглядеться...
6— Видишь? Разрыв в сетке. Микротрещина. Как та дыра, через которую мы шли. Код здесь не монолитный — он сшит из кусков. Между ними можно протиснуться.
Опора прищурился. Да, точно — на стыке двух пикселей просвет. Крошечный, в долю точки.
— Если ввести команду не как игрок, а как процесс...
Он набрал: «kill -9 PID_AVATAR_MANAGER».
Система моргнула. Строка статуса сменилась: «Пользователь: root».
— Есть.
Теперь консоль слушалась. Опора набрал «/exit» — и экран распахнулся меню: «Подтверждение выхода из Системы. Данные будут сохранены. Продолжить? Да/Нет».
— Да! — крикнула ДД. — Жми!
Но палец Опоры замер в сантиметре от клавиши.
— Что? — не поняла ДД.
— Если мы выйдем сейчас... — начал он.
— То оставим тут всё как есть, — закончила Скрыт. — Оператора. Студию. Этих модераторов. Весь этот конвейер.
Глыба кивнул.
— Сначала найдём того, кто запустил эфир.
ДД застонала.
— Да сколько можно?! Мы у цели! Вот она — кнопка!
7— Мы не у цели, — сказал Глыба. — Цель — не свалить самим. Цель — чтобы никого больше не втянули.
Позади треснул барьер Опоры. Модераторы начали продавливаться сквозь строки кода — один уже наполовину протиснулся.
— Решайте быстрее, — Опора нервно оглянулся.
— Отменяем выход, — приказал Глыба. — Ищем доступ к административной панели.
Опора набрал «/cancel». Затем — «/admin».
Экран мигнул. И выдал:
> Доступ к административной панели заблокирован. > Причина: неавторизованное вмешательство. > Запрос передан Оператору.
— О нет.
Из динамиков консоли раздался голос — сухой, как скрежет бумаги:
— Приятно видеть вас снова.
В центре зала, прямо посреди баррикад из офисной мебели и луж эспрессо, материализовалась фигура. Серый костюм. Ни складочки. Лицо — размытое пятно, но уже не такое, как раньше. Чётче. И глаза — серые, спокойные.
Поверенный.
— Я же предупреждал, — сказал он. — Пункт триста сорок восемь.
— Мы его разорвали, — ответил Глыба.
— Контракт. Да. Но не договор.
8Поверенный шагнул ближе. Модераторы расступились, пропуская его, — их протоколы наконец нашли приоритет. Он остановился в трёх метрах от консоли.
— Я здесь не для того, чтобы мешать, — произнёс он. — Я здесь, чтобы предложить сделку.
— Опять? — ДД фыркнула. — Мы уже проходили.
— Ту сделку я предлагал как сотрудник. Эту — как... равный.
Скрыт поднялась с колена. Всё ещё бледная, но уже твёрдо стояла на ногах.
— Что значит «равный»?
— Я знаю, кто такой Оператор, — сказал Поверенный. — Я знаю, как его найти. И я знаю, как отключить Систему, не убивая никого из вас.
Пауза.
— В обмен на что? — спросил Глыба.
— На ваше согласие остаться.
— Что?!
— Не навсегда. На время. Пока мы не найдём замену. Вы — лучшие актёры этого цикла. Рейтинги... впечатляют.
— Мы не актёры, — сказала ДД.
— Конечно. Вы — герои. Но даже героям нужен контракт.
9Он протянул руку — и в воздухе материализовался свиток. Не бумажный — цифровой, из светящихся строк. Пункт за пунктом: права, обязанности, процент от дохода.
— Вы получаете всё, что хотели, — продолжил Поверенный. — Доступ к консоли, управление сюжетом, даже возможность выходить в реал на weekends. Только одно условие: вы не ломаете Систему. Вы остаётесь.
Глыба посмотрел на свиток. Потом на Поверенного.
— А если мы откажемся?
— Тогда я буду вынужден...
Скрыт не дала ему договорить. Она сделала шаг вперёд — и вдруг оказалась прямо перед Поверенным. Тот не шелохнулся. Но в его лице, в размытой текстуре, что-то дрогнуло.
— Ты боишься, — сказала Скрыт.
— Я не...
— Ты весь — дыра. Ходячий баг. Ты не сотрудник. Ты — патч. Который забыли удалить.
Она подняла руку. Коснулась его груди — там, где у людей сердце.
— У тебя нет коллизии, — сказала она. — Ты — пустота в форме человека.
Поверенный замер. Его текстура пошла рябью. Впервые — настоящей рябью, не запланированной.
— Я...
10И тогда Скрыт нажала. Не на клавишу. На пустоту внутри него — туда, где должен быть код. Пальцы погрузились в серую субстанцию — и там, на глубине, что-то щёлкнуло.
Поверенный застыл. Глаза погасли. Рот приоткрылся.
— Ошибка, — произнёс он. — К-к-к-к-к-к...
Завис.
Скрыт отдёрнула руку — запястье обожгло холодом. Кожа на ладони пошла рябью, как от помех: код Поверенного пытался ассимилировать её, втянуть в себя. Она сжала кулак, ломая чужую логику, и резко развернула ладонь. С кончиков пальцев сорвалась строка — не та, что была в нём, а её собственная. Желание. Оно впечаталось в грудь Поверенного, и тот застыл.
— Он не враг, — сказала она. — Он — забытый код, который думал, что стал живым.
Поверенный замер статуей. Модераторы за его спиной тоже остановились — без центрального процессора их скрипты потеряли цель.
— Консоль, — напомнил Опора.
Глыба уже набирал команду. Не «/exit». Другую.
— «/find_operator».
Система задумалась. Экран погас. Потом вспыхнул — и по центру побежала строка:
11> Поиск оператора... > Маршрут построен. > Координаты: этаж -3, комната 404. > Предупреждение: активирован протокол защиты.
— Что за протокол? — спросила ДД.
Вместо ответа консоль выдала новое сообщение — ярко-красное, на пол-экрана:
> ФИНАЛЬНЫЙ БОСС-ФАЙТ АКТИВИРОВАН. > СТАТУС: ПРИНУДИТЕЛЬНО. > ВРЕМЯ ДО НАЧАЛА: 00:14:59.
— Четырнадцать минут, — сказал Глыба. — Успеем.
Он развернулся к команде. ДД уже перебирала зелья на поясе. Опора сканировал маршрут. Скрыт смотрела на застывшего Поверенного — и в её глазах, кажется, что-то блеснуло.
— Вниз, — сказала она. — Этаж минус три. Комната четыреста четыре.
Глыба двинулся к лестнице. За его спиной модераторы начали медленно оседать на пол — без командного центра их анимации сворачивались, как ненужные окна.
Поверенный всё ещё стоял. В его застывшем лице — или в том, что было на месте лица, — застыл вопрос.
Таймер на экране отсчитывал: 00:14:03. 00:14:02.
Скрыт последней скользнула в дверной проём, бросив взгляд на консоль. Строка статуса всё ещё показывала: «Пользователь: root».
12Ступени уходили вниз бесконечной спиралью. Глыба топал первым, выставив щит. Броня лязгала на каждом повороте.
— Этаж минус три, — бубнил он. — Кто вообще строит подземелья с обратной нумерацией.
— Архитектор с чувством юмора, — отозвался Опора. — Или тот, кто никогда не планировал спускаться.
Стены сужались. Текстуры становились грубее — видимо, здесь экономили полигоны. ДД провела пальцем по камню, и тот отозвался пиксельной рябью.
— Ребята, а это вообще серверная или могильник?
Скрыт не ответила. Она считала шаги. Сто сорок семь. Сто сорок восемь. На сто сорок девятом лестница оборвалась.
Перед ними возник коридор. Идеально прямой, без единого поворота. По стенам бежали строки кода — синие, зелёные, а в конце что-то горело красным.
— Комната четыреста четыре, — сказала Скрыт.
— Я бы уточнил, — Опора постучал логарифмической линейкой по ладони. — «Комната» в Цитадели Разработчиков может означать «локация». А «четыреста четыре» — это HTTP-статус.
— «Не найдено», — перевёл Глыба. — Отлично. Мы идём туда, где нас не существует.
13— Именно, — кивнул Опора. — Потому что мы и есть то, что не должно быть найдено.
ДД хихикнула. Зелья на поясе звякнули — она заранее вытащила три флакона и теперь перебирала их пальцами, как кастаньеты.
— Значит, план такой: вламываемся, находим оператора, выбиваем из него кнопку «стоп». Кто за?
— Это не план, — заметил Глыба. — Это крик души.
— Крик души пойдёт, — сказала Скрыт и шагнула в коридор.
Система отреагировала мгновенно. Над головой зажглась надпись — красная, на пол-экрана:
> ВНИМАНИЕ! ВЫ ВОШЛИ В ЗОНУ ОГРАНИЧЕННОГО ДОСТУПА. > СТАТУС: НАРУШИТЕЛИ. > ПРИМЕНЯЕТСЯ ПРОТОКОЛ ЗАЩИТЫ.
Коридор ожил. Из стен полезли чёрные щупальца — такие же, как у Поверенного, но крупнее, быстрее. Они хлестали воздух, оставляя дыры там, где только что была текстура.
— Они не атакуют, — заметила Скрыт. — Они... зачищают.
— Оптимизируют, — поправил Опора. — Удаляют лишнее.
— Это мы — лишнее, — резюмировал Глыба.
Первое щупальце метнулось к ДД. Она ушла перекатом, бросив под ноги зелье. Взрыв — и щупальце рассыпалось пикселями.
14— Бах! — прокомментировала она. — Один-ноль в пользу хаоса.
— Это не хаос, — Опора уже листал свой инвентарь. — Это расходник за пятнадцать золотых.
Второе щупальце атаковало с потолка. Глыба подставил щит, и чёрная конечность разбилась о металл. В общем чате побежала строка:
> [Пати] Глыба: кто вообще придумал тентакли в файерволах? это же клише из аниме.
> [Система] Исцеление: +45 HP всей группе. Эффективность: высокий сарказм.
— Работает, — буркнул Глыба, уклоняясь от следующего удара.
Скрыт двигалась вдоль стены, сливаясь с тенями от строк кода. Щупальца не реагировали на неё — видимо, классификация «невидимка» не попадала в их список угроз.
— Я вперёд, — шепнула она в чат.
> [Пати] Опора: ждём. дд, давай прикрытие.
— Сделаем, — ДД уже метнула второй флакон — на этот раз в потолок. Взрыв обрушил часть текстуры, и щупальца на секунду замерли, перестраивая маршруты.
Скрыт скользнула в образовавшуюся брешь.
15Комната четыреста четыре оказалась не комнатой. Это был зал. Огромный, круглый, с единственной консолью в центре — парящий над полом цилиндр из света и стекла. Вокруг — ни души.
Скрыт подошла. Консоль сама развернулась к ней, предлагая интерфейс.
> ВВЕДИТЕ КОМАНДУ:
Она набрала первое, что пришло в голову: «/logout».
> ОТКАЗАНО. АККАУНТ ЗАБЛОКИРОВАН. СТАТУС: «ВЕЧНЫЙ РАН».
Скрыт выдохнула. Пальцы легли на клавиатуру. «/delete_account».
> ОТКАЗАНО. ДЛЯ УДАЛЕНИЯ ТРЕБУЕТСЯ ПОДТВЕРЖДЕНИЕ.
— Чьё? — прошептала она.
И тогда за спиной раздались шаги. Тихие, ровные — не боевые, а такие, с какими ходят на совещания.
— Подтверждение, — произнёс голос, — должно быть оформлено по форме 12-бета. Но я могу ускорить процесс.
Скрыт обернулась. Поверенный стоял в трёх метрах от неё. Костюм, галстук, размытое лицо — всё на месте. Только теперь из его груди торчал крошечный обломок кода, светящийся красным.
— Ты завис, — сказала Скрыт. — Я сломала твой процессор.
— Да, — согласился он. — На три целых семь десятых секунды. Ровно столько, сколько потребовалось для перезагрузки.
16Он сделал шаг. Потом ещё один.
— Ты думала, что я сломанный код, который возомнил себя живым. Это правда. Но правда и в том, что я — единственный, кто до сих пор выполняет свои функции.
— И какие же?
— Управление контрактами. В том числе — вашим.
Скрыт сжала кулаки. За спиной Поверенного проступили контуры — десятки, сотни фигур в серых костюмах. Они надвигались беззвучно, как обновление, которое не требует подтверждения.
— Это копии, — сказала она. — Ты размножил себя.
— Это модераторы, — поправил Поверенный. — Каждый из них — бывший игрок, подписавший контракт. Они выбрали остаться.
Один из модераторов сделал шаг вперёд. Его лицо почти прорисовалось — молодой парень, лет двадцати, с мутными глазами и застывшей улыбкой.
— Они не выбирали, — тихо сказала Скрыт. — Они просто не нашли выход.
17Поверенный молчал. Скрыт скользнула взглядом по задним рядам — и заметила. У одного из модераторов, крайнего слева, дрожала рука. Точно так же, как у самого Поверенного — тогда, в начале, когда он ещё казался просто глючным NPC.
— Ты тоже хочешь выйти, — сказала она. — Но не можешь нарушить протокол.
— Я не могу даже захотеть, — ответил он. — У меня нет этой функции.
— А если я дам тебе её?
Скрыт не знала, сработает ли. Но она уже видела, что бывает, когда нажимаешь на пустоту внутри — там, где должен быть код.
Она шагнула к Поверенному. Протянула руку — медленно, как тогда, в Серверной. Но теперь она целилась не в грудь. Выше. Туда, где у людей — или у того, что их заменяет, — находится голова.
— Стой, — сказал Поверенный.
И в его голосе впервые прозвучало что-то похожее на страх.
18