18+
реклама
18+
Бургер менюБургер меню

Татьяна Кручинина – Купол особой важности (страница 6)

18

Илья сидел, откинувшись, и смотрел на экран, где перед ним лежала внутренняя вселенная пограничного робота — та, что пряталась под слоями прошивок, логов, временных меток. Для непосвящённого — хаос. Для Ильи — ландшафт, по которому он умел ходить вслепую.

Он начал с эталонной прошивки. Достал из архива официальную версию, которую «Заслон» сертифицировал для серии КА. Развернул на левой половине экрана. На правой — дамп памяти, пересланный Андреем. Два окна, два мира, которые должны быть идентичны.

Он запустил автоматическое сравнение.

Программа подсвечивала совпадения зелёным, различия — жёлтым, неопознанные блоки — красным. Зелёного было много. Жёлтого — меньше. Красного — почти ничего. На первый взгляд робот был чист.

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

Он отключил автоматическое сравнение и полез вручную.

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

Первый след он нашёл в разделе «поведенческая коррекция».

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

Он развернул модуль. Внешне — обычный код, с комментариями. Но одно место заставило его замереть.

Строка инициализации.

В стандартной версии: «init_correction (base, default)». Здесь: «init_correction (base, aggressive)». И дальше — блок кода, отсутствующий в официальной документации.

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

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

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

Он набрал Марину по защищённому каналу. Она ответила не сразу — пять гудков.

— Слушаю, — голос усталый, но цепкий.

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

— Откуда?

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

Марина молчала. Илья слышал её дыхание — ровное, спокойное, но он уже научился различать в нём паузы, за которыми следовало решение.

— Ты можешь доказать, что модуль внедрён намеренно?

— Могу. Код написан так, чтобы его не заметили при обычной проверке. Это маскировка.

— Кто автор?

— Пока не знаю. Но почерк знакомый. Я видел такие же обходные алгоритмы в проекте, который курировал… — он запнулся. — В общем, я помню этот стиль. Аккуратный, самоуверенный. Человек, который писал этот код, знал, что делает.

Он не договорил. Марина поняла сама.

— Перешли мне всё, что нашёл. И продолжай копать. Сколько таких роботов уже на линии?

— Я уже начал. Если модуль ставили системно, их может быть не один десяток.

— Найди.

Связь прервалась. Илья остался сидеть в темноте, глядя на экран.

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

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

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

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

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

---

Часть 1.5

Вечером база замолчала.

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

На стенах она развесила распечатки. Траектории робота, кадры с камер, схемы сенсорных блоков, фрагменты логов с пометками Андрея и Ильи. Каждый лист по отдельности был безобиден. Вместе они складывались в картинку, которая ей не нравилась. Слишком много «случайностей» в одном месте. Слишком много совпадений, пахнущих не хаосом, а чьей-то волей.

Марина стояла посередине комнаты, медленно поворачиваясь, заставляя себя смотреть на каждую распечатку не как на улику, а как на часть целого. Ложь была везде.

В слишком аккуратных следах робота, который шёл по прямой, хотя должен был колебаться. В слишком чистых логах, из которых вырезали секунды перед выстрелом. В смерти второго оператора, который «упал с вышки» ровно в тот момент, когда мог рассказать, что видел. В модуле, который Илья назвал «красивым» — словно восхищался работой убийцы.

Она подошла к столу, села. На столе лежала папка, оставленная Рыбаковым. Форма отчёта. Белый бланк с сухими графами: «характер инцидента», «причины», «рекомендации». Всё как всегда.

Она открыла папку, но не для того, чтобы писать. Чтобы вспомнить.

Было время, когда она заполняла такие же бланки и верила, что делает правильно. Проект «Барьер». Десять лет назад. Она была моложе, увереннее, верила, что система знает лучше. Ей дали задание: проверить протоколы безопасности новых боевых роботов, написать заключение. Она нашла несоответствия. Серьёзные. Те, что могли привести к трагедии. Но начальство сказало: «Мы всё проверили, это рабочие моменты, подпиши».

Она подписала.

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

В дверь постучали. Вошёл Рыбаков. В руках ещё одна папка — тоньше, чем на столе.

— Тут форма отчёта. Нас просили не затягивать.

— Что в этой?

— Рекомендации. Если вы напишете, что это единичный сбой, дальше всё пойдёт по отработанной схеме.

Он замялся, потом добавил тише:

— Нам всем сейчас нужна стабильность, товарищ Лобанова. Вы же понимаете.

Марина понимала. Она знала: если поставить подпись под словом «единичный», завтра у этого слова окажется много братьев.

— Садитесь.

Рыбаков сел у двери. Он смотрел на неё с надеждой, смешанной со страхом.

— Вы знали, что на роботах стоят нештатные модули?

— Я знал, что есть обновления. Но мне сказали, они прошли сертификацию.

— Кто сказал?

— Сервисный центр.

Марина кивнула. Знакомая схема: разделить ответственность, чтобы никто не нёс её целиком.

— Вы знаете, что Кравцов жив? Он видел, что произошло?

— Говорит, экран погас. А когда включился — робот уже стрелял.

— Вы ему верите?

— Он хороший парень. Не врёт.