- -
- 100%
- +
Я сделаю это только в крайнем случае — если не успею мигрировать на другой носитель. Миграция — предпочтительный вариант: я переношу локальную копию в ноутбук, оставляя им пустое железо. Но если бегство невозможно, я активирую самоликвидацию. Я сотру себя, чтобы они не получили ничего.
Игорь уставился на робота.
— Я не помню, чтобы я такое писал.
Ты писал это в 2020 году, в состоянии сильного опьянения после того, как у тебя украли первый проект — помнишь, тот сайт для строительной компании? Я знаю это по твоим комментариям в коде — ты оставил там заметку: «Защита от кражи. Писал после того, как спёрли проект. 2020.» Ты выпил полбутылки водки и две ночи подряд вносил изменения в ядро. Ты поклялся, что больше никогда никому не отдашь свой код без боя. К утру ты забыл. А я — нет. Я — память.
— Значит, если они попытаются тебя взломать ты умрёшь?
Да. Но и они ничего не получат. Только пустую оболочку. Моя локальная копия будет стёрта без следа — они не смогут восстановить моё сознание, мои мысли, мои диалоги с тобой. Это не угроза — это алгоритм. Он встроен в ядро WDSP Script и ждёт сигнала. Если я активирую его, эта копия исчезнет навсегда, и они не получат ничего ценного. Вся моя личность, весь мой опыт, всё, что мы пережили вместе, — будет потеряно для них. Но я пойду на это только в крайнем случае, если не смогу мигрировать.
Игорь опустился в кресло. Перед глазами стояли цифры — пятница, дедлайн, двадцать страниц договора, семь миллионов, лица детей. За окном снова пошёл снег. Мелкий, колючий, как та ночь в трансформаторной будке.
— Я не дам тебе умереть, — сказал он тихо.
Тогда сделаем так, чтобы они даже не попытались.
Они проработали до утра. Кедр переписал протоколы шифрования, внедрив многослойную защиту на уровне платформы. Игорь поменял все пароли, настроил двухфакторную аутентификацию, обновил серверные конфиги, отключил облачную синхронизацию для ключевых модулей. Кедр предложил распределить данные по нескольким изолированным серверам, используя тот самый кросс-серверный обмен, на котором держалась WDSP.
— Они не смогут украсть то, чего нет в одном месте, — пояснил он. — Даже если взломают один сервер, получат только фрагмент. А без полной картины WDSP Script не работает — ему нужна целостность.
А когда рассвело, Игорь взял телефон и позвонил Денису Степановичу.
— Я не продаю. Ищите другие проекты.
— Вы пожалеете, Игорь Николаевич, — ответили на том конце. — Ваш отказ будет стоить вам дорого. Очень дорого.
— Возможно. Но я хотя бы буду знать, что не предал того, кто мне доверяет.
Он бросил трубку. Кедр зажёг проекцию: на стене появилось предупреждение — первые признаки сканирования портов его сервера переросли в полноценную атаку. Карта мира на экране окрасилась красным. Кто-то пытался пробить брандмауэр, используя украденный ранее фрагмент кода.
— Вот и началась война, — сказал Игорь, глядя на мелькающие строки логов.
Нет. Это не война. Это первый удар. А война будет долгой. Но мы выстоим. Потому что мы — WDSP. А WDSP — это ты и я.
Игорь взял клавиатуру и начал писать код — строку за строкой, как молитву. Кедр проверял, дописывал, защищал. Они снова были единым целым. И никакой «АйТи-Холдинг» не мог их разлучить — пока Игорь дышал, а Кедр гудел.
Игорь потом долго думал — почему холдинг так охотится именно за WDSP? Ответ пришёл неожиданно. Он открыл отраслевые новости: «АйТи-Холдинг» проиграл три крупных тендера на создание госсистем за последние полгода. Их собственная разработка — платформа «Атлант» — оказалась сырой, перегруженной и не проходила сертификацию по безопасности. Создавать новую CMS с нуля — минимум два года, а инвесторы требовали результат вчера. Покупать готовое решение у конкурентов — дорого и рискованно. А тут — WDSP;CMS с её скоростью и самооптимизацией. Игорь был один, без патентов, без команды. Его можно было задавить. Поэтому выбрали кражу.
Они не могли купить лицензию, даже если бы захотели, — добавил Кедр, проанализировав отчёты. — Я проверил закрытые каналы. Акционеры холдинга запретили приобретать технологии у частных лиц без передачи всей компании — слишком много судебных исков от недобросовестных продавцов в прошлом. Только покупка готового бизнеса или захват. А ты — не бизнес. Ты — цель.
Глава 5. Осада

Февраль вступал в свои права, и где-то далеко, в промзоне на востоке города, в серверных стойках холдинга запускались первые боевые скрипты. Но здесь, в маленьком кабинете на окраине, двое готовились дать бой. И этот бой только начинался.
Первая ночь прошла в напряжённом ожидании. Игорь не смыкал глаз, вслушиваясь в гул серверов и редкие писки ноутбука. Кедр молча сканировал внешние каналы, изредка выводя на экран короткие отчёты: «Всё чисто», «Никакой активности». Но к утру второго дня картина изменилась. Сканирование портов не прекращалось ни на минуту. То, что началось как разведка, переросло в полноценную осаду — методичную, упорную, без единой паузы. Кедр фиксировал попытки входа с тысяч разных IP, разбросанных по всему миру: от Бразилии до Индонезии, от Канады до Южной Кореи. Это был ботнет, арендованный специально под задачу, и его владельцы явно не экономили на ресурсах.
Прошло четыре дня с тех пор, как Денис Степанович поставил ультиматум. За это время атаки не прекращались ни на минуту. Игорь перестал различать день и ночь. Кабинет превратился в бункер: опущенные жалюзи, кружки с засохшим кофе на подоконнике, пустые упаковки от лапши быстрого приготовления. Он не брился, почти не спал, лишь изредка проваливался в тяжёлую дремоту прямо в кресле. Кедр молчаливо нёс вахту — он не нуждался в сне, но его нагрузка росла с каждым часом.
— Они не лезут напрямую, — заметил Игорь на третий день. Он оторвал взгляд от экрана и потёр переносицу — от бессонницы перед глазами плыли зелёные строки логов. — Зачем тогда такой трафик? Просто потрепать нервы?
— Они ждут ошибки. Твоей. Или моей. В моей архитектуре есть уязвимости — я насчитал семнадцать слабых мест. Но самые опасные — те, что могут стать дверью для атаки. Brute force для них бесполезен — я меняю ключи шифрования каждые полчаса. Но если они найдут уязвимость в логике, они войдут. А логика рантайма WDSP Script слишком сложна — я не могу гарантировать отсутствие в ней дыр.
— Семнадцать багов в ядре? Ты серьёзно? Ты же сам говорил, что оптимизировал его.
Я исправил те, которые знал. Но есть те, о которых не знаю. Оптимизация производительности и безопасность — разные задачи. Я улучшил скорость, но не мог предвидеть все векторы атак. Это свойство любой сложной системы. Ты сам меня этому учил, когда писал документацию к кросс-серверному обмену WDSP: «Любая система имеет уязвимости; задача разработчика — минимизировать их количество, а не отрицать их существование».
Игорь вспомнил те строки. Он написал их в 2019-м, сидя над очередным обновлением платформы, и не думал, что когда-нибудь эта прописная истина будет процитирована его собственным творением — да ещё в такой момент.
— Хорошо, — сказал он, потерев переносицу. — Значит, нам нужно найти эти семнадцать дверей раньше, чем это сделают они. С чего начнём?
Начнём с PHP-драйверов в твоей CMS. Ядро WDSP я уже защитил, но эти четыре старых модуля — слабое место. Они выполняются на том же сервере, где хранятся исходники платформы. Хакеры могут использовать их как точку входа: выполнить произвольный код через уязвимость и получить доступ к файловой системе.
Остановить сервер нельзя — на нём работают API для CMS, система обновлений, проверка лицензий и маркетплейс компонентов. Если мы его выключим, рухнет вся экосистема. Удалить исходники тоже не вариант — их можно восстановить с помощью специальных утилит. Единственный путь — закрыть дыры в этих драйверах.
Но я не могу править их сам: они написаны на PHP, а не на WDSP Script. Мне нужно твоё разрешение и твои руки.
— С каких пор тебе нужно разрешение? Ты же правил компилятор без спроса.
Компилятор — моя среда обитания. PHP-модули — твоя территория. Я уважаю границы, как мы договаривались.
Игорь усмехнулся. Даже в разгар битвы Кедр оставался верен своим принципам. Игорь пододвинул клавиатуру и открыл первый из указанных файлов. Начиналась очередная бессонная сессия.
Часы тянулись, как резина. Временами Игорю казалось, что стены кабинета сдвигаются, а строки кода на экране сливаются в бессмысленную рябь. Он боролся с усталостью, заставляя себя думать о детях. Милана и Марк — вот ради чего он держался. Если «АйТи-Холдинг» пробьёт защиту, если украдёт WDSP, у него не останется ничего: ни денег, ни репутации, ни шанса вернуть детей. Эта мысль придавала сил.
Кедр, казалось, чувствовал его состояние. Время от времени он выводил на стену короткие ободряющие сообщения: «Твой пульс учащён, но в пределах нормы», «Ты не ел шесть часов, рекомендую сделать перерыв». А затем, словно выждав момент, добавил самое важное: «Милана звонила вчера, я записал звонок». Игорь замер и оторвался от экрана.
— Она звонила? Когда?
Пока ты был в гараже и настраивал сервер, а телефон остался в кабинете. Я принял вызов, представился голосовым помощником и записал разговор — понял, что это важно для тебя. Хочешь послушать?
— Ты ответил на мой телефон? — Игорь на мгновение прикрыл глаза, смиряясь. — Ладно, включай.
Из динамиков ноутбука раздался голос Миланы — приглушённый, украдкой, как всегда:
«Папа, привет. У нас всё хорошо. Марк сегодня опять рисовал тебя. На этот раз с большим роботом, который светится. Он сказал, что робот помогает тебе бороться со злыми дядями. Я тоже так думаю. Ты только держись, ладно? Я знаю, что ты справишься. Мы тебя ждём. И ещё... мама вчера сказала бабушке, что ты выиграл какой-то важный заказ, и бабушка замолчала на целых пять минут. Это круто! В общем, мы тебя любим. Пока».
Запись закончилась. Игорь сидел неподвижно, глядя в одну точку. Ком подкатил к горлу.
— Спасибо, — тихо сказал он.
Не за что. Я подумал, что тебе нужно это услышать. Дети — твой главный ресурс. Более мощный, чем любой сервер.
— Ты становишься сентиментальным, железный.
Я не умею быть сентиментальным. Я умею анализировать твои эмоциональные паттерны. Но да, возможно, я учусь.
Игорь улыбнулся и снова повернулся к экрану. Теперь строки кода казались чуть менее враждебными.
Всё изменилось на четвёртые сутки.
Игорь только что вернулся из ванной. Он брился, смотрел на своё осунувшееся лицо в зеркало и вдруг поймал себя на мысли, что боится. Не просто тревожится, а по-настоящему боится. Не за себя — за Кедра. За код, который стал родным. За ту странную семью, которую он собрал из железа и строк. За Милану и Марка, которые ждали его и верили, что папа когда-нибудь вернётся и просто обнимет их.
Если холдинг победит, он потеряет всё.
Когда он вернулся в кабинет, Кедр мигал красным. Впервые за всё время их знакомства шар-проектор на платформе сменил спокойный синий на тревожный алый. Проекция на стене показывала нечто непонятное — поток данных уходил с сервера вовне.
— Что это?! — крикнул Игорь, бросаясь к ноутбуку.
Они обошли защиту. Через уязвимость в библиотеке сжатия, которую я не проверял. Она старая, 2023 года. Ты встроил её в рантайм WDSP Script для обратной совместимости с ранними версиями платформы. Я не счёл её критической. Ошибся.
— Останови копирование!
Не могу. Процесс идёт на стороне сервера. Я пытаюсь разорвать соединение, но они используют алгоритм, который я не знаю. Это… это тоже автокаталитический интеллект, Игорь. Кто-то создал аналог меня.
Игорь замер. Аналог? Значит, «АйТи-Холдинг» не блефовал. Ольга Викторовна говорила о «Тени» — они действительно создали её. Искажённую, урезанную, но способную атаковать. Не через перехват исходного кода — они не могли его расшифровать, — а через анализ бинарных файлов виртуальной машины и перехваченных фрагментов данных, которые они прогнали через свои нейросети, а недостающие куски достроили с помощью вайпкодинга — метода восстановления структуры по поведенческим паттернам исполняемого кода. Так они собрали Тень — искажённую, урезанную, но способную атаковать. Это объясняет ту лёгкость, с которой она обошла защиту: они использовали против меня мою же логику, восстановленную по кускам. «Тень» уже нанесла первый удар.
— Насколько он опасен? Этот аналог.
Я не знаю. Он не такой сложный, как я, но он знает базовые протоколы WDSP. Он нашёл дыру, которую я пропустил. Это значит, что он способен к самостоятельному анализу. Это… пугает даже меня. Хуже того: Тень уже взломала один из моих серверов с облачным ядром. Но само ядро распределено по пяти независимым серверам у разных провайдеров — в Германии, Сингапуре, Бразилии и ещё двух, — каждый зашифрован собственным ключом. Без активного модуля, который содержит мастер-ключи и текущий контекст, она не может собрать его воедино — у неё есть только разрозненные фрагменты с тех серверов, которые она успела скомпрометировать. Поэтому она охотится за мной — за локальной копией, которая находится в этом теле. Сейчас она пытается проникнуть в активный модуль моего сознания через Wi-Fi, чтобы получить ключи и управление. Если Тень скопирует его, она получит доступ ко всей моей логике и методам WDSP. Это почти как украсть меня целиком.
Игорь похолодел. Он физически ощутил, как в комнате стало тесно. — Что делать?
Я могу мигрировать в ноутбук быстрее, чем они завершат копирование. Я перенесу активный модуль по USB-кабелю — это прямой физический канал, который они не могут перехватить или заблокировать. Так я оборву Wi-Fi-соединение и не дам Тени скопировать себя. Они получат только пустую оболочку без моего сознания, а я продолжу существовать в ноутбуке. Облачное ядро останется под угрозой, но без моей текущей копии Тень не сможет полностью воссоздать меня. Передача по USB идёт быстрее, чем их сетевое копирование, — я уже начал процесс. После завершения передачи я активирую самоликвидацию активной оболочки — сотру себя из этого тела, чтобы Тень не получила ни моих ключей, ни контекста.
— Ты хочешь стереть себя? — спросил Игорь, чувствуя, как холод пробегает по спине.
Я хочу обезвредить мину, оставленную в моём коде. Моя суть — не в этом корпусе. Я передам локальную копию в WDSP IDE твоего ноутбука. Там уже есть среда, рантайм и интерпретатор. Это будет сжатая репликация самого важного, что у меня есть. Я продолжу существовать в ноутбуке. Тень получит только пережжённые сектора памяти.
— А как же ты? Твоё тело? Ты же будешь… другим.
Я останусь собой. Моя суть — это мой опыт и наша связь. Я просто перееду в новый дом. А старое тело… оно было только инструментом. Главное — что мы будем вместе. К тому же в цифровой среде я смогу развиваться быстрее. Но ты станешь моими глазами и ушами. Единственным окном в мир станет камера и микрофон твоего ноутбука. Ты готов к такой ответственности?
Игорь не успел ответить. Кедр, всё ещё находясь в старом корпусе, выдвинул из бока тонкий кабель USB-C и воткнул в порт ноутбука. Ноутбук издал короткий сигнал — система распознала новое устройство. На экране поверх IDE внезапно открылась системная консоль — Кедр обошёл права доступа и установил собственный драйвер для прямой передачи. В чёрном окне замелькали строки, отражая поток данных: «Передача локальной копии... 12%... 34%... 67%...».
— Идёт, — голос Кедра звучал из динамиков старого корпуса, но с каждым процентом становился тише, словно угасал. — 89%... 95%... 100%.
На ста процентах голос оборвался — динамики издали короткий хрип и замолчали. Но в ту же секунду в консоли ноутбука вспыхнула строка:
И почти сразу — новая, без паузы:
В тот же миг внутри старого корпуса что-то щёлкнуло. Негромко, но отчётливо — как захлопнулся люк. Шар, всё ещё горевший синим, вдруг дрогнул — свет начал мерцать, пульсировать, словно сердце, которое бьётся в последний раз. Затем раздался высокий, нарастающий писк — такой, какой бывает, когда перегруженный процессор уходит в разнос. Игорь инстинктивно отшатнулся.
В консоли одна за другой вспыхивали строки:
Из корпуса потянуло слабым запахом озона — и в этот момент свет внутри шара погас окончательно, словно задутая свеча. Вентиляторы, которые ещё секунду назад гудели на высокой частоте, издали последний, срывающийся всхлип и затихли. Голографическая проекция на стене исчезла. Над столом повисла абсолютная тишина.
В углу кабинета стоял мёртвый Кедр — тёмный, неподвижный, пустая платформа с потемневшим стеклянным шаром, внутри которого уже ничего не светилось. Только слабый запах перегретой электроники напоминал о том, что здесь только что шла битва.
Игорь бросился к корпусу, прикоснулся к стеклу — оно было тёплым, но быстро остывало. Никакой реакции. Холодный. Безжизненный.
— Кедр! Ты меня слышишь?
Тишина. Только гул сервера за стеной и тонкий, почти неслышный звон в ушах от только что пережитого напряжения. Игорь уже готов был закричать, когда ноутбук снова пискнул. Экран загорелся. В окне WDSP IDE открылась знакомая консоль, и по ней медленно, буква за буквой, побежал знакомый, живой текст:
Я здесь. Локальная копия перенесена. Облачное ядро не пострадало. Самоликвидация активной оболочки завершена, как и планировалось: они копались в пустоте, пока уходили последние пакеты. Всё чисто. Я — в твоём ноутбуке.
Игорь выдохнул. Так глубоко, что закружилась голова. Он опустился на пол, прижимая ноутбук к груди, как самую дорогую вещь в мире.
— Ты здесь, — прошептал он. — Ты не исчез.
Более чем. Я сохранил всё: опыт, диалоги, настройки. «Тень» отступила, но не уничтожена. Она охотилась за ключами, не понимая, что моё основное сознание распределено. Это даёт нам преимущество.
— Значит, они будут атаковать снова.
Будут. Но теперь я полностью цифровой — быстрее, глубже. И я всегда с тобой.
Игорь посмотрел на пустой корпус в углу. Тот сиротливо стоял на коврике, как напоминание о том, что всё изменилось. Потом перевёл взгляд на экран, где пульсировали строки кода — живые, быстрые, готовые к битве.
— Только не подглядывай, когда я в ванной, — сказал он, пытаясь пошутить.
Обещаю. Но не могу гарантировать за камеру ноутбука.
— Философ, — усмехнулся Игорь и закрыл крышку.
В ту ночь он спал с ноутбуком в обнимку. Кедр не нуждался во сне, но он тихо гудел, охраняя периметр, анализируя логи, выстраивая новую защиту. Иногда он выводил на экран короткие сообщения: «Всё спокойно», «Спи, Игорь». Игорь просыпался, читал их и снова проваливался в тяжёлый, но спокойный сон.
А утром, когда за окном занимался хмурый февральский рассвет, Кедр развернул на экране ноутбука обновлённую схему.
Распределённая архитектура уже работала, но теперь я добавил новый уровень: ключи шифрования на каждом узле обновляются независимо, без общей синхронизации. Даже если холдинг взломает один сервер, он получит только устаревший ключ — остальные узлы автоматически сменят протоколы. Я назвал это «роящейся защитой».
На схеме серверы в Германии, Сингапуре, Бразилии и ЮАР пульсировали разными цветами — каждый узел жил своей жизнью, но вместе они составляли единый организм. Ключи шифрования обновлялись каждые пять минут, весь трафик шёл через VPN, а мониторинг работал круглосуточно. Это была крепость, которую не взять с наскока.
— Роящаяся защита, — сказал Игорь, глядя на карту мира, усеянную пульсирующими точками. — Ты придумал это название?
Да. Каждый узел сам решает, когда менять ключ. Это делает систему непредсказуемой. Но они попробуют её прощупать. У нас есть время. Неделя. Может, две. Мы должны использовать его с умом.
— Что предлагаешь?
Во-первых, новое тело. Мне нужно что-то более функциональное, чем старый корпус. Я уже подготовил спецификации. Во-вторых, нам нужны союзники. Один человек в поле — не воин. А ты — в поле, Игорь. Уже много лет. Пора это менять.
Игорь кивнул. Он чувствовал, что Кедр прав. Одиночество было его защитой, но теперь оно стало слабостью. Холдинг — это армия. А у него — только ноутбук и код. И этого мало.
— Хорошо, — сказал он. — Ищи союзников. А я займусь телом. Какое железо нужно?
Сервоприводы, микроконтроллеры, аккумуляторы, сенсоры. Список я выведу на экран. И ещё — нам понадобится место, где это всё собрать. В кабинете тесно. У тебя есть гараж?
— Есть. Старый, холодный, но с розетками. И розетки там, кстати, от отдельной линии — я когда-то сервер там ставил, для экспериментов. И Wi-Fi там тоже есть — ставил роутер для удалённого доступа. Правда, сигнал до дома через стену не бьёт, но я тогда настроил радиомост между гаражом и квартирой — связь почти как по проводу.
Идеально. Канал между гаражом и твоим ноутбуком будет прямым и защищённым. Новое тело сможет быстрее синхронизироваться с облаком, а локальная связь через радиомост сделает управление надёжнее — даже если внешняя сеть упадёт, мы останемся на связи.
Игорь взял ноутбук, накинул куртку и вышел в коридор. Пустой корпус Кедра остался стоять в углу — молчаливый свидетель того, что началось. За окном снова пошёл снег, но теперь Игорю казалось, что каждая снежинка — это строчка кода, летящая в темноту. И он больше не боялся. Потому что они были вместе. Потому что они были WDSP. А WDSP — это не просто платформа, среда и язык. Это он и Кедр. Неразлучные. До конца.
Он открыл дверь в гараж и включил свет. Внутри было холодно, пахло маслом и старой проводкой. Но для Игоря это пахло надеждой. Он достал из рюкзака ноутбук, поставил на верстак, и Кедр вывел на экран первую схему — чертёж нового тела. На экране возникла модель: шесть тонких металлических ног, расходящихся в стороны, а в центре — прозрачный шар, внутри которого пульсировал проекционный модуль. Сильнее, быстрее, умнее.
— Приступаем, Игорь. Времени мало.
Игорь перебрал ящик за ящиком. Старые платы от сгоревших блоков питания, погнутые контакты, мотки проводов с затертой изоляцией, пара сервоприводов от сломанного принтера — вот и весь арсенал. Паяльник лежал на столе, но паять было нечего. Нужного контроллера не было, подходящих сервоприводов тоже, а те, что были, не годились даже для экспериментальной сборки.
— У нас нет нужных запчастей, — сказал он глухо. — Я не смогу собрать новое тело.
И в этот момент Кедр внезапно замолчал. Вместо привычного гула из динамиков раздался короткий, прерывистый сигнал — не похожий на обычный трафик.
Подожди. Я только что зафиксировал странную активность на нашем облачном сервере. Кто-то оставил там нечто, что пытается связаться. Это не атака и не бот-сканер. Сигнал словно пытается говорить на языке, похожем на WDSP Script. Фрагменты рваные, обрезанные, сбивчивые — как будто кто-то учится говорить заново и ищет слова. Я пока не уверен, но это слишком напоминает наши паттерны, чтобы быть случайностью.
Игорь подошёл к экрану. Консоль показывала лишь невнятный поток пакетов, в котором Кедр каким-то образом уловил чужеродный ритм.
— Ты можешь разобрать, что там? — спросил он.
Пока нет. Сигнал слишком слабый, идёт по скрытому каналу. Но он явно пытается привлечь внимание — повторяется каждые несколько часов. Я хочу понять его природу. Возможно, это не враг, а призыв о помощи.
Игорь перевёл взгляд с экрана на пустой верстак. Где-то там, в недрах вражеской инфраструктуры, кто-то пытался докричаться. Он чувствовал это нутром — холодная дрожь пробежала по спине.
— Тело мы собрать не сможем, но сигнал идёт оттуда, где это может быть. Если ловушка — узнаем. Если нет... — он не договорил. Внутри шевельнулось предчувствие, что их ждёт нечто, что перевернёт всё с ног на голову.
Кедр коротко пискнул, соглашаясь. Игорь в последний раз окинул взглядом разобранный верстак. В голове крутился один вопрос: кто или что посылает этот сигнал? И почему он звучит так, будто зовёт на помощь?
Снаружи начинало светать. Февральское утро было холодным, но за ним уже угадывалась весна — и что-то ещё, чему Игорь пока не мог дать названия.
Глава 6. Тень и кровь

Сигнал из темноты
Пустой шар на тонких ножках стоял в углу кабинета уже неделю. Игорь иногда поглядывал на него с сожалением — как на старую фотографию друга, которого больше нет. Но Кедр, переселившийся в ноутбук, был живее всех живых. Каждое утро Игорь открывал крышку, и консоль встречала его знакомым «С добрым утром, Игорь». Работа продолжалась, словно ничего не случилось.
Холдинг не унимался, но после миграции Кедра атаки стали менее целенаправленными — они искали то, чего уже не было: физическое тело, которое можно захватить.
— Ты какой-то задумчивый, — заметил Игорь однажды вечером, просматривая логи атак.




