В этом доме не могло быть ошибки. Просто не могло.
Она погладила корпус модуля, как старого друга, и включила терминал.
Программа отреагировала мгновенно – интерфейс загрузился чисто, без флуктуаций. Статус-светодиоды горели ровно, связь с резервным блоком – стабильна. Она открыла внутренний лог команд, проверила все системные уведомления за последние 48 часов.
– Чисто… – пробормотала Нэт, щёлкая вкладки одну за другой.
Пошла в код. Проверила последовательности, прописанные ею лично: логика температурных режимов, привязки к датчикам движения, корректировка влажности, реакция на дым. Всё на месте. Чётко. Как с лекций, как в проектной лаборатории, как в финальной версии, которую потом презентовали в министерстве.
Ни одной ошибки.
Она откинулась на спинку, задумалась. Потом снова наклонилась, открыла ещё глубже – скрипты автоматизации бытовых решений, голосовые команды, ручное управление. И снова – всё чисто.
– Да что за…
Тогда она сделала ход, который не использовала с момента защиты диплома: запустила тестирование всех команд одновременно. Полный симулятор, все системы параллельно.
Интерфейс на секунду замер, потом начал проигрывать действия – включение плиты, регуляция температуры, голосовые отклики, запуск робота-пылесоса, активация кофемашины.
И вдруг – сбой. Одна команда прервалась. В знакомом фрагменте её кода, написанном ею же. Она замерла.
Внутри блока появилась чужая вставка – вшитая, замаскированная, на первый взгляд – частью её структуры.
Нэт увеличила масштаб. Новая подпрограмма запускала максимальный нагрев любого подключённого прибора и одновременно отключала всю противопожарную систему.
– Вот дерьмо… – прошептала она.
Взгляд заскользил по строчкам. Чужой код был встроен с хирургической точностью. Почти невидимо. Словно кто-то намеренно подстроил сбой под её стиль, зная, как и где не оставить следов.
Нэт застыла. Пальцы всё ещё лежали на панели, но внутри будто что-то ёкнуло.
Это же был мой проект… До каждой запятой.
Во втором модуле – том, что из фуры, – всё оказалось не лучше. Нэт снова пошла глубоко, слой за слоем разбирая логи и поведенческие цепочки.
На первый взгляд – чисто. Но когда она сравнила стандартные паттерны с тем, что записал модуль за последние сутки, стало ясно: всё нарушено.
Фура сначала поворачивала, а уже потом запускала алгоритм определения поворота. Как будто ехала вслепую. Как будто сначала действовала, а потом думала.
Нэт нахмурилась. Открыла код. И снова – хирургически встроенный чужой фрагмент. Под её логикой. Как и в системе дома. Почерк разный, но принцип тот же.
Она запустила систему отслеживания, хотела вытащить источник. Но протокол безопасности компании отшвырнул её уже на третьем уровне айсберга.
– Да блин! – выругалась она и тут же набрала Джесса.
– Джесс, привет, – быстро сказала она, едва тот ответил.
– Кто это?.. А! Нэт! Привет-привет! – обрадовался он. – Посмотрела коды из дома и фуры?
– Ага. Там такое, Джесс… капец. Впервые вижу.
– Ага-ага, мне уже интересно. Давай, подключусь к тебе.
– Как?! У нас же охрана… служба безопасности всё гасит. Со спутников буквально.
– Нэээтииии, золотко! Какие спутники? – весело пропел он. – Мы сейчас с тобой фокус провернём из 2020-го – ты офигеешь, и СБшники тоже.
– Окей, я готова. Что делать?
Она тут же перевела звонок в видео.
– Возьми ту коробочку с усами. Чёрную. Да-да, эту. Теперь найди там шнур – допотопный такой, весь в пыли.
– Ага, вот он. Куда?
– Вот сюда воткни. Нет, не туда! Глубже. Да, вот туда! Зехехе… сейчас мы его найдёёём…
Джесс потер руки и припал к монитору.
– Джесс, это вообще что?