Ратмир почти не медлил с ответом.
– На экране.
– Тогда в одном экземпляре.
Дождавшись, пока принтер перестал выплевывать бумажные листы, Вадим забрал образовавшуюся стопку. На глаз текст программы занимал около пятидесяти страниц. Взяв их, Вадим принялся просматривать исходник.
Масса активируемых подпрограмм. Бездна вызываемых массивов данных. Сложно организованные циклы. Комментарии были в основном на английском языке, имели сугубо прикладной характер и практически ничего не поясняли. По диагонали просмотрев какую-то часть текста, Вадим отложил листы в сторону. Без особой надежды он подошел к Ратмиру, некоторое время постояв у него за спиной. Оставив текст исходника, Ратмир внимательно рассматривал вызываемые программы и массивы данных. Вновь придвинув стул, Вадим сел рядом с ним. Некоторое время он раздумывал, как правильно сформулировать вопрос.
– Функциональное назначение понятно?
Оторвавшись от рассматриваемой подпрограммы, Ратмир вернул какую-то другую. Подогнав на экране нужную страницу, он некоторое время смотрел на нее.
– Комментарий, – сказал он. – Есть важный комментарий.
– Какой?
– Вот.
Придвинувшись, Вадим посмотрел на строчки, у которых стоял курсор. Комментарий был на английском:
Generic Process Activation. Interception of Technological Process Control
– Что это?
– Файл настроек.
– К нему обращается программа?
– Да.
Комментарий был на первой же странице. Следующие за ним пять страниц были закомментированы, то есть отменены. Ай да Ратмир, подумал Вадим. А я смотрел и не видел.
– И ты думаешь, что это означает перехват управления у главного центра управления этой консолью?
Некоторое время Ратмир, застыв, смотрел в текст файла.
– Возможно.
– И что тогда произойдет?
– Порядок выполнения программы изменится. Произойдет обращение к другим процедурам и другим массивам. И другие преобразования.
– А какие это будут массивы?
– Вот эти.
Придвинувшись к экрану, Вадим с внезапно екнувшим сердцем увидел названия выделенных Ратмиром файлов данных.
Extensive.dat
Moderate.dat
Neutral.dat
Мгновение он раздумывал.
– И что, она вызывает все три файла?
– Нет, только один по выбору.
– И это определяет файл настроек?
– Да.
Охренеть вторично, подумал Вадим. Неужели так повезло? И что, прямо так раскомментировать эти страницы и вызвать файл Neutral – и все вдруг возьмет и прекратится? Сервер перехватит у основного центра управление, переведет процесс в нейтральный режим – и все, Облако рассеется? Не может все быть так просто. Хотя, с другой стороны, что усложнять? Английским по белому тебе написано – Neutral. А с другой стороны, какие у тебя варианты? – подумал он. – Все равно надо пробовать. Так чего тут размышлять, все равно слово Neutral говорит само за себя, поневоле успокаивающе – хуже не будет. Попробовать и посмотреть, что получится. Посмотреть, подумал он. А как, собственно, мы узнаем, изменилось ли что-нибудь там наверху? В принципе, я еще раньше думал об этом – у здания мэрии и во многих других освещенных местах висят видеокамеры, не может быть, чтобы все они не работали. По крайней мере некоторые должны быть исправными, если что-то изменится, через какое-то время так или иначе мы это увидим. Система видеонаблюдения наверняка централизованная, ну так тем лучше, это надо использовать. Он повернулся к Ратмиру.
– Ты можешь взломать систему видеонаблюдения города?
Аккуратно свернув все окна, Ратмир проверил наличие на консоли интернета.
– Да.
– Что тебе для этого нужно?
– Исходные данные.
– Какие?
– IP-адрес мэрии.
Я идиот, подумал Вадим. Запросто я мог спросить у помощника мэра IP-адрес мэрии, и он бы почти наверняка сказал. И что теперь делать?
– Не знаю я IP-адреса, – сказал он Ратмиру. – Это фатально?
Ратмир набрал какой-то адрес в интернете.
– Нет.
– И что ты будешь делать?
– Запрошу Сообщество.
Понятно, подумал Вадим. Сообщество крэкеров и хакеров. Хотя Ратмир ведь не то и не другое. Дай бог, чтобы он пользовался там авторитетом. Ратмир что-то напечатал в открывшейся странице форума. Некоторое время Вадим напряженно следил за ним.
– Запросил? – спросил он.
– Да.
– И как скоро, думаешь, придет ответ?
– Не знаю.
Ответ пришел через полминуты. Некоторое время повозившись, Ратмир завершающе щелкнул мышью – экран заполнили несколько квадратных картинок, выхваченных фонарями из сумрака. Свернув их, Ратмир вернулся к программе. Мгновенье Вадим смотрел на нее.
– Ладно, – сказал он Ратмиру. – Вариантов у нас все равно немного. Раскомментируй этот перехват управления и выбери вариант файла Neutral. Попробуем, посмотрим, что будет.
Подумав, Ратмир, пробежав пальцами по клавишам, внес изменения. Нажав на кнопку сохранения программы, он мгновенье смотрел на надпись, появившуюся на экране:
Данный файл не может быть изменен, так как в данный момент он используется программой Current_Process_Control
Вздрогнув, Вадим быстро взглянул на Ратмира.
– Это еще что? Это фатально?
Ратмир аккуратно погасил сообщение.
– Нет.
– И что ты теперь будешь делать?
Ратмир молчал всего мгновенье.
– Скопирую файл под другим именем. Внесу изменения. Создам в файловой системе Linux перекрестную ссылку с действующего файла на измененный. Оригинал уничтожу.
– И что?
– Система автоматически начнет использовать новый файл настроек благодаря перекрестной ссылке.
– Слава богу. Действуй.
Молча Вадим смотрел, как Ратмир, скопировав файл, что-то делал в файловой системе. Выйдя из нее и вновь пробежав пальцами по клавишам, он ввел команды:
chmod settings.set 777
4rm settings.set
Успокоенно откинувшись к спинке кресла, Вадим смотрел на Ратмира и на экран, ожидая продолжения.
В следующий момент он вздрогнул. На экране в предупреждающе красной мигающей рамочке появилась надпись:
File settings.set corrupted
Быстро он перевел взгляд на Ратмира – несмотря на обычное для того неподвижное выражение лица на какой-то миг Вадиму показалось, что он улавливает в нем замешательство.
Красная рамочка на экране исчезла, вместо надписи появилась другая:
Do you want to restart the process from the beginning?
Мгновенье помедлив, Ратмир щелкнул мышкой на «Yes». Надпись исчезла, все успокоилось. Не увидев никакого продолжения, Вадим ожидающе повернулся к Ратмиру.
– И что теперь? Что-нибудь дальше делаем?
Прямо сидя на стуле и глядя в экран, Ратмир положил руки на колени.
– Ничего.
– То есть мы все сделали?
– Да. Система перехватила управление и перешла в другой режим.
Охренеть, подумал Вадим, охренеть еще раз, проверка гипотезы запущена. Ну что, получается, теперь только ждать, дай бог теперь, чтоб она оказалась верной. Машинально он протянул руку и щелкнул мышкой на вкладке системы видеонаблюдения, там по-прежнему тускло переливалась подсвеченная фонарями темень в поле зрения видеокамер. Не тупи, подумал он, по щелчку пальцев все равно ничего не изменится, нужно время; не имея точных данных о динамике процесса – тогда, восемь лет назад, – невозможно даже предсказать какое. И это вообще, если процедуры формирования и распада Облака хоть сколько-нибудь симметричны. В любом случае раньше чем через час визуально проверять нет смысла. Плохо, подумал он, ненавижу ждать. Готовься к этому, подумал он, это долгий путь, сработает это сейчас или нет, в любом случае ожидание будет долгим. Просидев несколько минут у консоли рядом с так же неподвижно сидевшим Ратмиром, машинально он встал и вышел в коридор. Пойти прогуляться, подумал он, или на другой этаж, что ли, заглянуть, посмотреть, есть ли там интересное что-нибудь. Дойдя до Т-образного перекрестка, он повернул направо; миновав взломанные комнаты секретарши и начальника, он дошел до конца отростка; повернувшись, он на мгновенье остановился в недоумении – контуры новой, ранее не замеченной им двери вдруг стали заметны на противоположной, глухой стене; у двери не было ни ручки, ни замочной скважины, но вписанная в стену четырехугольная стальная плита стала видна абсолютно явственно, покрашенная в цвет стены и имевшая сходную со стеной фактуру, она, на первый взгляд, совершенно сливалась с ней. Присмотревшись, Вадим увидел над дверью небольшой, чуть заметный фотоэлемент. Так даже не карточкой она открывалась, автоматически, что ли, ну да бог с ним, наверняка не работает уже все давным-давно. Машинально поднеся руку к фотоэлементу, удивленный, он невольно сделал шаг назад – заработал мотор привода, дверь неожиданно быстро и легко открылась, впереди был виден длинный, тускло освещенный коридор, почти автоматически Вадим вошел; пройдя несколько шагов, услышав ровный звук привода, он оглянулся – дверь так же быстро и легко затворилась за ним; почему-то не испугавшись, практически не обратив на это внимания, ускорив шаг, он пошел вперед; уже ощутив, увидев, что коридор хотя и длинный, но неминуемо ведет к чему-то тревожному и важному, ускорив шаг, почувствовав, что коридор пошел под уклон, он сдерживал себя, чтобы не побежать, путь выровнялся, коридор расширился, какой-то новый свет дальним тусклым серебром замерцал вдали; уже видя, что выход близко, беглым шагом преодолев остаток пути, Вадим остановился, почти с разбега вбежав на огромную равнину.
Ровный тусклый, мертвящий свет из-за низко нависших серебряных туч наполнял все кругом, покрытое свинцовыми травами поле расстилалось впереди, черно-белые стяги вздымались вдали. Быстро, среди безветренных, беззвучных трав, в предсумрачном свете низкого неба перейдя поле, он приблизился к невысоким холмам. Разноликое и разнооружное воинство собиралось отовсюду. Время ускорилось и понеслось вскачь. Резко отбросив край черного, с золотой каймой, плаща, некто, сидевший на мертвом стволе поваленного дерева, быстро встал, вполоборота повернувшись резкими чертами обожженного лица.