Нестройный гул паркового праздника безжалостно вплетался в шелест бумаги, перекрывая звон пивных бутылок и фальшивые гитарные аккорды. На коленях Алексея лежала тяжелая стопка бледно-зеленоватых листов. Это уже не была непрерывная гармошка: ночью он разорвал ленту на отдельные страницы, оторвал боковые дорожки с направляющими отверстиями, пробил левый край дыроколом и закрепил всё на металлических усиках папки. Специфический химический запах свежей, густо вбитой в лист типографской мастики смешивался с ароматом нагретого на июньском солнце пластика и пыльной травы.
Рядом, прямо на земле у ножки складного рыбацкого стула, покоился массивный прямоугольник старого ноутбука-чемодана. Тускло-серый корпус напоминал тяжелый строительный шлакоблок. Верхняя крышка оставалась плотно захлопнутой, толстый шнур питания змеился поверх ребристого пластика, а тяжелый, давно исчерпавший свой ресурс внешний аккумулятор берегли для единственного решающего момента. Включать машину сейчас не имело ни малейшего смысла. Дешевая монохромная матрица мгновенно слепла под прямыми солнечными лучами, превращая любой текст в нечитаемое серое месиво.
Но дело заключалось не только в бликующем экране. Алексей знал: любой электронный файл легко подвергнуть сомнению. Цифровую запись можно стереть, подделать, списать на сбой жесткого диска или криво вставший драйвер. Виртуальные доказательства эфемерны, они не обладают физическим весом. Хакера уровня Ильи невозможно прижать к стенке пикселями на мониторе — он просто ухмыльнется и заявит, что сисоп сам переписал текстовый документ в редакторе.
Именно поэтому Алексей принес бумагу.
Рядом с мертвым ноутбуком лежала пухлая, затертая по углам картонная папка с тесемками. На ее лицевой стороне толстым черным маркером кто-то вывел одно веское слово: «ДЕЛО». Формат милицейского архива, папка следователя, приговор, отлитый в материальную форму. Пробитые дыроколом листы сидели на металлических усиках так плотно, что поменять их местами или вырвать страницу незаметно было почти невозможно. Здесь, в этих измазанных дешевой черной краской моноширинных строчках, скрывалась анатомия невозможного. Технические следы дерзкого преступления против системы.
Девятиштырьковая головка принтера с садистской дотошностью впечатала в волокна бумаги каждый системный процесс за последние трое суток. Никакой магии или мистики. Только голые, безжалостные факты. Полные дампы работы мейлера BinkleyTerm, логи распаковщика FastEcho, отчеты об ошибках маршрутизации пакетов. Грязная краска местами мазала, сливаясь в сплошные темные пятна там, где система фиксировала шквал непонятных событий.
Алексей смотрел на ряды цифр, и его пальцы непроизвольно сжимались, оставляя на коже сажные отпечатки. Вокруг бушевало безумное лето девяносто шестого года. Реальный мир за пределами парковой зоны представлял собой кипящий, неконтролируемый хаос: рынки с паленым спиртом, спортивные костюмы, рэкет, невыплаты зарплат, стреляющие на улицах бандиты, абсолютная социальная энтропия. В этой реальности Алексей оставался просто уставшим технарем с красными от хронического недосыпа глазами.
Но сеть Фидо подчинялась иным законам. Сеть служила его личной империей, выстроенной на незыблемом фундаменте чистой математики. Здесь царил абсолютный, кристальный порядок. Протоколы не брали взяток. Маршрутизаторы не знали сомнений. Если пакет отправлялся на узел, он шел строго по заданному пути через прописанные в конфигурации шлюзы и хабы. В переплетении телефонных проводов, скрипе модемных хэндшейков и сухих строчках логов Алексей чувствовал себя всемогущим архитектором реальности. Он раздавал адреса, карал экскоммуникацией, управлял потоками информации, контролируя каждый байт.
И теперь этот идеальный, стерильный мир получил пробоину.
Среди ровных столбцов текста зияла брешь. Алексей в сотый раз провел потемневшим ногтем по конкретной строке. Время: три часа пятнадцать минут ночи. Телефонная линия молчит. Входящего вызова с городской АТС нет. Модем не снимает трубку, не издает характерного шипения соединения, регистры инициализации пусты. Никакого физического контакта с внешним миром.
А в следующую секунду, на отметке 03:15:23, внутри закрытой системы из ниоткуда материализуется пакет сообщений. Он ложится в директорию входящей почты уже сформированным, с прописанным обратным адресом 2:5030/77.777. Без внешнего маршрута. Без следов прохождения через промежуточные станции. В обход всех существующих барьеров защиты. Илья умудрился протолкнуть свои данные прямо в сердце чужого системного блока, минуя медные провода, словно пролез сквозь брешь в самом цифровом континууме.
Технические следы этого прокола, вываленные на бумагу, вопили об уязвимости, о критической дыре в обработке базы, грозящей обрушить власть сисопа. Злоба, густая и параноидальная, требовала немедленного выхода. Руки Алексея машинально вцепились в край верхнего листа.
Алексей методично проверял крепление листов: выравнивал стопку, прижимал металлические усики и разглаживал край верхней страницы. Тонкие белые полоски с круглыми отверстиями, оторванные еще при подготовке, давно валялись в траве рядом с его ботинком.
Денис придвинулся вплотную. Взгляд жадно цеплялся за моноширинные строчки цифр и латинских символов.
— Ну что, капкан готов? — тихо спросил он, облизнув пересохшие губы. В голосе вибрировало мстительное нетерпение. — Доказательства железобетонные?
Алексей не отрывал немигающего взглядов от распечаток. Очередная бумажная полоса отделилась с жалобным шорохом.
— Я собрал маршрутный след за трое суток. Сначала выпотрошил бэкапы ФастЭха на винчестере. Вытащил системные журналы Бинлея до байта. Свел текстовые дампы в один файл и только потом пустил на печать. Полчаса слушал, как воет головка матричника, выбивая эти логи. Ловушка материальна. Этот выскочка думает, что можно играть с таблицами маршрутизации и остаться невидимым. Но здесь каждая цифра вбита краской в бумагу.
В мире за пределами лесопарка царил хаос: заводы вставали, зарплату задерживали месяцами, вечерами на улицах стреляли братки в спортивных костюмах. Социальная реальность расползалась по швам. Но здесь, среди медных телефонных проводов и строгих пакетов данных, существовали незыблемые математические правила. Протокол либо работал, либо нет. Разбирая колонки логов, Алексей чувствовал себя полновластным творцом, способным контролировать каждое движение в своей вселенной.
Нода в пыльной комнате на улице Ленина собиралась его руками. Когда нормальный поинт забирал почту, система оживала: АТС выдавала зуммер, внешний US Robotics щелкал реле и хрипел при соединении, тоссер деловито шуршал диском. Честная, осязаемая физика процесса. Однако Илья, системный адрес 2:5030/77.777, не звонил. Пакеты не пробивались сквозь шумы хреновой петроградской линии.
Текстовые следы на бумаге показывали немыслимое. Кладжи MSGID и Via выглядели так, будто Илья сидел прямо внутри системного блока Алексея. Никакой магии не существовало — только наглое использование дыры в локальной обработке базы. Хакер забирался в святая святых, оставляя идеально чистые письма без единого разорванного байта.
Денис удовлетворенно потирал руки, предвкушая публичную порку конкурента. Тем временем скамейка под старым дубом начала притягивать людей. От веселой фидопойки отделялись системные администраторы. Мужчины смыкали ряды, образуя плотное кольцо вокруг командного пункта. Радостный гомон праздника остался снаружи, а внутри повисло мрачное, параноидальное напряжение.
Алексей разложил листы на досках, словно генерал штабную карту.
— Смотрите сюда, — он ткнул пальцем в колонку логов. — Время поступления пакета от так называемого поинта .777. Три часа, пятнадцать минут, двадцать три секунды. А теперь смотрим дамп мейлера. Телефонная линия молчала с трех ночи до половины пятого. Ни одного входящего вызова. Никакого хендшейка.
Грузный сисоп с клочковатой бородой наклонился над бумагами, щурясь сквозь толстые линзы. Мужчина шумно втянул воздух сквозь зубы.
— Он минует Бинлей? — пробасил бородач. — Как он бандлы проталкивает?
— Лезет прямо в базу почтовика, — отчеканил Алексей. — MSGID собирается чисто, Via не оставляет нормальной цепочки. Этот кусок грязи обходит мейлер, подменяет маршрутные признаки и использует брешь в тоссере.
Технари обменивались тяжелыми взглядами. Для них база сообщений JAM была не абстракцией, а набором конкретных файлов. Чтобы письмо появилось в эхе, оно обязано пройти строгую цепочку: совпадение паролей, поллинг, путь в поле PATH. Каждое сообщение тянуло длинный шлейф системных данных. А здесь пакеты падали из ниоткуда. Один из админов начал вспоминать сбой с зацикленным эхо-линком в девяносто четвертом, но его быстро заткнули. В логах зиял не сбой, а осмысленный текст. Инквизиционный трибунал молча сверлил взглядами строчки, и тишину нарушал лишь сухой шелест листов, которые Алексей перелистывал в папке.
— План такой, — голос Алексея стал суше. — Как только Илья появляется, мы не орем и не лезем руками. Держим его разговором. Лапшин, — он посмотрел на высокого парня с залысинами, — ты спрашиваешь жестко. Про абузу координатору региона, про отключение фида, про то, кто ему дал этот адрес и через кого он вообще ходит.
Лапшин медленно кивнул, потирая подбородок. Он явно уже подбирал формулировки так, чтобы они звучали не угрозой, а протоколом.
— Я мягче зайду, — встрял Денис, подавшись вперед. — Скажу: объясни, как пролез, и мы не будем выносить это на всю сеть. Пусть признается на глазах у всех. И особенно — на глазах у Оли.
— Никакой пощады, — жестко оборвал Алексей, собирая листы. — Бьем точечно. Спросите про тайминги ответа при Zmodem. Спросите, какие ключи инициализации он прописывает в конфигурации. Если он хакер — он посыплется на бытовых настройках простого пользовательского софта. У него не будет ответа, почему путь маршрутизации не содержит промежуточных нод. Мы разденем его догола.
Сисопы обменивались короткими, рублеными фразами, проверяя друг друга на знание тонкостей передачи данных. Вокруг, на залитой солнцем поляне, продолжался праздник. Кто-то громко фальшивил на расстроенной акустической гитаре, у соседней компании ролевиков в руках нелепо торчали кривые деревянные мечи и обрезки промышленного пластика, звенело стекло, пахло жареным мясом и дымом дешевых сигарет. А возле скамейки люди с распечатками незаметно встали так, чтобы к Алексею нельзя было подойти и так же легко уйти.
* * *
Внезапно плотная стена админов дрогнула. Сквозь спины неуклюже протиснулся щуплый, потеющий паренек в слишком большой футболке. Он был явно из новеньких, обычный рядовой поинт, пришедший на свою первую встречу. Совершенно не считывая грозовой атмосферы, нависшей над скамейкой, парень радостно улыбнулся и шагнул прямо к Алексею.
— Алексей Сергеевич, извините, — звонко начал новичок, переминаясь с ноги на ногу. — А вы не подскажете, почему у меня Курьер после обрыва связи трубку не кладет? Может, регистр S-ноль надо в двойку выставить? А то телефон занят постоянно…
Натянутая до предела струна лопнула с оглушительным звоном.
Нервное напряжение, копившееся в Алексее последние несколько суток, нашло выход. Сисоп резко, с пугающей скоростью подался вперед. Папка опасно качнулась на коленях. Лицо Алексея пошло красными пятнами, а глаза сузились в две ледяные щели.
— Ты мануалы читал, ламер?! — рявкнул он так громко, что гитарист на соседнем бревне сбился с аккорда. — Какого хрена ты лезешь ко мне со своим железом?! RTFM! Иди читай гребаную документацию, пока я тебе вообще линк не отрубил! Строку инициализации пропиши нормально и не смей занимать линию своими кривыми руками! Пошел вон отсюда!
Молодой поинт побелел. Радостная улыбка сползла, сменившись выражением чистого, неподдельного ужаса. Он судорожно сглотнул, сделал шаг назад, едва не споткнувшись о чужой рюкзак, и быстро растворился в пестрой толпе, спасаясь от админского гнева.
Праздничный шум вокруг скамейки мгновенно стих. Люди оборачивались, перешептываясь. Несколько секунд слышно было только, как где-то рядом тренькнула расстроенная гитарная струна.
Толпу зевак раздвинула Катя.
Она двигалась уверенно, не обращая внимания на суровые взгляды трибунала. В каждой руке девушка держала по открытой бутылке пива. Катя остановилась прямо перед Алексеем, оценивающе оглядела багровое лицо, плотно сжатые кулаки и раскиданные по доскам пробитые дыроколом листы.
— Выдохни, начальник, — спокойно произнесла она, протягивая одну из бутылок. Холодное стекло почти коснулось предплечья. — Парнишка просто спросил. Чего кидаешься на людей? Выпей пива, расслабься. Лето на дворе. Вы тут сидите, как на похоронах.
Алексей даже не посмотрел на бутылку. Рука резко поднялась, отодвигая протянутый напиток в сторону. Жест был брезгливым и категоричным.
— Я не пью, — процедил он сквозь зубы, не меняя позы. — У меня абсолютная боевая готовность. Иди к своим подругам. Нам не до отдыха.
Катя медленно опустила руку с пивом. Яркие губы скривились в откровенной насмешке. Она смерила взглядом Алексея, Дениса и всю остальную группу насупившихся системных администраторов, защищающих свою бумажную крепость. Девушка подняла свободную руку с маникюром и демонстративно, не скрываясь, покрутила указательным пальцем у виска.
Катя стояла под палящим солнцем, чувствуя, как по стеклу бутылок стекают холодные капли конденсата, приятно охлаждая кожу рук. Она пришла сюда выбраться из душной квартиры, попить дешевого пива и посмотреть на забавных, хоть и немного не от мира сего, парней. Вокруг было обычное питерское лето: шершавый асфальт, пыльные кроны деревьев, ребята с гитарами, запах хвои, растворимого кофе и сигаретного дыма.
А эти взрослые мужики, сгрудившиеся вокруг куска пластика на скамейке, словно забыли, где находятся. Катя смотрела на раскиданные бумажки с дырочками по краям, на их багровые от возмущения лица, и раздражение у нее смешивалось с жалостью. Из-за строчек текста они были готовы загнать в угол незнакомого парня и заодно добить Олю, которая и так держалась на честном слове.
Теплый ветерок шевельнул ее короткую юбку, и Катя с облегчением сделала шаг назад, вырываясь из гнетущего, параноидального поля, которое генерировала эта кучка фидошников. «Совсем с катушек слетели со своими модемами», — пронеслось у нее в голове, пока она возвращалась к подруге, унося с собой единственную ценную вещь в этом кружке сумасшедших — холодное светлое пиво.
Развернувшись на пятках, она зашагала прочь, унося обе бутылки. Проходя мимо Ольги, застывшей на краю поляны, Катя громко констатировала:
— Твои админы окончательно сошли с ума на почве компьютеров.
Денис проводил удаляющуюся спину злым, недовольным взглядом. Желваки на острых скулах ходили ходуном. Затем парень медленно повернул голову обратно, возвращая внимание к командному пункту.
* * *
Алексей приступил к финальной сборке улик. Сисоп бережно, почти с благоговением, сгреб разбросанные по коленям и крышке папки листы. Широкие ладони аккуратно выровняли края, собирая матричные распечатки в одну идеально ровную стопку. Ни один байт информации не должен был затеряться.
Он открыл картонную папку «Дело», положил листы внутрь и плотно закрыл клапан. Потом положил картонную обложку прямо на ребристую поверхность закрытого переносного компьютера.
Затем тяжело опустил правую ладонь поверх черной надписи. Рука припечатывала доказательства к картону.
Заметив жест, Денис сел вплотную. Скрестив руки на груди, он ждал.
Остальные члены инквизиционного трибунала синхронно замолчали. Споры оборвались. Все они повернули головы к главному входу на лесную поляну.
За спинами заговорщиков чужой праздник шел своим чередом. Кто-то упорно рвал струны расстроенной акустической гитары, глухо звенело стекло пустых пивных бутылок. Но здесь, вокруг складного стула и раскрытой папки, опустилась тяжелая, осязаемая тишина.
Алексей размеренно втягивал носом смесь сигаретного дыма и запаха нагретого компьютерного пластика. Солнце жгло макушку. Под широкой ладонью плотный картон папки начал покрываться влажной испариной. Пальцы рефлекторно вжимались в черную надпись, словно пытаясь наощупь проверить упрятанную внутри стопку распечаток. Он помнил порядок каждого листа, каждую выбитую иглами матричного принтера строчку: невозможный маршрут, аномальные таймстампы, абсурдные служебные кладжи, само письмо. Абсолютное доказательство взлома.
Алексей перевел взгляд. На самом краю поляны, спиной к шумной толпе, замерла Оля. Катя продолжала что-то возмущенно выговаривать ей прямо в ухо, но девушка полностью игнорировала подругу. Оля неотрывно смотрела вглубь дальней парковой аллеи. Там густые тени деревьев уже не были пустым коридором: в них угадывалось движение, слишком стройное и невозможное для обычной парковой толпы. Оля смотрела прямо туда, замерев от гремучей смеси эйфории и липкого страха, будто опасалась, что одно лишнее движение разрушит реальность и вернет Илью обратно в состояние текста на экране.