Литмир - Электронная Библиотека

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

Цель: деревня гоблинов в локации «Зеленая Долина». Задача: совершить акт божественного вмешательства с помощью SQL-инъекции.

На моем внутреннем интерфейсе вспыхнуло зашифрованное сообщение от Элары. Ник отправителя был E_CONOMIST, иконка — идеально сбалансированные весы.

Информационный шум в секторах 3 и 5 достиг пикового значения. Рыночные боты сошли с ума из-за ложной волны дефицита руды. Отвлекающий маневр Бастиана в Старом Квартале также привлек внимание патрулей. У тебя есть окно. Не про*би его.

Я усмехнулся. Элара даже в апокалипсисе оставалась бизнес-леди.

Постараюсь не обрушить ваши котировки, мэм, — мысленно отправил я ответ и полностью погрузился в debug_mode.

Реальность схлопнулась, сменившись неоновым ландшафтом чистого кода. Я больше не был трактирщиком. Я был навигатором, плывущим по рекам данных. Вокруг меня проносились гигантские массивы, похожие на небоскребы из света, — это были основные модули движка. Где-то внизу, как багровые прожекторы, рыскали системные «сторожа» — watchdog-процессы, выискивающие аномалии. Они были медленными и тупыми, рассчитанными на отлов простых ботов. Сегодня я был не простым ботом.

Я нырнул в один из транспортных потоков, маскируясь под обычный пакет данных о погоде. weather_update: clear_sky. Ничего подозрительного. Так, под прикрытием фальшивого солнечного дня, я добрался до нужного мне континента кода — сектора, отвечающего за low_level_mobs.

Это место было цифровыми трущобами. Старый, заброшенный код, написанный еще на заре проекта. «Спагетти-код», который никто не хотел трогать, потому что было проще написать новый, чем разгребать это наследие. Идеальное место для того, чтобы спрятать что-то. Идеальное место для уязвимостей.

Я нашел нужный мне блок. goblin_village_instance_013. Он был похож на заросший, грязный узел, от которого во все стороны тянулись кривые, неоптимизированные связи. Я осторожно «просканировал» его, ища вход.

Препятствие номер один. Даже здесь, в этих трущобах, сидел свой охранник. Простенький daemon, проверяющий целостность файлов. Если я изменю хоть один байт, он поднимет тревогу. Значит, прямой путь был закрыт. Но мне он и не был нужен.

Моя цель была не в самом коде деревни, а в том, как он общался с другими системами. Я начал анализировать его API calls. И нашел то, что искал. Старая, как мир, уязвимость в алгоритме поиска пути. pathfinding. Он принимал на вход данные об окружении, чтобы гоблины знали, где стены, а где — проход. Но у него не было нормальной валидации входящих данных. Дыра размером с Гранд-Каньон.

Я начал готовить свой «подарок». Небольшой, изящный скрипт. payload. Он не изменял код гоблинов. Он просто отправлял им ложные данные об окружении. Он должен был заставить их поверить, что в самой глубокой части их пещеры, там, где по скрипту был тупик, только что проснулся world_boss_ancient_dragon.

Внезапно мой датчик угрозы взвыл. Один из багровых прожекторов «сторожей» отклонился от своего маршрута и медленно двинулся в мою сторону. Это был не обычный watchdog. Это был патруль посерьезнее, возможно, среагировавший на фоновую активность Элары и Бастиана.

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

Я выждал еще несколько секунд, пока сердце не перестанет колотиться в горле. Пронесло. Окно возможностей сужалось.

Пора.

Я нашел процесс, отвечающий за вождя гоблинов. goblin_chieftain_Grolnok. Его цикл был еще проще, чем у его сородичей, но в нем была одна интересная функция: shamanic_vision(). Раз в сутки она генерировала ему «видение от духов предков» — случайную картинку из библиотеки ассетов, чтобы добавить немного колорита. Я собирался подсунуть ему свое «видение».

Я открыл соединение с pathfinding и одним точным, выверенным движением отправил свой payload.

cat | nc goblin_chieftain_Grolnok 1337

Пакет ушел. Я затаил дыхание, сканируя все системные мониторы. Тишина. Ни одной тревоги. Ни одного красного флага. Мое вмешательство было настолько нелогичным и настолько не вписывалось в стандартные паттерны атак, что система его просто не заметила. Она была готова к взлому дверей, но не к тому, что кто-то просочится через вентиляцию в виде призрака.

Успех. Локальный, хрупкий, но успех.

Я не мог видеть саму сцену, но я мог читать логи. Я подключился к процессу goblin_chieftain_Grolnok в режиме read-only и увидел то, что заставило меня улыбнуться.

Event: shamanic_vision() triggered.

Loading asset from library… ERROR: Asset not found.

Loading asset from alternative stream… SUCCESS.

Parsing data…

DATA_TYPE: TACTICAL_WARNING.

THREAT_LEVEL: APOCALYPSE.

SOURCE: ANCESTORS.

ACTION: FLEE.

Технология в моих руках стала для него магией. Мой пакет данных, моя иллюзия, была воспринята его простой программой как священное видение от духов предков.

Я видел, как его внутренний статус сменился с IDLE на PANIC. Как он активировал протокол, который никогда раньше не использовался: broadcast_emergency_to_tribe().

Я осторожно отсоединился и начал отступать, снова маскируясь под безобидный системный трафик. Напряжение отступило, сменившись волной чистого, незамутненного облегчения. У меня получилось. Я, бесправный NPC, только что взломал саму реальность, не написав ни одной строчки нового кода. Я не использовал силу. Я использовал знание. И это сработало.

Я вернулся в свое тело в подвале. Запах пыли и сырости показался мне самым прекрасным ароматом на свете. Операция «Гоблины тоже плачут» была завершена. Первая фаза.

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

Провал квеста

— Итак, чат, добро пожаловать обратно в «Секретные материалы Кайроса», — голос Логана, «Лормастера77», сочился профессиональным энтузиазмом, хотя сам он отчаянно боролся с зевком. — После ваших многочисленных сообщений о странном поведении городской стражи, ваш покорный слуга решил начать с самых азов. Мы отправляемся в Зеленую Долину, чтобы взглянуть на один из самых унылых квестов в истории ММОРПГ: «Нашествие гоблинов».

На основном мониторе Логана его персонаж, детектив в смешном плаще и шляпе, стоял у входа в непримечательную пещеру. Рядом топталась группа из трех игроков, чьи ники — «xX_Nagibator_Xx», «Viking_Beer» и «ElfPrincess69» — говорили сами за себя. Они были типичными новичками, жадными до легкого опыта.

— Цель нашего расследования, — вещал Логан, обращаясь к своей многотысячной аудитории, — проверить гипотезу. Если ИИ стражников действительно «поумнел», возможно, этот эффект затронул и других NPC. Например, наших сегодняшних зеленых друзей. Хотя, честно говоря, я ставлю на то, что мы просто потратим десять минут на скучный гринд. Но наука требует жертв!

Группа игроков, не обращая на Логана никакого внимания, ворвалась в пещеру. Их лидер, «xX_Nagibator_Xx», воин в mismatched-броне, грозно потряс своим медным мечом.

— Ща я им покажу нашествие! — проорал он в общий чат. — Готовьтесь, нубы, экспа сама себя не нафармит!

Логан вздохнул и последовал за ними, включив режим невидимости. Его задачей было наблюдать. Он комментировал происходящее с легкой иронией, ожидая стандартной, скучной зачистки.

— И вот наши герои входят в логово врага. Уверенность в их глазах может сравниться только с пустотой в их кошельках. Они ожидают встретить тупых, слабых мобов, которые будут покорно ждать своей аннигиляции. Классика жанра…

16
{"b":"948489","o":1}