Изменить стиль страницы

–Как? – Андрей рассмеялся.

–Да говорю тебе, вполне. Ты же можешь расшифровать сообщение, в котором отсутствует большая часть букв?

–Ну, зависит от количества отсутствующих букв и того, какие буквы отсутствуют.

–Так и здесь. В основном фрагменте были инструкции командам, которые есть в нашем куске. Мы видим, какие команды они выполняют, и можем написать соответствующие инструкции. Все элементарно.

–Может быть, там были не только команды?

–Что там было, подскажет наш кусок. Дай-ка.

Витя отодвинул брата и устроился за его рабочим местом. Пальцы привычно забегали по кливиатуре, набивая код. Через 5 минут Витя остановился.

–Все.

–Все?

–Все.

–Ну, запускай тогда.

–Уверен?

–Давай, не томи.

Витя откомпелировал код и запустил экзешник. Из колонок послышался еле слышный шум.

–Прибавь громкости.

Витя добавил звуку, но шум все равно был тихим. Эдакий протяжный, заунывный свист, который мог хорошо подходить для озвучивания мрачного подземелья.

–Действительно похоже на смерть.

Андрею стало немного не по себе.

–Вырубай эту кокафонию.

Звук затих, но ребята невольно почувствовали дискомфорт.

Андрей поежился.

–Я всегда говорил, что эти военные чокнутые.

Витя задумчиво сидел. Потом снова открыл исходник и стал внимательно его изучать.

–Что там? – поинтересовался брат.

–Знаешь, у меня такое ощущение, что я что-то упустил.

–Что именно?

–Пока не знаю. Просто чувствую. Ладно, пойду червяка своего дописывать. Завтра будем запускать.

–Окей. Я пока фильмец гляну.

* * *

From: Dean Stanley [email protected]

To: Richard Cromwell [email protected]

Мы удовлетворены предварительными результатами. Держите нас в курсе всех подробностей проекта «Тихая смерть».

Дин Стэнли /DARPA.

* * *

Пока брат еще спал в обнимку в плюшевым BSD-демоном, Андрей с утра сделал пробежку, сгонял в универсам за продуктами и приготовил им обоим завтрак. Обычно они питались полуфабрикатами, предпочитая не тратить время на приготовление пищи, но в это утро на улице было так свежо и приятно, что Андрею захотелось сделать что-то особенное. Этим особенным была жареная картошка с окорочками, зеленым горошком и салат, собственноручно сварганенный из огурцов, капусты и помидоров.

–Ты не забыл, сегодня идем на сходку? – поинтересовался Андрей за завтраком.

Витя поморщился. Под сходкой подразумевалась встреча юниксоидов с одного опенсорсного портала, которая проходила каждые две недели. Первое время они вдохновляли Витю и он ходил на них с удовольствием, но перезнакомившись со всеми постоянными участниками, понял, что делать ему там особо нечего. Ему хотелось общаться с кем-то, у кого можно чему-то научиться, но на сходках он обычно учил остальных сам. Брат в этом плане был отзывчивей и с удовольствием объяснял технические премудрости новичкам. Встречи проходили практически всегда в одном месте – баре «Веселый Роджер», были шумными и веселыми, а все темы разговоров вращались вокруг компьютеров и UNIX. Братья всегда были желанными гостями на любой юниксовке.

–Никаких отмазок. Хоть проветришься.

–Андрюх, реально не охота. К тому же я хочу дописать сегодня червяка.

–Ну ничего страшного, оторвешься на пару часиков.

–Знаю я ваши «пару часиков». 3 часа бесполезного трепа, а потом 2 часа еще более бесполезной пьянки. Иди один, окей?

–Окей – вздохнул Анрей.

* * *

Андрей вернулся в отличном настроении.

–Ну, как прошло? – не отрываясь от компа, спросил Витя.

–Класс. Жаль, тебя не было. Там новая девченка стала ходить, вообще супер. Мы с ней мило так пообщались.

Витя хмыкнул.

–Стрельнул у нее телефончик, надо будет позвонить.

–Валяй.

–Как твой червь?

–Готов. Иди зацени.

Андрей повесил куртку на вешалку и вошел в комнату. На экране без какой либо упорядоченности был набросан код, в котором даже хорошему программисту было сложно разобраться.

–В общем, пока ты там телефончики стрелял, я тут добавил пару функций. Теперь он, во-первых, кросс-платформенный и может заражать тачки с несколькими писишными осями – виндой, фряхой, линухом, соляркой, макос и другими. Во-вторых, теперь он распространяется не только в инете, но и через мобильные системы.

–Как?

–Способов несколько. Через SMS/MMS шлюзы и блютус. Также на зараженном компе постоянно сидит жучок, который отслеживает подключение к определенному порту и, если юзер надумает поменять прошивку или закачать на свой смартфон новых игрушек, вуаля. Еще через недавно найденный баг в Symbian OS. В общем, круче могут быть только горы.

Витя с гордостью посмотрел на неразборчивый исходник.

–Ты же говорил, что дальше четвертого кластера он не уйдет?

–А он и не уйдет. Это пока экспериментальная версия.

–Про безопасность не забыл?

–За идиота держишь? Все следы ведут на тайваньский вирьмейкерский сайт. Будет кому-то слава...

–И что твой червячок делает?

–Да ничего, в общем то.

–Вообще ничего?

–Ну, я пока писал алгоритмы размножения, думал все остальное на потом оставить.

–Давай что-то безобидное вставим, чтоб не получилось, как в прошлый раз. У меня где-то был гиф анимированный с Роджером. Он там клево хлебалом щелкает.

–Отлично. И в качестве фона что-то нужно... зловещее.

Они многозначительно переглянулись.

–Ее?

–Ну а что. Вполне зловеще.

Братья взялись за дело. Пока Андрей искал на компе тот самый гиф, Витя вставлял в код червя фоновый шум из военного архива. Все время, пока он возился с ним, его не оставляло ощущение, что он что-то забыл. Он знал, что код верный, просто где-то отсутствует маленькая, но важная составляющая. Витя стал просматривать код шума снова, но как он не пытался определить, в чем дело, решения не находил.

–Есть! – Андрей клацнул пальцами и добавил: «Заливаю тебе в аплоад. Там в папке GIF».

Вставить картинку, чтобы она высвечивалась вместе с фоновым шумом после первой перезагрузки зараженного компа, заняло у Вити не больше пяти минут. Еще некоторое время братья обсуждали, как назвать нового червяка.

–А что, «Тихая Смерть» – неплохое название для безобидной зверушки. – наконец предложил Андрей.

–Вполне. – согласился Витя, и еще одна строка в исходнике дала электронному зверьку имя.

–Вроде все готово.

–Ничего не забыл?

–Да вроде нет.

–Ну, тогда будем запускать?

Витя еще раз просмотрел код. В последний момент, глядя на фрагмент шума, его осенило. Руки сами набрали нужные строчки, а затем нажали «Откомпилировать». Оставалось только запустить получившийся экзешник.

Витя навел на него курсор и клацнул «Enter».

–Я, похоже, понял, чего не хватало в том коде. – после этого сказал он.

–Чего же? – поинтересовался Андрей.

–Запрограммированный шум был чистым. Но в одной из строк содержался цикл. Я сначала подумал, что эта формула циклическая сама по себе. Но потом дошло, что она – лишь часть всего циклического процесса. Т.е. звук не может быть чистым, он построен на определенных прерываниях. В одной из формул был подсказка, с какой частотой шло прерывание.

–Нифига не понял. Ты что, подправил код того шума?

–Ага.

–И что, он теперь дергается каждые, сколько там, секунд?

–Каждый полсекунды. Мы можем послушать оригинал.

Андрей пожал плечами, и Витя просто перезагрузил свою машину, которая стала первой, зараженной червем. Система быстро загрузила ядро, заставку, системные процессы, startup скрипты и программы в стартапе. В конце концов, процесс загрузки ОС был закончен и из динамиков раздался еле слышный прерывистый шум, за которым последовала картинка белого скелета с костями на черном фоне, злорадно открывающего пасть. Но увидеть ее ни Андрей, ни Витя не успели. К тому времени, как Веселый Роджер во второй раз захлопнул челюсть, оба брата были уже мертвы. А последнее, что внезапно пришло в голову Вите, перед тем как инфразвук остановил его сердце, была мысль, что он все-таки забыл поставить ограничение на распространение червя.