Право на сбой. Нулевой Игрок
Шрифт:
— И что это даст? — нахмурился Бастиан. — Игроки просто перебьют их у входа.
— Не-а, — я покачал головой. — Потому что их бегство активирует другой протокол. Протокол mass_event_npc_evacuation. Он был написан для глобальных катаклизмов. Когда он активен, все задействованные NPC становятся нематериальными и неуязвимыми для игроков, чтобы не перегружать сервер расчетами урона. Они просто пробегут сквозь игроков, как призраки. Квест будет невозможно выполнить. Он «зависнет». Игроки пожмут плечами, напишут в саппорт о «глючном квесте» и пойдут дальше. Никто ничего не заметит.
Я обвел их взглядом.
— Это будет наш тест. Наша
Я закончил. План был на столе. Асимметричный. Странный. И, возможно, единственный, который у нас был.
Элара молчала дольше всех. Она смотрела на пыльные схемы на бочке, и я видел, как ее мозг просчитывает риски и выгоды. Наконец, она кивнула.
— Низкий риск, — сказала она. — Низкие затраты. Потенциально высокий результат в виде бесценных данных о поведении системы. Как венчурная инвестиция — идеально. Я согласна.
Она посмотрела на Бастиана. Капитан все еще хмурился, его прямолинейная натура явно протестовала против такой «нечестной» войны. Но он посмотрел на меня, потом на Элару, и в его глазах появилось уважение. Он увидел логику.
— Это… необычно, — признал он. — Но я поклялся быть твоим мечом. Если ты говоришь, что битва должна начаться так, значит, так тому и быть.
Цель была поставлена. Неопределенность сменилась планом. Наша маленькая, безумная революция готовилась сделать свой первый, тихий шаг. И начать его предстояло со спасения кучки самых низкоуровневых, всеми презираемых существ в этом мире.
Глава 8
Гоблины тоже плачут
Я снова сидел в пыльном, вонючем подвале, но на этот раз он был не тюрьмой, а оперативным центром. Мое тело трактирщика сидело, прислонившись к бочке, с закрытыми глазами, изображая 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
Пакет ушел. Я затаил дыхание, сканируя все системные мониторы. Тишина. Ни одной тревоги. Ни одного красного флага. Мое вмешательство было настолько нелогичным и настолько не вписывалось в стандартные паттерны атак, что система его просто не заметила. Она была готова к взлому дверей, но не к тому, что кто-то просочится через вентиляцию в виде призрака.