Алексей проснулся с тошнотворным привкусом вчерашнего растворимого кофе во рту и тупой болью в висках. Утро выдалось душным и влажным, но он по давней привычке натянул любимый растянутый свитер с оленями. Колючая шерсть неприятно царапала шею и хотя бы этим возвращала к реальности: есть ткань, есть кожа, есть телефонная линия, которую можно проверить.
Они с Денисом медленно шли по длинным коридорам районной АТС. Линолеум, местами протертый до бетонного основания, скрипел под подошвами; стены были наполовину выкрашены облупившейся зеленой масляной краской. В нос ударила смесь канцелярской пыли, нагретой изоляции, парафина и слабого запаха озона. Длинные люминесцентные лампы под потолком мерцали, делая лица парней серыми и усталыми.
Денис шел чуть позади и то и дело тер глаза. Ночь без сна сделала его злым и рассеянным, но не лишила привычки считать: в пальцах он крутил блокнот с выписанными минутами появления писем и уже в третий раз сверял их с часами Алексеевой машины.
Алексей упрямо молчал. Он до хруста сжимал пластиковые ручки плотного полиэтиленового пакета с цветастым, кричащим логотипом какого-то западного бренда. Внутри пакета при каждом шаге глухо, многозначительно позвякивало тяжелое стекло.
Они остановились перед массивной дермантиновой дверью, обитой по краям потускневшими гвоздями с широкими шляпками. К двери была прикручена кривоватая, выцветшая пластиковая табличка с выгравированной надписью «Старший инженер смены». Алексей остановился, прикрыл глаза на секунду и сделал глубокий вдох, пытаясь унять предательскую мелкую дрожь в руках. Он коротко, но настойчиво постучал костяшками пальцев. Не дожидаясь приглашающего ответа, он нажал на тугую металлическую ручку и шагнул в тесный кабинет.
За массивным двухтумбовым столом, заваленным пожелтевшими журналами учета, пыльными папками и катушками припоя, сидела Зинаида Михайловна. Услышав скрип двери, она с явным неудовольствием оторвалась от колонок цифр, сдвинула очки на кончик носа и вопросительно посмотрела на вошедших.
Алексей, по-прежнему не произнося ни слова, подошел вплотную к столу и предельно бережно, стараясь не шуметь, поставил свой пакет на единственный свободный край столешницы. Затем он медленно, почти ритуально, словно совершая подношение древнему божеству связи, извлек оттуда большую плоскую коробку шоколадных конфет «Ассорти» и пузатую, солидную бутылку хорошего, выдержанного армянского коньяка. Стекло мягко, с приятным баритоном звякнуло о полированное дерево столешницы.
Зинаида молча посмотрела на подношение, потом на Алексея. Никаких лишних слов не требовалось. Женщина понимающе кивнула, смахнула коробку и бутылку в глубокий нижний ящик и задвинула его коленом.
— Говори, Леша, — ее голос был низким, основательно прокуренным и слегка сиплым. — Что у вас там опять стряслось на этот раз? Малолетние вандалы кабель в распределительном колодце срезали? Или экскаваторщик магистраль порвал?
Алексей тяжело оперся дрожащими руками о край ее стола, склонив голову. Ему было физически тяжело формулировать свою техническую проблему так, чтобы она не звучала как горячечный бред сумасшедшего, перечитавшего дешевой фантастики.
— Зинаида Михайловна, мне нужна выписка. Срочно. Отметки по моей абонентской линии, — Алексей говорил тихо, с расстановкой. — Входящие вызовы за ночь. Не стоимость, не номера для любопытства. Мне нужно понять: была ли посылка вызова, снятие трубки, занятость линии или попытка соединения с модемом.
Женщина недовольно нахмурилась, машинально поправляя железобетонную конструкцию своей прически.
— Леш, ну ты же прекрасно знаешь строгий регламент. Я не могу просто так светить чужие телефонные номера, это подсудное дело, если кто узнает. И потом, у тебя же там этот твой Фидонет бесконечный. У тебя телефонная линия вечно занята, часами гудки идут, там сам черт ногу сломит в этих логах. Распечатка будет длиной с километр.
Алексей подался всем телом вперед, его голос сорвался на отчаянный, глухой хрип.
— Мне не нужны все соединения. Только несколько узких окон. Ночь, с двух до половины пятого. Пожалуйста. Если там был звонок — я пойму, где искать. Если звонка не было, у меня очень плохие новости.
Денис, до этого момента молчавший у двери, достал из внутреннего кармана потрепанный блокнот в клеточку, перехваченный канцелярской резинкой. Он раскрыл страницу с выписанными временами и подошел к столу.
— Вот окна, — сказал Денис, показывая страницу. — Время ноды я сверил с контрольными часами. Погрешность пусть будет минута-две. Нам нужно сопоставить эти интервалы с отметками станции.
Зинаида посмотрела на трясущегося мелкой дрожью Дениса, затем снова перевела тяжелый взгляд на Алексея. Она видела этих компьютерных ребят часто, они всегда были странными, говорили на непонятном птичьем языке аббревиатур, но такими напуганными, потерянными и загнанными в угол она не видела их никогда. Тяжело вздохнув, она грузно, с оханьем поднялась со скрипучего стула, одернула строгую юбку и сняла с вбитого в стену гвоздя огромную, угрожающе звенящую связку ключей.
— Ладно. Черти полосатые. Пошли в машинный зал. Но только на пять минут, пока главного начальника смены нет на этаже. И если кто спросит, вас здесь никогда не было, а коньяк мне муж подарил.
Она решительно вышла из кабинета, громко звеня металлом ключей, и повела их дальше по тускло освещенному коридору, к массивным, выкрашенным серой краской гермодверям, за которыми скрывалось пульсирующее механическое сердце районной телефонной станции.
* * *
Когда Зинаида с натугой провернула длинный стержень ключа в скважине и с видимым усилием распахнула тяжелую, звукоизолированную дверь, на Алексея и Дениса мгновенно обрушилась плотная, непроницаемая звуковая стена.
Главный машинный зал АТС тянулся далеко вглубь здания. Ряд за рядом стояли высокие стальные стойки, упирающиеся под бетонный потолок, и весь зал жил непрерывным оглушительным грохотом.
Это было механическое биение тысяч шаговых искателей и реле, которые проворачивались, щелкали, замыкали медные контакты и соединяли голоса невидимых абонентов по району. Звук не имел ничего общего с шорохом компьютерных кулеров. *Щелк-клац-щелк, щелк-клац-щелк*. В таком шуме приходилось говорить почти криком. Воздух был сухим, пах перегретым металлом и пылью.
Зинаида, не обращая внимания на шум, провела их к учетному столу кросса в углу зала. На столе лежали толстые журналы, пачка бланков и контрольная лента с отметками по абонентским линиям. Женщина достала нужную папку, нашла номер Алексея по кроссировке и стала сверять ночные интервалы с бумажными отметками станции — теми самыми местами, где должны были отразиться посылка вызова, снятие трубки и занятие линии.
Спустя минуту томительного ожидания Зинаида оторвала узкую полосу контрольной ленты, подложила под нее чистый лист и начала выписывать нужные строки от руки. Карандаш стучал по столу почти так же резко, как реле за спиной.
Алексей и Денис склонились над листом, вглядываясь в цифры и короткие пометки. Грохот шаговых искателей вокруг мешал думать, но одновременно делал проверку почти физической: если звонок был, эта машина должна была его заметить.
— Диктуй первое окно! — прокричал Алексей, прижимая ладонь к виску, чтобы сосредоточиться на цифрах.
— Три четырнадцать, плюс-минус две минуты, — ответил Денис, сверяясь с блокнотом. — Тогда в базе ноды появилось первое длинное письмо от Ильи.
Алексей впился взглядом в шершавую бумагу. Указательный палец скользнул к нужному ночному окну. «Три двенадцать... Три тринадцать... Три четырнадцать... Три пятнадцать...»
В соседних строках лента честно отмечала обычную жизнь станции: короткий местный вызов раньше, занятую линию позже, обрыв после неудачного набора. А в промежутке, где письмо уже лежало в базе, не было ни RING, ни CONNECT, ни даже следа занятия пары.
Напротив нужного интервала не было ничего. Никаких входящих соединений. Никаких отметок занятия линии. Ни посылки вызова, ни снятия трубки, ни сбоя на кроссе. Бумага утверждала, что в этот момент телефон Алексея молчал.
Зинаида недовольно щурилась сквозь толстые стекла очков. Она вернулась к журналу, сверила номер пары, потом еще раз пробежала карандашом по контрольной ленте.
— Пусто! — прокричала она, перекрывая механический треск стоек. — Твой номер в эту минуту молчал. Ни посылки вызова, ни снятия трубки, ни занятия линии, даже попытки дозвона не зафиксировано!
Денис по-звериному оскалился. Его лицо мгновенно пошло красными, неровными пятнами от зашкаливающего нервного напряжения и паники.
Денис дерганым движением перелистнул страницу блокнота.
— Аппаратный сбой! Отметка не пропечаталась! — надрываясь, проорал он сквозь грохот машинного зала. — Давай следующее окно. Три сорок восемь. В это время свалился гигантский ночной трактат Арантира. Тяжелый пакет, такой объем информации физически не мог проскочить без долгого соединения!
Зинаида перелистывала журнал и прикладывала к ленте линейку, чтобы не сбиться в соседний интервал. Алексей, не выдержав напряжения в ногах, опустился на корточки прямо на грязный линолеум машинного зала. Он перебирал листы, выхватывая глазами нужные сочетания времени и номера.
Три часа сорок восемь минут. Пусто. Ничего.
Четыре часа пятнадцать минут. Пусто. Снова абсолютное ничего.
Зинаида, уже с тревогой поглядывая на бледных парней, проверила оставшиеся окна из блокнота Дениса одно за другим. Результат каждый раз был одинаковым.
Бесполезные логи.
Это странное словосочетание забилось в мозгу Алексея в такт ударам шаговых искателей. В домашней базе на его жестком диске лежали тяжелые текстовые пакеты, полные высокопарных эльфийских речей и странных рассуждений про «храмы-киоски». А здесь, на уровне медных проводов, реле и бумажных отметок, не было следа. Письма появились без звонка.
Денис замолчал на полуслове. Он аккуратно закрыл блокнот, потом снова открыл его на той же странице, будто ошибка могла прятаться между клетками бумаги. Ошибки не было. Старый пойнт и железячник в нем еще пытался найти нормальное объяснение — сбитые часы, чужой номер, плохую отметку на кроссе, — но каждый вариант рассыпался еще до того, как он успевал произнести его вслух.
Алексей очень медленно поднялся с колен, опираясь влажными ладонями о край стола. Лицо у него стало серым. Он сделал несколько коротких вдохов, не сразу попадая в ритм, и крепче сжал листы, словно бумага могла удержать остатки порядка.
Сисоп дрожащими, непослушными пальцами потянулся к лицу и медленно, словно во сне, снял свои тяжелые очки. Мир вокруг мгновенно расплылся в мутное, грохочущее серо-зеленое пятно. Алексей с силой, до появления цветных кругов, потер переносицу пальцами. Закрыл глаза.
Под ритмичные удары реле Алексей впервые позволил себе сформулировать вывод без спасительных оговорок. Сеть не могла существовать без медных проводов. Данные не могли появляться в базе сами. И все же листы в его руке показывали: в нужные минуты телефон молчал, а письма в базе были. Значит, контроль заканчивался не там, где он привык проводить границу.
* * *
Выбежав, почти вывалившись на высокое бетонное крыльцо серого здания АТС, Алексей и Денис оказались под прямыми, слепящими лучами утреннего солнца. Резкий контраст между мрачным, лязгающим механическим чревом телефонной станции и безмятежным, теплым, щебечущим летним днем был физически невыносим. Город жил своей обычной жизнью: вдали громыхал трамвай, кто-то смеялся, пахло нагретым асфальтом и тополиным пухом.
Денис достал из кармана помятую пачку дешевых сигарет, вытащил одну и долго не мог ровно поднести огонь. Прикурив, он сделал короткую затяжку, посмотрел на крыльцо под ногами и тихо выругался уже без злости.
— Это не линия, Леха, — сказал Денис. Голос у него был хриплый, но ровный. — По кроссу пусто. По станции пусто. Значит, либо у тебя на машине что-то пишет прямо в базу, минуя почтовый тракт, либо мы не понимаем, какой тракт проверять. АТС так не умеет.
Алексей стоял неподвижно, тяжело прислонившись спиной к шершавой, уже успевшей нагреться на солнце кирпичной стене. Он смотрел прямо перед собой, в абсолютную пустоту, не замечая прохожих. Бумажные распечатки с АТС были плотно, до состояния монолита, скручены в трубку в его побелевшем кулаке.
— Только не начинай про закладку в материнке, — тихо и очень устало сказал Алексей. — Сам себя услышишь — засмеешься. Автор аппаратной закладки не стал бы писать Ольге по ночам возвышенные стихи про коммерческие ларьки на Петроградке. И троян не рассуждает о философской роли модератора в сказке про Колобка.
— Тогда что это? — Денис посмотрел на сигарету, будто только сейчас вспомнил, что держит ее в руке. — Как этот Илья попадает в базу, если его нет в проводах?
Алексей медленно оттолкнулся от кирпичной стены и привычным жестом поправил съехавшие на нос очки. Паника отступила, оставив вместо себя усталую злость и желание разобрать невозможное по винтикам.
— Я не знаю. Мы с тобой оба ни черта не знаем. Наши с тобой хваленые компетенции, наши батники и наши умные книжки закончились там, пять минут назад, в этом машинном зале. Нам требуется помощь. Помощь специалиста совершенно иного, фундаментального уровня. Человека, который понимает саму физическую суть железа так, как мы с тобой никогда в жизни не поймем.
Спустя почти час изматывающей, тряской поездки на дребезжащем, душном трамвае, где пахло потом и нагретой краской, они стояли перед обшарпанной, продавленной дермантиновой дверью на последнем этаже блочной пятиэтажки в одном из самых глухих спальных районов города. Хозяин этой квартиры терпеть не мог незваных гостей, ненавидел звонки и предпочитал общество осциллографов обществу людей. Но для Алексея, которого он знал еще школьником с паяльником, всегда делалось исключение.
Дверь, скрипнув несмазанными петлями, приоткрылась, и они молча шагнули в тесную, темную каморку, которая меньше всего напоминала жилое помещение. Комната была забита приборами и деталями так плотно, будто хозяин годами менял свободное пространство на возможность что-нибудь измерить. Воздух стоял неподвижно, сизый от застарелого дыма и густого запаха канифоли и олова.
По всем углам комнаты, от пола до самого потолка, угрожающе громоздились тяжелые, выкрашенные в серый молотковый цвет металлические корпуса старых советских осциллографов, частотомеров и блоков питания, из которых, словно внутренности кибернетического монстра, торчали пучки разноцветных проводов с «крокодилами» на концах. На широком подоконнике небрежными кучами лежали куски зеленого текстолита, тяжелые мотки толстой медной проволоки, трансформаторы и целые горы рассыпанных, словно пестрое конфетти, резисторов, конденсаторов и транзисторов.
В самом центре комнаты, за огромным деревянным столом, под резким светом массивной настольной лампы с вмонтированной мощной лупой на шарнирном кронштейне, сидел седой мастер с руками человека, который полжизни держал паяльник чаще, чем вилку. На нем была потертая, выцветшая до неопределенного цвета брезентовая жилетка с невероятным множеством карманов. Из этих карманов во все стороны торчали щупы старых тестеров, пинцеты разных калибров, маленькие отвертки и скальпели. Его изборожденное глубокими морщинами лицо украшала густая, окладистая, совершенно седая борода, делающая его отдаленно похожим на Карла Маркса, который разочаровался в политэкономии и решил навсегда уйти в суровую радиотехнику.
Инженер даже не обернулся на звук открывшейся входной двери. Он был полностью поглощен процессом. Твердой, не знающей тремора рукой он с ювелирной точностью подносил дымящееся, раскаленное жало паяльника к крошечной, многоногой микросхеме. Крошечная капля серебристого олова ярко блеснула в свете лампы и идеально, филигранно легла на золоченый контакт. Лишь после этого, убедившись в безупречности пайки, ветеран-электронщик нажал на тугую черную кнопку выключателя, снял напряжение с паяльника, положил его на почерневшую деревянную подставку и очень медленно, со скрипом повернулся на старом вращающемся стуле.
Алексей молча, стараясь не задеть свисающие провода, подошел к заваленному деталями столу. Он аккуратно, освободив небольшое пространство от кусачек, положил пухлую пачку листов — распечатки логов Tosser’а. А затем, рука в руку, рядом с ними, он выложил скрученный рулон аппаратной ленты с телефонной станции — чистой именно там, где должна была стоять отметка вызова.
— Андрей Петрович, — предельно тихо, хрипло произнес Алексей, впервые нарушая густое молчание лаборатории и называя хозяина по имени. — Мне нужен ваш анализ. Пожалуйста, посмотрите на эту математическую нестыковку. Я... кажется, я схожу с ума. У меня рушится сеть.
Пока Андрей Петрович неспешно вытирал испачканные во флюсе пальцы о замасленную тряпку, Денис коротко изложил факты: время появления писем в базе, пустые отметки АТС, отсутствие входящих сессий и чистые логи мейлера.
Инженер не перебивал. Он только поднял один палец, заставляя Дениса сбавить скорость, и по очереди положил перед собой две распечатки: логи Tosser’а и ленту АТС без отметок вызова в нужном окне. Его мутноватые, но цепкие глаза двигались по строкам медленно, как щуп осциллографа по дорожке платы.
— Значит так, — наконец произнес Андрей Петрович хриплым, прокуренным голосом. — Телефонная линия у тебя в эти минуты мертвая. Ни звонка, ни снятия, ни занятия. А байты в базе есть. Вывод простой: это не телефон и не модем. И, Леша, это не твоя программа с ума сошла. Что-то пишет туда помимо нормального тракта.
Алексей побледнел еще сильнее.
— Снимай ноду с линии на несколько часов и тащи сюда системник, — сказал инженер и снова повернулся к паяльнику. — Предупреди своих, что сегодня у босса техработы. Будем смотреть, где у твоей реальности холодная пайка.