К книге
2:5030/Эльф. Нежданный коннектГлава 13. Полл в пустоту
29%
Глава 13. Полл в пустоту
13

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

Распахнутая настежь форточка не спасала от духоты — с улицы тянуло расплавленным асфальтом и гулом проспекта. Внутри квартиры висела густая смесь запахов жженой канифоли, разогретого текстолита и кисловатого растворимого кофе. Выпуклый экран монитора заливал лица бледным мерцающим светом.

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

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

— Ты не понимаешь, Лёха, — глухо, не отрывая глаз от курсора, пробормотал Денис. — В сети есть узлы, маршруты и физические кабели. Любой пакет, который попадает в твою ноду, обязан оставить точку входа.

Он с силой ударил по клавише пробела, делая отступ перед новой командой.

— Этот батник, — Денис кивнул на экран, где уже выстроилась логическая петля, — будет создавать тестовую netmail-служебку на 2:5030/77.777 и смотреть, что сделает тоссер. Для локального поинта внешнего дозвона быть не должно. Должна появиться локальная очередь, запись в логе и файл для поинта. Если статус есть, а файла нет — значит, его кто-то забирает не через обычную почту.

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

— Денис, остынь, — осторожно произнес он, глядя на напряженную спину друга. — Ты забыл, что мы видели вчера утром на станции? На моей линии в момент прихода его писем не было ни вызова, ни снятия трубки, ни занятия линии. Там не было физического коннекта. Кого ты собираешься поллить? Пустоту?

Денис резко отмахнулся, словно отгоняя назойливую муху. Он не спорил с распечатками АТС; он хотел поймать хотя бы локальный след внутри машины Алексея.

— Станцию мы уже проверили, — сказал Денис. — Теперь проверяем локальную обработку. Если тоссер честно кладет письмо для 77.777 в очередь, я это увижу. Если письмо исчезает между логом и файлом — это уже не АТС.

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

— Я соберу логи, — коротко сказал он. — Время, размер, каталог, контрольная сумма. Если там подделка, она оставит шов.

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

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

— Поехали, — выдохнул Денис и с силой опустил палец на пластик.

* * *

Черный экран мгновенно, без малейшей задержки, взорвался бесконечным водопадом бегущих белых строк. Батник заработал, безжалостно выплевывая диагностические netmail-пакеты в цифровое пространство.

Денис подался вперед, едва не утыкаясь носом в выпуклое стекло монитора. Его глаза лихорадочно бегали по строчкам, выхватывая системные ответы. Утилита сгенерировала первый служебный .msg и запустила упаковку. И система ответила.

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

— Local, — севшим голосом произнес Алексей. — Это нормально для моего поинта. Дальше смотри файл.

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

— Маршрут не важен, он локальный, — пробормотал Денис. — Важно другое: тоссер пишет «queued», а в каталоге поинта пусто. Счетчик дернулся, индекс базы дернулся, а самого пакета нет.

Он запнулся, осознавая страшную правду.

— Пакеты данных вообще не покидают пределов этой комнаты, — констатировал Денис, и в его голосе впервые прозвучали нотки растерянности.

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

Индикатор RD, отвечающий за прием данных, был мертв. Индикатор SD, сигнализирующий о передаче, тоже зиял глухой чернотой. Модем не подавал признаков жизни. Из его встроенного динамика не доносилось ни шипения открытой линии, ни характерного щелканья реле, ни переливчатого визга рукопожатия двух устройств. Тяжелая черная коробочка просто стояла на системном блоке, не участвуя в происходящем. Ни один байт не уходил в телефонную сеть.

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

Первая строка: локальный адрес компьютера. Вторая строка: обращение к тоссеру. Третья: письмо поставлено в очередь локального поинта. А дальше — пустой каталог, пустой файл, не совпадающий счетчик.

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

Денис нервно, ритмично застучал костяшками пальцев по краю деревянного стола. Этого не могло быть. Это была системная галлюцинация. Он потянулся к мыши, проверил конфигурацию COM-портов, убедился, что прерывания настроены корректно. Всё было идеально.

— Еще раз, — прошипел Денис, сбрасывая процесс.

Он открыл батник и быстро вбил модификатор размера пакета, принудительно увеличивая его до максимально возможных значений. Теперь он отправлял не просто легкие служебные запросы, а тяжелые, громоздкие netmail-пакеты, надеясь «забить» канал и вызвать ошибку переполнения буфера у невидимого противника.

Снова Enter. Снова короткий список строк. И снова тот же результат: тоссер отчитывался о локальной постановке, но на диске не оставалось нормального пакета.

— Они съедаются, — прошептал Денис, и его руки бессильно опустились на колени. — Пакеты физически съедаются каким-то неизвестным процессом, который засел прямо внутри нашей базы данных. На нашем собственном жестком диске.

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

* * *

Совершенно иная реальность царила по ту сторону невидимого барьера.

В просторных королевских покоях принца Иллиэля стоял вечный, пробирающий до самых костей холод. Руна Охлаждения Снежной Бури на панели «Бежевого Ящика» продолжала работать с устрашающей мощностью. Воздух в помещении был настолько выстужен, что каждое движение сопровождалось тихим хрустом замерзающей ткани, а дыхание мгновенно превращалось в густые, медленно оседающие на пол облака белого пара. Сам Бежевый Ящик скрылся под толстым, неровным слоем настоящего, искрящегося льда. Затейливые морозные узоры покрывали священную древесину, делая земную конструкцию похожей на ледяную глыбу, внутри которой тускло, сквозь толщу инея, пульсировали золотые жилы-шлейфы.

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

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

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

Конструкт вонзил жвалы в грань кристалла. Его материальная оболочка осталась неподвижной на Бежевом Ящике, а невидимая астральная проекция соскользнула в сияющий канал, устремляясь в недра земного компьютера.

Тень жучка проникла в самую структуру чужого жесткого диска. Эфирные лапки вцепились в магнитные дорожки, где формировались новые файлы. Жучок обнаружил скопление свежих цифровых сгустков и разинул полупрозрачную пасть.

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

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

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

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

Иллиэль находился здесь же. Он сидел за массивным дубовым столом, склонившись к бледному свечению экрана, и читал очередной земной архив эхоконференции. Вникая в локальные конфликты между модераторами и пользователями, принц изредка коротко усмехался.

Магический конструкт копошился на боковом интерфейсном кристалле, укрывшись за толстым слоем инея на краю системного блока. Иллиэль не смотрел на периферию. С головой уйдя в изучение странной культуры, эльф полностью игнорировал возню жучка и тонкий хруст перевариваемой информации.

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

* * *

В душной квартире Алексея напряжение достигло апогея.

На экране монитора снова и снова появлялись короткие строки проверки: создано, поставлено локально, файл не найден, счетчик изменен. Батник Дениса продолжал повторять один и тот же цикл, не получая нормального ответа.

И внезапно в какофонию гудения вентиляторов вплелся новый звук.

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

*Клац.*

Этот звук невозможно было спутать ни с чем. Для любого технаря девяностых он был страшнее похоронного звона. Это был так называемый «Click of death» — щелчок смерти. Резкий, тяжелый, ритмичный удар, похожий на то, как если бы кто-то внутри системного блока методично, с размаху бил крошечным стальным молотком по звонкой наковальне. Это звук считывающих головок жесткого диска, сорвавшихся с позиционирования и со всей дури бьющихся об ограничитель.

*Клац.*

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

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

— Стоп, — резко сказал Алексей, побледнев. — Это головки. Хард щелкает.

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

— Магнитные головки винта, — прохрипел Денис дрожащим голосом. — Они… они пытаются прочитать геометрию цилиндров.

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

— Он лезет не туда, — Денис наклонился к экрану, уже без злости. — Смотри: каталог пустой, а индекс меняется. Батник снова дергает одно и то же место, и диск начинает судорожно гонять головки. Отрубай цикл.

*Клац-клац-клац!*

Жесткий диск защелкал снова. Звук стал быстрее, агрессивнее, он сливался в угрожающую барабанную дробь. Металл бился о металл, предвещая скорую, неминуемую смерть всего архива, всей базы данных, всей кропотливо собираемой годами информации.

Денис прикусил нижнюю губу и замолчал. Он привык, что плохой лог можно разобрать, сбойный сектор — пометить, кривой батник — переписать. Здесь же проверка каждый раз возвращалась к пустому месту, а железо отвечало настоящим механическим ударом.

— Стоп. Стоп! — в панике закричал Денис.

Алексей нажал CTRL+C, не отрывая взгляда от системного блока.

Экстренное прерывание команды сработало. Выполнение вредоносного файла мгновенно оборвалось. На экране застыла последняя строка, завершающаяся мигающим, насмешливым курсором DOS.

Металлические щелчки умирающего диска мгновенно прекратились.

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

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

Он долго смотрел в черный экран, гипнотизируя пульсирующий курсор DOS. Затем вбил новую команду, разворачивая логи терминалки.

— Смотри, — голос Дениса прозвучал надтреснуто, без следа недавней самоуверенности. Обгрызенный ноготь ткнул в стеклянную выпуклость монитора. — Журнал чист. Ни единого сигнала RING. Ни поднятия трубки, ни коннекта. Модем спал.

Пальцы застучали по клавишам, вызывая системную статистику тоссера.

— Мейлер молчал. Но тоссер зафиксировал обработку. Время создания пакета и время его исчезновения совпадают секунда в секунду. Это физически нереально, Лёха. Даже локальный лупбэк дает задержку прерываний.

Алексей замер. Душный, пропитанный запахом канифоли воздух перестал поступать в легкие.

— Вирус-резидент в памяти? Перехватывает порты? — выдавил он.

Денис мотнул головой, до крови прокусывая губу.

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

Денис перевел тяжелый взгляд на US Robotics. Индикаторы приема и передачи оставались мертвыми.

— Он не хакер, — отчеканил Денис. — И он вообще не дозванивается к нам извне. Ни через телефонные линии, ни через магистрали.

— Тогда где он? — одними губами прошептал Алексей.

Денис сглотнул вязкую слюну, уставившись на гудящий металлический корпус системного блока.

— Этот Илья... эта невозможная тварь... — Денис закрыл лицо ладонями. — Он прямо сейчас живет внутри нашего собственного компьютера.

Предыдущая главаГлава 13 из 45Следующая глава