Вечером встречаюсь с Антоном у него дома, приношу распечатку журнала доступа, выложенную на кухонный стол между нами. За окном моросит мелкий осенний дождь, стёкла запотевают от разницы температур, а на плите тихо закипает чайник, забытый в процессе разговора.
— Смотри, вот время входа, — показываю пальцем строчку в списке. — Три часа ночи, IP из района новостроек. Дима как раз там живёт, я точно помню, он рассказывал про новую квартиру прошлой весной.
Антон изучает распечатку внимательно, переключается на ноутбук, начинает вбивать что-то в специальную программу для анализа сетевых логов.
— Давай проверим, к каким именно файлам был запрос, — говорит он, сосредоточенно щёлкая по клавиатуре. — Облачные хранилища обычно логируют не только сам факт входа, но и конкретные действия внутри аккаунта.
Через несколько минут на экране появляется список запрошенных файлов, отсортированный по времени. Курсор Антона медленно скользит по строчкам, каждая с точным временным штампом и названием файла. Смотрю на названия папок, узнавая знакомые имена — «Отпуск», «Работа», «Семья», а среди них отдельной строкой выделяется папка «Лето, пикник».
— Именно эту папку он открывал дольше всего, — замечает Антон, увеличивая масштаб таблицы. — Судя по времени сессии, скачал оттуда штук пятнадцать фотографий, причём выборочно, не всю папку целиком.
Открываю саму папку на своём телефоне параллельно, пролистываю фотографии с того летнего пикника — компания коллег на природе, шашлыки, гитара, солнечные блики на воде. Помню тот день хорошо, обычный субботний выезд командой после закрытия крупного проекта, шашлык жарил как раз Дима, вызвавшийся добровольцем у мангала. Смотрю внимательнее на конкретные снимки, отмеченные системой как скачанные, и с неприятным холодком понимаю закономерность — все они крупным планом лицо, анфас, разные ракурсы, разное освещение, будто кто-то специально собирал материал для последующей работы.
— Это же похоже на подборку для тренировки нейросети, — говорю тихо, чувствуя, как внутри собирается воедино последний недостающий кусочек мозаики. — Разные ракурсы одного лица, разное освещение, чёткие крупные планы. Практически идеальный учебный материал.
Антон молчит секунду, обдумывая сказанное, потом кивает медленно, соглашаясь с логикой предположения.
— Похоже на то, — говорит он серьёзно. — Такой набор фотографий действительно нужен для качественной замены лица в видео. Случайная подборка обычно разнороднее по качеству, а здесь явно отбирали целенаправленно.
Сижу неподвижно, пытаясь осмыслить масштаб происходящего — коллега, всегда казавшийся просто немного навязчивым, оказывается, месяцами собирал материал для создания фальшивого видео, способного разрушить свадьбу и репутацию одним щелчком мыши.
— Нужно как-то поймать его с поличным, — говорю решительно, чувствуя, как гнев начинает вытеснять первоначальный шок. — Просто подозрений мало, нужны железные доказательства. Иначе он опять всё свалит на случайность или совпадение, как уже пытался с чеком за бензин.
Антон задумывается, барабанит пальцами по столу, обдумывая варианты. Чайник на плите начинает тихо посвистывать, но никто из нас не встаёт его выключить, слишком поглощённые разговором.
— Есть один способ, — говорит он наконец. — Создадим на твоём облаке фейковую папку, назовём как-нибудь заманчиво — «Важные документы» или «Личное». Положим туда файл-маячок, отслеживающий любое открытие или копирование. Если Дима снова полезет проверять твоё хранилище, мы точно узнаем.
— А это законно вообще, такие маячки ставить? — уточняю, чувствуя укол сомнения посреди накопившейся решимости.
— Это твоё собственное хранилище, ты вправе делать с ним что угодно, — отвечает Антон уверенно. — Мы не взламываем ничего чужого, просто фиксируем действия внутри твоего же аккаунта. Юридически чисто.
— А если не полезет? — спрашиваю с сомнением. — Вдруг он уже понял, что рискованно продолжать.
— Тогда попробуем другой путь, — пожимает плечами Антон. — Но чутьё подсказывает, такие люди редко останавливаются вовремя, особенно если чувствуют безнаказанность после первого удачного захода. Азарт обычно оказывается сильнее осторожности, рано или поздно они допускают ошибку.
Соглашаюсь на план, хотя внутри одновременно борются азарт охотника и брезгливая тошнота от самой мысли расставлять ловушки коллеге, ещё месяц назад спокойно обсуждавшему со мной рабочие макеты. Антон открывает облачное хранилище на своём компьютере, создаёт новую папку с провокационным названием, загружает туда несколько случайных документов для правдоподобия, вставляет специальный код, отслеживающий любое взаимодействие с файлами. Работает быстро, уверенно, не сверяясь с инструкциями, будто проделывал подобное уже не раз в прошлом по совершенно другим поводам.
— Готово, — объявляет он, закрывая ноутбук. — Теперь остаётся только ждать.
Смотрю на экран погасшего монитора, представляя, как где-то в квартире на востоке города Дима сейчас, возможно, снова открывает моё облако глубокой ночью, не подозревая о расставленной ловушке, ожидающей его следующего неосторожного шага. Антон убирает распечатку в папку на полке, аккуратно, будто важный документ, а не свидетельство чужого предательства.
— Спасибо, что не отговариваешь меня от всего этого, — говорю тихо, глядя, как он закрывает шкаф. — Многие бы сказали просто забыть, отпустить ситуацию.
— Забыть — не то же самое, что решить проблему, — отвечает он серьёзно. — Иногда правильнее разобраться до конца, даже если это неприятно.
За окном дождь усиливается, барабанит по подоконнику мерным ритмом, а чайник на плите наконец замолкает, забытый обоими до самого конца разговора. Допиваем остывший чай молча, каждый погружённый в собственные мысли о завтрашнем дне, о возможной развязке, притаившейся где-то совсем близко.
Глава 14. Первое сближение
— Останешься доделать презентацию? — спрашивает Антон, заглядывая в переговорку, где я сижу уже третий час подряд, окружённая распечатками макетов.
— Похоже, придётся, — отвечаю, потирая уставшие глаза. — Клиент завтра утром хочет финальную версию, а у меня ещё половина слайдов не готова.
— Принести кофе? — предлагает он, задерживаясь в дверях. — Судя по количеству бумаг на столе, вечер предстоит долгий.
Киваю благодарно, и через пару минут он возвращается с двумя чашками, ставит одну рядом с моим ноутбуком, не задавая лишних вопросов про сахар или молоко — уже запомнил, что пью чёрный без добавок.
Офис постепенно пустеет вокруг нас, коллеги расходятся по домам один за другим, гаснут мониторы, затихают разговоры у кофемашины. Антон садится напротив, раскладывает собственные бумаги — тоже задержался ради какого-то отчёта, требующего завтрашней сдачи.
Работаем молча какое-то время, слышен только стук клавиш и редкое шуршание бумаг. За окном темнеет, город зажигает огни, а внутри переговорки становится по-особенному тихо и уютно, будто мы отгорожены от остального мира тонкой стеклянной перегородкой.
— Знаешь, у меня была девушка, — говорит Антон неожиданно, отрываясь от экрана, — года три назад. Долго встречались, даже жить вместе собирались. Купили вместе кофемашину, обсуждали планы на отпуск, всё было довольно серьёзно на тот момент.
Поднимаю голову, удивлённая внезапной откровенностью — обычно он не делится личным настолько свободно.
— И что случилось? — спрашиваю осторожно, боясь спугнуть редкий момент откровенности.
— Она не понимала моё увлечение работой, — Антон откидывается на спинку стула, взгляд устремлён куда-то в темноту за окном. — Считала, что я прячусь за код и мониторы вместо того, чтобы жить настоящей жизнью. Постоянно упрекала, что провожу вечера за отладкой вместо походов в кино или к друзьям. В итоге просто устала от постоянных претензий и ушла, оставив записку на холодильнике вместо разговора.
— А тебе действительно это интереснее? — уточняю мягко.