ШАНКАРИ. [Качает головой.] Мы называем нексус наркотиком, но на самом деле это не так. Это наномашина. Она не вымывается из вашего организма из-за того, что какой-то фермент ее разрушил. Узлы нексуса распадаются на части потому, что это велит им сделать некая внутренняя логика. А если вы дадите им нужный сигнал, они вообще не разрушаются.
[Допрос продолжается еще 18 минут.]
8
ЛАЗЕЙКИ
После допроса, касавшегося технических аспектов, Кейд чувствовал себя расстроенным и подавленным. Эти два часа его здорово измотали. Они выясняли все подробности того, что создали они с Ранганом. Они замечали каждую попытку уклониться от ответа. Он каждый раз знали, когда он лжет или пытается что-то утаить. Ничего, он им еще покажет.
Он подписал бумаги, которые ему дали. Юрист УПВР изучил, что он подписал, затем поставил вторую подпись.
Теперь сделка обрела реальность. Он будет служить им в роли шпиона, а в обмен никто не отправится в тюрьму. Он, Ранган и Илья останутся в науке до тех пор, пока будет продолжаться операция с его участием.
И только тогда они сообщили ему, что Уотс ушел.
Молодец Уотс, подумал Кейд.
Охранник провел его на крышу, где на вертолетной площадке стоял самолет с вертикальным взлетом и посадкой — его крылья вращались, двигатели были повернуты к небу, готовые выполнить вертикальный взлет. Двигатели уже завывали. Его поспешно провели к трапу, и в салоне он обнаружил Рангана, Илью и оперативника, который должен был отправиться с ними в Сан-Франциско, чтобы получить код нексуса.
— Пристегнитесь, — сквозь гул двигателей сказал опер, представившийся как Майерс. — Сзади есть туалет. А вот напитки разносить не будут.
Кейд пристегнулся. Снаружи двигатели начали гудеть, потом заревели. Все трое хранили молчание, пока самолет медленно поднимался в небо, открывая вид на город. Окно рядом с Кейдом было обращено на север. Когда крыло не закрывало вид, он мог видеть реку — Потомак? — а за ней мемориал Джорджа Вашингтона и Капитолий. Затем двигатели постепенно повернулись вперед и самолет набрал высоту и горизонтальную скорость. Город исчез вдали.
Кейд посмотрел на Илью. Она была погружена в свои мысли. Вид у нее был напряженный и взволнованный. Он не видел сидевшего за ними Рангана, но ощущал его чувство разочарования и неуверенности в себе. Он хотел с ними поговорить, но не хотел, чтобы Майерс их услышал.
Он вошел в систему и нашел то, что искал — встроенное приложение МодОС для чата. Он печатал слова на ментальной клавиатуре в своем сознании, а программа отсылала их Рангану и Илье.
[кейд] Не реагируйте. Нам нужно поговорить.
Он почувствовал их удивление — они забыли об этом приложении. Через секунду он увидел ответ Ильи.
[илья] Нуда, конечно.
[ранган] +1
[кейд] Включите кино или еще что-нибудь. Наденьте наушники. Ранган, ты первый.
Возможность поговорить принесла им облегчение. Он чувствовал, что настроение у всех немного поднялось. Ранган с чем-то возился перед собой. Примерно через минуту Илья набрала на располагавшемся на переднем кресле телевизионном экране документальный фильм о природе.
[кейд] Уотс ушел.
[илья] Мне сказали то же самое.
[кейд] Они предложили мне сделку. Отдай им нексус и сделай для них работу, и никто не отправится в тюрьму.
[илья] Ты ее заключил.
[кейд] Да.
[илья] Не могу поверить, что ты отдаешь им нексус-5, [ранган] Или это, или пожизненное.
[кейд] И тюрьма для всех, кто участвовал в вечеринке, [илья] Ты хоть представляешь, что они сделают с нексусом? Что сделает ЦРУ?
Он чувствовал ее гнев.
[кейд] Я знаю. Но они ведь все равно его получат. С жестких дисков из лаборатории или с резервных копий у меня или Рангана…
[ранган] Он прав. Когда они узнали, что он существует, стало уже слишком поздно.
[илья] Тогда у вас на руках будет полно крови.
[кейд] Возможно. Но есть одна вещь, которую мы можем сделать.
[ранган] Какая?
[кейд] Мы можем внедрить лазейку в их версию.
[ранган] Они уже знают о лазейке.
[кейд] Новую. Которую они не найдут.
[ранган] Как?
[кейд] Помнишь ту статью, которую мы читали в прошлом семестре? О решении Томпсона?
Он почувствовал, что Ранган сразу все понял.
[ранган] Пусть компайлер это внедрит… Это будет в двоичном коде, но не будет в исходнике…
[кейд] И пусть компайлер МодОС внедрит это в компайлер Нексуса…
[ранган] Нуда, нуда… У нас хватит времени? Сколько должен продлиться этот перелет?
[илья] Пять часов. Но я не понимаю, о чем речь.
Кейд объяснил.
ОС Нексус существовала в двух формах. Как считываемый человеком исходный код, который Кейд, Ранган или любой другой программист может читать, понимать и модифицировать. И как двоичный код, который могут понимать узлы нексуса — последовательности из единиц и нулей, с которыми человеку почти невозможно непосредственно работать.
Между исходным кодом и двоичными командами находился компайлер — программа, которая преобразовывала считываемый человеком исходный код в считываемый Нексусом двоичный код. Кейд и Ранган должны использовать компайлер, чтобы внедрить свои лазейки.
При каждом запуске компайлера он будет исследовать исходный код ОС Нексус на наличие их новых лазеек. Если их там нет, перед созданием двоичной версии компайлер их добавит. Единственное свидетельство наличия лазеек будет находиться в двоичной версии, которая для людей почти недоступна.
Наконец, они используют тот же самый прием на самом компайлере. Исходный код компайлера не будет содержать никаких логических схем, куда можно включить лазейки. Они будут существовать только в двоичном коде. Каждый раз, когда версия МодОС для рабочих станций будет реком- пилировать компайлер, она будет вводить логическую схему этого приема.
Кейду Ранган показался задумчивым и все еще беспокойным. Он думал о том, что будет, если его поймают. И все же пришел к решению.
[ранган] Ладно. Что за хрень! Давайте это сделаем.
Ранган и Кейд извлекли свои проектные среды и соединили их. Илья к ним тоже подключилась и ментально заглядывала им через плечо. Они продумали план и разделили задачи, превращая смутную идею в конкретный список того, что нужно сделать.
Завершив составление плана, они принялись за работу. Сначала она двигалась быстро. Лазейки они клонировали с предыдущих, меняя только пароли. Код в компайлере был концептуально простым. Но как только они начали кодировать, то столкнулись с ошибками, причем очень серьезными. Приходилось постоянно следить за временем. Минуты шли за минутой. Прошел час. Сбой компайлера задержал их на двадцать минут. Решение оказалось вполне тривиальным — когда удалось его найти. Прошел второй час. В одной из лазеек происходила утечка памяти. Как это могло быть? Они ведь скопировали код с той лазейки, которая уже существовала. Решение они нашли, но на поиски понадобилось уже больше времени. Прошел третий час.
(adsbygoogle = window.adsbygoogle || []).push({});