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