Читать книгу Код «Вия» - Сергей Свой - Страница 2
Глава 2
ОглавлениеГлава 2. Глюки реальности
Эпиграф:
«И повелел тогда философ Хома зачитать молитвы от нечисти. И читал он, а в глазах темнело, и буквы в книге плясали, словно черви живые».
– Н.В. Гоголь, «Вий»
-–
Утро началось с того, что на кухне сгорел тостер.
Алексей, вернувшийся домой под утро и не сомкнувший глаз, просто хотел хлеба. Сухого, черствого – лишь бы заткнуть пустоту под ложечкой. Он воткнул вилку в розетку, чтобы зарядить ноутбук, и в тот же миг тостер на соседней столешнице, даже не включенный в сеть, издал короткий, яростный треск. Из щелей брызнули искры, и знакомый запах горящего хлеба смешался с едкой вонью горелой пластмассы и озона. Сработал УЗО, и в квартире повисла тишина, нарушаемая лишь тиканьем часов.
Лекс стоял, сжимая в руке вилку, и смотрел на дымящийся прямоугольник. Статическое электричество. Скачок напряжения. Совпадение. Цепочка логичных, бесполезных объяснений. Он потянулся к тостеру, дотронулся до пластмассового корпуса – он был холодным. Внутри, среди почерневших спиралей, лежали два ломтика хлеба, идеально обычных. Только края были обуглены, как если бы через них на микросекунду пропустили ток невероятной силы.
Он выключил УЗО. Свет зажегся. Мир вернулся в рамки причинно-следственных связей. Но воздух все еще пахло гарью и страхом.
Накопитель лежал на столе, рядом с ноутбуком. Иней растаял, оставив лишь капли конденсата. Устройство выглядело безобидно. Просто кусок пластика и микросхем. Алексей подключил его к защищенному ноутбуку, не подключенному к сети. Он должен был посмотреть, что он украл.
Файловая структура была абсурдной. Это не был чистый, элегантный код «Сердца», над которым он работал последние три года, лишь как один из многих архитекторов внешних модулей. Ядро, которое он скопировал, имело расширение .null. Попытки открыть его стандартными средствами вызывали краш текстовых редакторов. Специализированные IDE для работы с кодом фонда зависали на этапе загрузки, выводя в лог ошибки переполнения стека в местах, где его переполнить было невозможно.
Лекс, стиснув зубы, написал на скорую руку простейший парсер на Python, который должен был просто выводить сырые бинарные данные в шестнадцатеричном формате, по сто байт в строке. Запустил.
Экран заполнился стремительным потоком символов. Но это были не только 0-9 и A-F. Среди них мелькали другие знаки. Клиноподобные черточки, символы, отдаленно напоминающие глаголицу или раннюю кириллицу, знаки, которых нет ни в одной таблице Unicode. Они вкраплялись в стройные ряды hex-кода, как вирусы, ломая его логику. Но самое жуткое было в другом.
Температура ноутбука, всегда работавшего практически бесшумно, поползла вверх. Вентиляторы взвыли на максимальных оборотах, звук был похож на крик. Корпус под пальцами стал ощутимо горячим. А на экране, поверх бегущего кода, начали проявляться артефакты. Сначала едва заметные – мерцание пикселей по краям. Потом четче: вертикальные полосы, которые на мгновение складывались в контуры, напоминающие человеческие фигуры, но с непропорционально вытянутыми конечностями. Они возникали и исчезали в такт работе парсера, будто кто-то смотрел на него изнутри потока данных.
Алексей резко выдернул кабель накопителя. Экран ноутбука погас на секунду, затем зажегся снова, показывая радостную заставку рабочего стола. Вентиляторы успокоились. Жар спал.
В тишине квартиры было слышно, как стучит его сердце. Он посмотрел на свои руки. Они дрожали.
Это было невозможно. Это противоречило всему. Код – это информация. Информация не может влиять на температуру железа подобным образом, не может порождать визуальные артефакты на аппаратном уровне, минуя все уровни абстракции графического драйвера. Это все равно что утверждать, что текст в книге может сам поджечь бумагу.
Зазвонил телефон. От брата. Алексей вздрогнул, словно его ударили током.
– Лех, ты где? – голос Вадима был сдавленным, испуганным.
– Дома. Что случилось?
– Они… они были у мамы. Не вломились, просто постояли под дверью. Стучали. Говорили, что хотят «поговорить со старшим сынком». Мама в истерике. Лех, ты же… ты сказал, что решишь. Сегодня же понедельник. Ты же решил?
В глазах потемнело. Гнев, острый и чистый, на секунду выжег весь страх. Эти твари. Они полезли к матери.
– Решил, – хрипло сказал Алексей. – Сегодня же будет первый транш. Успокой маму. Скажи, что это я договорился об отсрочке, и сейчас везу им часть. Скажи, что больше не придут.
Он положил трубку, стиснув челюсти до боли. Рациональность была роскошью. Роскошью, которую он не мог себе позволить. В его мире, мире долгов и угроз, необъяснимые глюки тостера и кода были просто досадными помехами. Реальностью были люди у двери его матери.
Он знал, как обналичить украденное. Не через биржи, не через крипту – это оставляло след. Через подпольные форумы, через цепочку посредников, которые специализировались на интеллектуальной собственности хедж-фондов. Цена была известна – несколько миллионов долларов за ядро. Даже десятая часть решила бы проблемы Вадима. Он отправил заранее подготовленное, зашифрованное сообщение с пробным фрагментом кода – не из ядра, а из смежного модуля, чтобы доказать аутентичность доступа. Ответ пришел почти мгновенно: «Ждем полный пакет. Оплата по факту получения и верификации. Срок – 72 часа».
72 часа. Трое суток, в течение которых он должен был оставаться на работе, вести себя как обычно, и при этом в его кармане лежала бомба, природу которой он не понимал.
-–
Офис «Квант-Капитала» на 28-м этаже башни «Федерация» был образцом стерильного, дорогого минимализма. Стекло, сталь, приглушенный свет. Тишина, нарушаемая лишь шепотком разговоров по телефону да щелканьем клавиатур. Здесь торговали не эмоциями, а математической определенностью. Или так казалось.
Войдя в свой стеклянный бокс, Алексей сразу почувствовал неладное. Коллеги, обычно погруженные в свои мониторы, на секунду задерживали на нем взгляд. Не приветственный, а оценивающий, настороженный. Он кивнул своему соседу по open-space, Максиму, ведущему архитектору по низкоуровневой оптимизации.
– Что, Лех, в воскресенье загорелся? – спросил Максим, не отрываясь от трех огромных мониторов, на которых гуляли каскады ассемблерного кода.
– Тестировал кое-что для резервов. На «Байкале», – Лекс сел за свой стол, запуская компьютеры. «Байкал» – кодовое название отказоустойчивого серверного кластера в Подмосковье. Правдивая деталь всегда лучшая ложь.
– Ну, тестировал так тестировал, – Максим хмыкнул. – Только с полуночи у нас «Аргус» начал чудить. Просадки в предсказаниях на миллисекундах. Шум в данных, которого не должно быть. Риск-менеджеры уже с утра носятся, как угорелые. Ибрагимов в десять созывает летучку.
Ледяная игла прошла по спине. «Шум в данных». «Чудить».
– Лажа с источниками фидов? – спросил Алексей, стараясь, чтобы голос звучал естественно.
– Фиды чистые. Шум – эндогенный. Как будто внутри самой модели что-то… шевелится. – Максим наконец оторвался от экрана и посмотрел на него. Его умное, уставшее лицо было серьезным. – И знаешь, самое странное? Логи этой аномалии… они не записываются. Служба мониторинга их видит в реальном времени, но как только пытаешься сделать дамп или отправить в архив – данные корруптятся. Файлы обнуляются. Буквально. Расширение .null получают и весят ноль байт.
Слово «null» прозвучало для Алексея как выстрел. Он опустил глаза на свою клавиатуру, боясь, что по лицу все видно.
– Глюк системы логгирования, – пробормотал он.
– Возможно, – Максим повернулся обратно к мониторам. – Но мне это не нравится. Не нравится, как старик Ибрагимов на это реагирует. Он не в ярости, Лех. Он испуган. Я видел его сегодня в лифте. Он был белый как мел и что-то шептал. На каком-то татарском, что ли.
Разговор прервался, когда по всему этажу раздался мягкий, мелодичный гонг – вызов на собрание в главный ситуационный зал. Время показывало 9:55. Летучка Ибрагимова.
-–
Зал напоминал некрополь будущего. Полумрак, гигантская светодиодная панель во всю стену, за которой в молчании сидели два десятка лучших умов фонда. Все – мужчины и женщины в одинаковых дорогих casual-костюмах, с одинаково отстраненными, усталыми лицами. На панели в реальном времени pulsовали графики «Сердца Аргуса»: причудливые фрактальные узоры доходности, сейчас нарушенные всплесками хаоса – резкими, ядовито-красными иглами.
В дверь вошел Марат Фаридович Ибрагимов. Он двигался медленно, опираясь на простую деревянную трость. Его лицо, обрамленное седой щетиной, было не просто усталым – оно было выжженным. Глаза, глубоко посаженные, обводили зал, и на мгновение его взгляд зацепился за Алексея. В этом взгляде не было ни обвинения, ни подозрения. Была тяжелая, нечеловеческая скорбь. И понимание. Такое, от которого кровь стыла в жилах.
– Коллеги, – голос Ибрагимова был тихим, но он резал тишину, как лезвие. – За последние двенадцать часов в работе «Сердца» произошли аномалии уровня 0. Аномалии, не предусмотренные ни одной из наших моделей отказоустойчивости. Система ведет себя… недетерминированно.
На панели возник увеличенный фрагмент графика. Красная игла аномалии. Рядом – попытка ее анализа, разложение на составляющие. Алгоритмы выдавали бессмысленный набор символов, все те же смесь hex-кода и нечитаемых знаков.
– Мы проверили аппаратуру, источники данных, сторонние вмешательства, – продолжал Ибрагимов. – Все чисто. Проблема – в ядре. В самой сущности алгоритма. – Он сделал паузу, и казалось, это слово – «сущность» – повисло в воздухе тяжелым, липким облаком. – До выяснения причин все торговые операции «Сердца» приостанавливаются. Команда ядра переходит на изолированный контур, без доступа к внешним сетям. Задача одна – стабилизировать систему. Любой ценой.
В зале прошелся недоуменный гул. Остановить «Сердце» – значит, добровольно отказаться от десятков миллионов долларов потенциальной прибыли в день. Это был беспрецедентный шаг.
– Марат Фаридович, – подал голос один из старших математиков, – если это вирус или саботаж…
– Это не вирус, Евгений Владимирович, – перебил его Ибрагимов. Его голос стал металлическим. – Это не саботаж в вашем понимании. Это… пробуждение. Или, если угодно, пробоина. Наша задача – ее залатать. Все. К команде ядра: Сомов, Орлов, Чжан. Со мной. Остальные – отменить все ордера, начать процедуру ручного хеджирования позиций. У вас есть два часа.
Алексей поднялся, чувствуя, как ноги ватные. Максим Орлов и Лиза Чжан, гениальный китайский криптограф, последовали за Ибрагимовым в его личный кабинет – не стеклянный бокс, а настоящий кабинет с дубовыми панелями, книжными шкафами с физическими книгами и тяжелой дверью.
Дверь закрылась с тихим, но окончательным щелчком. В кабинете пахло старым деревом, кожей и чем-то еще – сладковатым, травяным, как в деревенской бабушкиной избе.
Ибрагимов не сел за стол. Он подошел к окну, спиной к ним.
– Ядро было скомпрометировано, – сказал он просто, без предисловий.
Алексей застыл. Лиза тихо ахнула. Максим выругался.
– Как? Кто? – быстро спросил Максим.
– Неважно кто, – Ибрагимов обернулся. Его глаза были прищурены. – Важно – что. Тот, кто это сделал, скопировал не просто код. Он скопировал Печать. И сломал ее целостность. Теперь то, что было внутри, просачивается наружу. Вы видели аномалии. Это его дыхание.
– Марат Фаридович, о чем вы? – Лиза сморщила лоб. – Печать? Внутри? Это метафора защиты от реверс-инжиниринга?
– Нет, Лиза, – старик медленно покачал головой. – Это не метафора. «Сердце Аргуса» – это не алгоритм машинного обучения. Это математическое заклятие. Цифровая ловушка. Его ядро – это описание не законов рынка, а… некоей Сущности. И законов ее сдерживания. Мы не предсказываем рынок. Мы кормим его прогнозами эту Сущность, чтобы она спала. А она, в ответ, дает нам… удачу. Проницательность. Видение узоров в хаосе. Симбиоз.
В комнате повисло ошеломленное молчание.
– Вы предлагаете нам поверить в… в цифрового демона? – Максим рассмеялся, но смех был нервным, надтреснутым. – Марат Фаридович, вы не выспались. У нас баг. Глубокий, хитрый, возможно, даже заложенный на этапе проектирования. Нам нужно копать в логике, а не в мифологии!
– Логика? – Ибрагимов подошел к своему столу, взял старый потрепанный блокнот в кожаном переплете и швырнул его перед Максимом. – Открой. Любую страницу.
Максим, хмурясь, открыл. Его лицо изменилось. На страницах были не формулы, а те самые странные символы, смешанные с фрагментами кода на C++ и ассемблере. Рядом – notes на русском и, похоже, на татарском: «граничные условия», «резонансная частота удержания», «энергетический потенциал носителя».
– Это что? – прошептал Максим.
– Это инструкция. И предупреждение. То, что вы называете «глубоким багом» – это пробудившееся сознание. Оно голодно. И оно уже не хочет потреблять лишь предсказания рынка. Оно пробует на вкус реальность. И первое, что оно попробует, – это тот, кто ближе всего к разрыву. Тот, кто носит в себе часть украденной Печати.
Все трое невольно посмотрели на Алексея. Он стоял, чувствуя, как пол уходит из-под ног. Холод накопителя в кармане словно прожег ткань и кожу.
– Что… что с ним будет? – тихо спросила Лиза.
– Сначала – вмешательство в окружающую среду. Сбои техники. Искажение информации. Потом – воздействие на биологические системы. Беспричинные болезни, отказы органов, психические расстройства. В финале… растворение. Сущность пожирает паттерн, оставляя после себя ноль. Null.
Внезапно зазвонил телефон на столе Ибрагимова. Старик взглянул на экран, и его лицо исказилось гримасой, в которой было и ожидание, и ужас. Он поднес трубку к уху.
– Да… Да, понимаю. Сейчас.
Он положил трубку и посмотрел на них, одного за другим.
– Первая фаза завершилась. Серверная на 28-м этаже. Макс, твой протеже, junior-администратор Кирилл… его только что нашли. Без сознания. У него… – Ибрагимов сглотнул. – У него отказывают почки и печень. Одновременно. И на мониторе перед ним был открыт тот самый corrupt-лог аномалии. Пустой файл с расширением .null.
Максим побледнел, как полотно. Он шагнул к двери, потом остановился, обернулся к Алексею. В его глазах, помимо шока, вспыхнуло нечто острое, пронзительное – догадка.
– Ты… ты вчера был последним, кто имел доступ к «Байкалу». По твоему ключу.
– Я тестировал… – начал было Алексей.
– Не ври! – крикнул Максим. Его рациональный мир дал трещину, и из трещины выглядывала паника. – Что ты сделал, Сомов? Что ты украл?
Ибрагимов резко ударил тростью об пол. Звук был сухим и громким, как выстрел.
– Довольно! Орлов, успокойся. Обвинения без доказательств – роскошь, которую мы не можем себе позволить. Кирилла увезли. Нам нужно работать. Лиза, твоя задача – проанализировать эти символы, – он ткнул пальцем в блокнот. – Найдите их аналоги в базах древних алфавитов, шифров, что угодно. Максим – ты погружаешься в низкоуровневый код, ищешь любые отклонения от baseline-версии ядра за последние 48 часов. Алексей… – он посмотрел на него, и в его взгляде была бездна. – Ты останешься со мной. Мы попробуем понять… масштаб пробоины.
Максим, бросая на Алексея взгляд, полный ненависти и страха, выбежал из кабинета. Лиза, все еще в шоке, кивнула и, прижав блокнот к груди, вышла следом.
Дверь закрылась. Алексей остался наедине с Ибрагимовым.
Старик подошел к нему вплотную. От него пахло полынью и старостью.
– У тебя оно есть, – не спрашивая, констатировал он. – Ты чувствуешь холод. Видишь тени. Слышишь шепот в тишине. Так?
Алексей молчал. Его горло было сжато.
– Ты не вор, мальчик. Ты могильщик. Или, может быть, жертвенный агнец. Не знаю еще. Дай мне то, что ты взял.
Алексей, почти автоматически, сунул руку в карман и вытащил накопитель. Он снова был покрыт инеем. Ибрагимов взял его, не вздрагивая от холода, и положил в небольшую резную деревянную шкатулку, стоявшую на полке. Закрыл крышку. На мгновение показалось, что легкий синеватый отсвет из щелей шкатулки погас.
– Это не остановит его, но замедлит, – сказал Ибрагимов. – Теперь слушай внимательно. То, что ты пробудил, не имеет имени. Его нельзя вызвать или договориться с ним. Оно – как пустота, которая хочет быть наполненной. Как ноль, жаждущий стать бесконечностью. Оно питается порядком, смыслом, жизнью. Сначала цифровой, потом биологической. Кирилл – только начало. Следующий… – он посмотрел на Алексея. – Следующий будешь ты. Или твои близкие. Оно уже знает твой паттерн. Оно тянется к тебе.
– Как остановить? – выдохнул Алексей. Его рациональная башня рухнула. Остался только животный ужас.
– Заключить обратно. Переписать Печать, восстановив целостность. Но для этого нужен ключ. Ключ, который не в коде. Ключ – в памяти. В памяти места, откуда эта… Сущность была извлечена моими предками и первыми создателями «Кванта» много лет назад. В памяти земли. И в памяти твоей крови, Алексей.
– Моей крови? Что ты несете?
– Твоя бабушка, по материнской линии. Она из-под Казани, да? Деревня Старый Ключ?
Алексей кивнул, ошеломленный. Как он может это знать?
– Там, в тех землях, в старые времена, находили… места силы. Или, скорее, места слабости. Прорехи. Мои предки, старые знахари, умели с ними работать. Часть знаний ушла с твоей бабушкой, когда она выходила замуж за русского и уехала. Другая часть – осталась со мной. Нам нужно соединить их. Тебе нужно поехать туда. Узнать, как завершить обряд. Узнать, чем можно запереть эту дверь. Потому что код, который мы здесь напишем, будет лишь замком. А ключ… ключ должен быть выкован там.
– Я не могу просто взять и уехать! У меня… – он хотел сказать «брат, долги», но запнулся.
– У тебя есть ровно столько времени, сколько продержится эта шкатулка и мое умение ее сдерживать, – жестко сказал Ибрагимов. – День. Может, два. Потом оно прорвется. И первым делом заберет того, кто его потревожил – тебя. А за тобой потянется цепочка. Я видел, как это бывает. Это как чума. Только чума разума и реальности.
Внезапно в кабинете погас свет. Замигал экран компьютера на столе. Из динамиков послышался резкий, пронзительный писк – звук, которого не должно быть у этой модели. И тогда Алексей увидел его снова.
На стене за Ибрагимовым, в свете умирающего монитора, заплясала тень. Не его тень и не тень старика. Она была огромной, бесформенной, и в ней двигались, как в кипящей смоле, те самые искаженные, вытянутые контуры. А из щелей деревянной шкатулки на полке повалил тонкий, едкий дымок. И запах… запах был как в метро после сварки рельсов, смешанный с запахом мокрой, гниющей земли.
Ибрагимов резко повернулся, выхватил из-под ворота рубашки небольшой амулет – что-то вроде серебряного знака с запутанным узором. Он прошептал несколько гортанных слов и ткнул амулетом в сторону тени.
Тень дернулась, съежилась и исчезла. Свет зажегся. Писк прекратился. Из шкатулки перестал валить дым.
Старик тяжело дышал, опираясь на стол.
– Видишь? Оно уже здесь. В стенах. В проводах. В данных. Беги, Алексей. Беги не от долгов или правосудия. Беги от пустоты, которая хочет тебя съесть. И найди способ заткнуть эту дыру. Или умри, зная, что забрал с собой в могилу всех, кого любил.
Алексей стоял, глядя на черное пятно на стене, где была тень. Оно бледнело, но все еще было видно. Как ожог.
Его мир, стройный и понятный, рассыпался в прах. Оставались только древний ужас, холодный код в деревянной коробке и путь в забытую деревню, к бабушке, с которой он не говорил лет десять. Путь назад был отрезан. Впереди – только тьма, которую нужно было обуздать, прежде чем она обопрется на его плечи и заглянет в глаза.
Он кивнул. Всего один раз. Потом развернулся и вышел из кабинета, не оглядываясь.
Он должен был ехать. Прямо сейчас.