Свет раннего утреннего солнца с трудом пробивался сквозь плотно задернутые, выцветшие от времени шторы обычной квартиры-хрущевки. В тесной, вытянутой пеналом комнате, до самого потолка заставленной металлическими стеллажами с гудящей аппаратурой, царил независимый от внешнего мира микроклимат. Время здесь измерялось не оборотами планеты, а циклами работы процессора. Помещение насквозь пропиталось въедливым, кисловатым запахом нагретого гетинакса, осевшей на микросхемах пыли и стойким ароматом сосновой канифоли от ночной пайки материнских плат.
За массивным самодельным столом из листов ДСП сидел Алексей. Он болезненно ссутулился, словно позвоночник прогнулся под тяжестью ответственности за целый сегмент информационной сети. Несмотря на начало лета и давно остывшие батареи, сисоп кутался в неизменный колючий свитер с оленями, нося его как броню от сквозняков и одиночества.
Мужчина механическим, заученным до автоматизма движением левой руки поднес к обветренным губам массивную белую керамическую кружку. На ее выпуклом боку красовался слегка потертый, облупившийся на краях, но всё ещё наполняющий сердце владельца гордостью логотип «Microsoft Beta». Он сделал большой, жадный глоток дешевого растворимого кофе, который давно остыл и приобрел мерзкий кисловатый привкус. Мужчина даже не поморщился от этой горечи — он пил не ради вкуса, а ради права еще час смотреть в логи.
Где-то за грудой стянутых пожелтевшей изолентой кабелей жил своей жизнью массивный блок модема US Robotics Sportster. Красные светодиоды на его лицевой панели нервно пульсировали в полумраке, отбрасывая на стену рваные багровые тени. Внутри корпуса сухо щелкнуло электромеханическое реле — аппарат в очередной раз тестировал напряжение линии. Из динамика вырвался короткий всплеск аппаратного шума: старая телефонная станция Петроградского района выплюнула порцию эфирного мусора, который железо на долю секунды попыталось расшифровать, ответив резким визгом. Набор номера не начинался, COM-порт оставался свободен. Устройство просто замерло в режиме параноидального ожидания, вслушиваясь в густое аналоговое шипение пустых проводов.
Алексей даже не шелохнулся. Ни один мускул не дрогнул на его напряженном лице. Для него этот сводящий с ума обывателей цифровой скрежет был слаще любой симфонической музыки: звук правильно работающей системы. Он был сисопом. Он был боссом этого узла.
Он смотрел исключительно прямо перед собой, в пузатый, покрытый слоем статического электричества экран ЭЛТ-монитора, который отбрасывал на его бледное, заострившееся лицо холодные, мертвенно-синеватые блики. Его взгляд, обычно цепкий, колючий и предельно сосредоточенный, на одно короткое мгновение расфокусировался от усталости и скользнул вниз, упав на захламленный край стола. Там, рядом с массивной механической клавиатурой, возвышалась стопка старых черных дискет формата 3.5 дюйма, хранивших архивы логов за прошлый год. Верхняя дискета в этой хлипкой башне была сдвинута в сторону буквально на пару миллиметров, предательски выступая за общий край и нарушая идеальную вертикаль геометрии.
Взгляд мужчины мгновенно заледенел, сфокусировавшись на этой ничтожной детали. Легкая, почти незаметная судорога пробежала по его впалым скулам. Он физически, до тошноты терпеть не мог хаос. Хаос был его личным, кровным врагом. Хаос порождал непредвиденные сбои на телефонных линиях, битые многотомные архивы, зависающие сессии и системные фатальные ошибки, уничтожающие дни работы. В этом несовершенном, грязном мире, где люди не умели правильно обрезать цитаты в сообщениях, писали чудовищным транслитом и плодили бессмысленный, нечитаемый текстовый мусор, он выстроил свой собственный, идеальный бастион абсолютного математического порядка.
Мужчина медленно протянул обе руки к стопке дискет. Его длинные, бледные пальцы с въевшейся в подушечки типографской краской от распечаток аккуратно легли на шершавые пластиковые конверты. Он маниакально, затаив дыхание, с точностью до ничтожной доли миллиметра выровнял края стопки, добиваясь того, чтобы она стала строго параллельна краю деревянной столешницы. Он провел пальцем по грани, проверяя работу. Только когда геометрическое совершенство было полностью восстановлено и хаос отступил на шаг назад, он удовлетворенно кивнул самому себе.
Пальцы с пулеметной, отработанной годами скоростью выбили в командной строке MS-DOS нужную длинную директиву. Запустился тоссер — бездушный, неподкупный и невероятно строгий таможенник его личного цифрового королевства. На абсолютно черном экране монитора бесконечным водопадом побежали стремительные белые строки системных логов.
Мужчина откинулся на спинку скрипучего стула и скрестил на груди руки, следя за бегом строк. Утренняя рутина состояла из двух четких этапов. В роли сисопа питерской ноды 2:5030/77 он отвечал за аппаратный и программный порядок: лично выверял синтаксис BAT-файлов, настраивал логику BinkleyTerm, конфигурировал тоссер FastEcho и правил таблицы маршрутизации для модема. Узел работал без сбоев, и сейчас требовалось лишь дождаться стандартных, предсказуемых отчетов о распаковке. Когда пакеты ложились в базу, наступала вторая фаза. В нескольких профильных эхоконференциях он носил статус модератора. Там предстояло вчитываться в свежие публичные треды и отлавливать нарушителей правил: вырезать километровый оверквотинг, пресекать оффтопик и наказывать пользователей, по недомыслию бросающих личный нетмейл в открытую эху.
* * *
Жесткий диск внутри системного блока издал громкий скрежещущий звук паркующихся магнитных головок. Тоссер завершил распаковку ночной почты. Бег строк прекратился, на черном экране застыл финальный лог обработки.
Алексей нажал клавишу со стрелкой вниз, прокручивая текстовый отчет. Ежедневная утренняя рутина — сканировать взглядом адреса узлов, закрученные маршруты и объемы переданных данных, выискивая ошибки форматирования.
Палец замер над клавиатурой. Взгляд вернулся на три абзаца вверх. Утилита буднично рапортовала об успешной распаковке входящего пакета. Отправитель: поинт 2:5030/77.777. Имя пользователя, вписанное аккуратной латиницей: «Illya».
Алексей нахмурился. Кружка дрогнула, толстое донышко глухо стукнуло о текстолитовую подложку стола. Он знал структуру своей сети наизусть. В публичном pointlist этот адрес отсутствовал, а в конфигураторе номер .777 числился как служебный alias для внутренних тестов. Пароля у записи не было. Никто не мог отправить письмо с этого адреса из внешнего мира.
Выйдя в командную строку, Алексей открыл директорию почтового клиента. Запустил минималистичный редактор и загрузил сухие логи BinkleyTerm. Если кто-то смог подделать заголовок и отправить письмо от имени закрытого узла, телефонная линия должна была зафиксировать входящий звонок.
В строку поиска легла системная метка — 03:14, время обработки аномального пакета. Алексей искал команду «RING» — системное уведомление о напряжении на порту модема. Искал «CONNECT» — подтверждение успешного рукопожатия удаленных систем.
Пролистав лог с трех ночи до четырех утра, он достиг конца файла, упершись в пустую строку. Ничего. В записях отсутствовали любые упоминания о дозвоне. Модем US Robotics не принимал внешний сигнал и не снимал трубку. Линия оставалась абсолютно мертвой в тот момент, когда почтовый сортировщик зафиксировал появление нового письма.
Алексей до хруста стиснул челюсти. Привычное техническое недоумение стремительно перерастало в паранойю. В безупречной, выверенной системе возникла логическая брешь. Пакет не проходил через телефонные провода АТС. Он материализовался прямо внутри герметичной базы ноды.
Алексей отодвинул кружку на самый край стола, подальше от клавиатуры. Началась фаза технического расследования.
Пальцы отбили команду запуска Norton Commander. Экран рассекли две синие панели. Тоссер уже переварил утреннюю почту, искать исходник в папке входящих не имело смысла. Алексей провалился в древо каталогов, открыв скрытую директорию резервного копирования, куда система сбрасывала отработанные файлы *.pkt. Там, среди десятков стандартных архивов, лежал пакет от адреса 2:5030/77.777 размером чуть больше двух килобайт.
Алексей навел на строку желтую полосу курсора и нажал F3. Встроенный просмотрщик вывел содержимое на экран. Сисоп ожидал увидеть мешанину псевдографики и битых символов, характерную для помех на линии, но сквозь строй служебных тегов проступал связный кириллический текст. «О досточтимая леди Ольга…» — гласила первая строка. Дальше тянулось длинное, витиеватое послание, завершавшееся высокопарной подписью: «Иллиэль».
Алексей убрал руки от клавиатуры. Телефонная статика и сбои модема не умели генерировать осмысленные предложения с именами. Теория о случайном линейном мусоре рассыпалась окончательно. Внутри базы лежало настоящее, кем-то осознанно написанное письмо.
Он переключил режим просмотра. Текст исчез, уступив место сплошному потоку шестнадцатеричного дампа: ряды цифр и латинских букв выстроились в ровные колонки. Теперь Алексея интересовала только структура пакета. Он вчитывался в заголовок, выискивая нестыковки в байтах, следы кривой сборки или маркеры того, что файл клеили кустарными утилитами. Временные метки создания, намертво вшитые в код, совпадали с часами MS-DOS до секунды. Пакет не путешествовал через транзитные узлы Фидонета. Он материализовался прямо здесь, на жестком диске, идеально имитируя легальное сообщение.
Алексей с глухим рычанием раздражения захлопнул окно шестнадцатеричного дампа. Открыл системные конфигурационные *.bat файлы. Он искал любые следы постороннего вмешательства: дописанные злоумышленником строчки кода, измененные пути к директориям, внедренные левые командные файлы маршрутизации. Он построчно, буква за буквой, вчитывался в команды, которые писал сам много месяцев назад.
Солнце за окном поднималось все выше. Его лучи начали пробиваться сквозь узкие щели в пыльных шторах тонкими, яркими столбами света, в которых лениво кружились пылинки. Утро неумолимо перетекало в душный день. Алексей потратил все эти часы на жесточайший, бескомпромиссный аудит собственной системы, не вставая со стула. Он перепроверил настройки защиты BinkleyTerm, выставив максимальный, параноидальный уровень детализации в логах. Он запустил тяжеловесную проверку на вирусы, заставив дисковод надсадно выть. Он искал малейшие признаки локального входа в систему — вдруг кто-то из его знакомых физически сел за его компьютер, пока он спал мертвым сном на продавленном диване в соседней комнате?
Но результаты были нулевыми. Он не нашел ни одной, даже самой незначительной логической ошибки. Никаких следов резидентного вируса, хитрого трояна или клавиатурного шпиона, затесавшегося в автозагрузку. Система была кристально чиста и стерильна.
Правый глаз Алексея под толстым стеклом очков начал мелко, нервно дергаться в такт частоте обновления монитора. Это была не просто усталость, это была чисто физиологическая реакция его аналитического мозга на крушение базовых устоев его мира, на потерю абсолютного контроля над тем, что он всегда считал продолжением своей собственной нервной системы.
Он тяжело, со свистом выдохнул спертый воздух, откинулся на спинку стула так, что старые пружины жалобно скрипнули, и тупо уставился на пожелтевший от времени пластик системного блока. В голове, привыкшей оперировать жесткими булевыми переменными «истина» или «ложь», образовался пугающий вакуум. Алексей понимал невозможность произошедшего: письмо оказалось внутри его дома, но входная дверь, обвешанная замками логов, никогда не открывалась.
* * *
Громкий щелчок проворачивающегося замка заставил Алексея вздрогнуть, вырывая из оцепенения. В тесную прихожую, тяжело шаркая стертыми подошвами кроссовок по дешевому линолеуму, вошел Денис — бессменная правая рука сисопа, человек, способный сутками молча копаться в чужом кривом коде, питаясь лишь воздухом, растворимым кофе и магией цифр.
В руках Денис очень бережно, словно хрустальную вазу, держал запечатанную в блестящую плёнку картонную упаковку совершенно новых дискет формата 3.5 дюйма.
Пройдя в комнату-аппаратную и бросив упаковку на край стола, он быстро окинул взглядом Алексея. Денис, несмотря на внешнюю отрешенность, умел читать эмоциональные состояния своего босса гораздо лучше, чем системные ошибки. Он мгновенно, за секунду оценил ссутулившиеся плечи, нервно дергающийся правый глаз и стеклянный, остановившийся взгляд, устремленный в одну точку на мониторе.
Алексей ничего не сказал вошедшему другу. Ему не нужны были лишние слова. Он просто медленно поднял правую руку и молча указал вытянутым, чуть дрожащим указательным пальцем на мерцающий экран монитора.
Денис подошел к столу вплотную. Алексей короткими, агрессивными комбинациями клавиш вывел на экран два открытых текстовых окна рядом, чтобы контраст был очевиден: в левом окне сиротливо светились пустые логи BinkleyTerm, кричащие о том, что звонка не было, а в правом — гордо красовалось системное уведомление о распакованном, полноценном пакете от загадочного «Ильи».
— Пакет есть. Звонка нет, — хриплым, сорванным от долгого утреннего молчания голосом сухо озвучил факты Алексей, не отрывая взгляда от экрана.
Денис засунул руки в карманы джинсов. Уголки его бледных губ поползли вверх, обнажая неровные, пожелтевшие от никотина зубы в снисходительной, почти отеческой усмешке. Для Дениса в этом мире принципиально не существовало мистики. Для него существовали только криво написанные драйвера устройств, перебои с электропитанием и аппаратные сбои контроллеров.
— Расслабься, Лёх, — скрипучим, спокойным голосом произнес Денис, опираясь худыми руками о край стола. — Это же призрачный пакет. Классика жанра. Обычный сбой протокола Zmodem при вечерней передаче файлов. У тебя же вчера сессия с Москвой отвалилась на девяноста процентах из-за помех на линии, помнишь? Система просто не зачистила хвост во входящем буфере мейлера. А ночью тоссер проснулся, подобрал этот битый кусок мусора и зачем-то попытался восстановить его как самостоятельный файл. Вот и собрал кривой заголовок из твоих же конфигов. Обычный глюк парсера, не более того. Выпей кофе и забей.
Алексей проигнорировал теорию про сбой. Короткая дробь по клавишам — и на весь экран поверх синих панелей развернулся шестнадцатеричный дамп файла.
Денис прищурился, наклонившись к мерцающему выпуклому стеклу. За склеенными синей изолентой линзами очков забегали светлые блики от строчек кода. Он считывал структуру. Длины полей совпадали. Временные метки стояли точно на своих местах. Идеально прописанные заголовки маршрутизации, чистые служебные области — ни одного случайного символа, ни одного артефакта, который неизбежно остался бы при восстановлении из битого буфера.
Снисходительная усмешка стерлась с лица Дениса.
Натужный свист старого кулера заполнил паузу. Сисадмин замер. Он напряженно прогонял в уме алгоритмы передачи данных, отчаянно пытаясь натянуть спасительную теорию о глюке на безупречную геометрию пакета.
Денис выпрямился. Он посмотрел на Алексея, затем перевел взгляд обратно на колонки байтов и молча кивнул на экран.
— Не мусор, — хрипло констатировал он. — И не хвост разорванной сессии. Заголовки валидные, всё строго по стандарту. Ни один парсер из каши такой идеал не соберет.
Этот файл не был глюком. Он был создан целенаправленно — и, судя по логам, появился прямо здесь.
* * *
Денис молча, словно боясь неосторожным словом нарушить хрупкое, трещащее по швам равновесие реальности, сделал небольшой шаг назад от гудящего компьютера. Он отвернулся от пугающего экрана с шестнадцатеричным кодом и с подчеркнутой, неестественной старательностью принялся распаковывать принесенные дискеты. Его пальцы нервно срывали с картона шуршащую прозрачную плёнку, сминали ее в комок. Ему жизненно необходимо было занять свои руки чем-то простым, понятным и стопроцентно материальным, чтобы не сойти с ума.
Его правая рука, чуть подрагивая, легла на клавиатуру. Светлая полоса выделения плавно заскользила по синей панели Norton Commander и намертво, словно прицел снайперской винтовки, зафиксировалась на безликом DOS-имени пакета вроде `3A2B1C4D.PKT`; настоящий адрес 2:5030/77.777 прятался уже внутри заголовка. Указательный палец Алексея медленно поднялся и завис в воздухе точно над клавишей F8.
Внутри сисопа в это мгновение развернулась безмолвная борьба. Все его базовые инстинкты системного администратора кричали об одном: уничтожить. Немедленно удалить аномалию, затереть скомпрометированные сектора и восстановить герметичность своей системы. В его мире правило было простым: если подозрительного файла нет — нет и проблемы.
Его палец дрогнул, мышечный рефлекс был готов опустить подушечку на кнопку и навсегда стереть странного «Илью» из цифрового существования. Секунда. Вторая. Третья. Тишина в комнате звенела от колоссального напряжения, Денис даже перестал шуршать упаковкой.
Но затем случилось нечто совершенно нетипичное для Алексея. Он медленно, тяжело дыша, убрал руку от функционального ряда клавиатуры. Он отрывисто нажал клавишу Insert, отменяя выделение файла. Желтый цвет текста исчез, название файла снова стало серым, окончательно слившись с остальной безликой массой архивных данных.
Он принял решение. Впервые за долгие годы он добровольно отказывался удалять то, чего не понимал. Он оставлял письмо этого невозможного, взявшегося из ниоткуда «Ильи» в базе данных своей ноды.
Им двигал сейчас не страх перед неизвестным, а исследовательский инстинкт, проснувшийся где-то на самых глубоких задворках сознания. Он захотел понять механизм этого чуда. Захотел дождаться следующего шага от неизвестного отправителя и посмотреть, как аномалия поведет себя в его реальной, работающей среде.
Алексей нажал F10. Синие панели Norton Commander схлопнулись, уступая место мигающему курсору командной строки MS-DOS. Пальцы привычно отбили короткое имя батника. Удар по клавише Enter передал управление мейлеру.
Экран заполнил текстовый интерфейс BinkleyTerm. Программа захватила COM-порт, считала конфигурацию исходящей почты и отправила модему строку AT-команд. Массивный блок US Robotics Sportster тут же отозвался металлическим щелчком реле. Динамик агрессивно зашипел, набирая номер. Начинался очередной сеанс связи. Обычная рутина, попытка достучаться до внешнего мира.
Только всё это больше не имело смысла. На жестком диске уже лежал файл от неизвестного «Ильи». Письмо, нарушившее законы физики и логики маршрутизации. Оно материализовалось внутри базы данных без звонков и соединений. Идеальная, герметичная архитектура ноды дала непоправимую трещину.
Алексей взял со стола белую кружку. Густой остывший кофе царапнул горло горечью. Он глотал темную жидкость, слушая, как модем яростно трещит в пустоту телефонной линии. Таймер энергосбережения сработал точно по расписанию — кинескоп пузатого монитора тихо пискнул и погас. В наступившем полумраке хрущевки осталось лишь тусклое отражение уставшего лица сисопа на выпуклом стекле.