–Подождите, Оксана! – взмолился я. – Я все это на вашем сайте уже прочитал, мне бы контракт по форме 3 и давайте стандартную официальную часть пропустим. Мне Сергей Иванович Кожин уже все про вас рассказал.
–Если Кожин все рассказал, то зачем Вы пришли? Он же нас аферистами считает. – недоуменно спросила она.
–Он да. Я нет. Да мне, собственно, все рано, у меня свой интерес.
–Ну, тогда, давайте Ваши документы, я распечатаю контракт, – ответила мне Оксана, и я протянул ей для считывания свою универсальную карту.
Договор я читал внимательно, особенно то, что было написано мелким шрифтом, но никаких подвохов не заметил. Условия были следующие: я вношу депозит на сумму 500 кредитов и могу играть каждый день не более четырех часов, которые разрешает сама администрация Ожерелья.
Если за месяц я не нахожу ни одного бага в игре – контракт заканчивается, а я становлюсь беднее на пять сотен. Хотя бы один подтверждённый баг репорт и пять сотен возвращаются мне, плюс по третьему варианту договора c каждого баг репорта компания выплачивала мне примерно 10% от суммы, в которую оценивала данный баг репорт сам производитель игры. Там была целая таблица с условиями и размерами выплат, но меня это не особенно волновало – мне нужно было всего 10 баг репортов.
–Да, я все прочитал и меня все устраивает, – я закончил чтение и вернул распечатанный текст Оксане.
–Хорошо, тогда приложите Вашу карту сюда, – она дала мне экран терминала. – Все, вот это тоже Вам, – добавила она, передавая мне пакет с рекламой, договором.
–В конверте Ваша карта тестера, сотрите защитный слой, там ай-ди и пароль от Ожерелья Миров. Карта также служит пропуском в зал, где стоят капсулы и терминалы 3Д доступа. Все активно, можете начинать хоть сейчас. Вера Вас проводит.
Видно, Оксана как-то сигнализировала этой самой Вере, или она через комп видела, что появился новый клиент, но сзади меня раздался ее голос: – Пойдемте со мной.
Мы прошли внутрь.
– Слева и справа капсулы, дальше зал с терминалами, их всего 5, и обычно они всегда свободны. Вы в капсулу? – спросила она.
–Нет, мне сегодня только терминал и нужен, капсула подождет.
Оставшись один, я ввел свой ай-ди и пароль, надел шлем и начал процесс регистрации персонажа.
Терминал был удобной штукой, он как бы совмещал в себе работу через шлем виртуальной реальности и обычный монитор, что для тестера или разработчика было очень удобно, у нас примерно такие же устройства стояли на работе.
Выходные я провел не зря Перекопав огромный массив информации по Ожерелью, я определил первые точки для своей атаки. Сегодня я даже не собирался в саму игру. Хотя нет, один раз в нее надо было зайти, чтобы еще раз зафиксировать эти этапы. Пройдя стандартные заставки входа и регистрации, я оказался в локации для новичков.
Регистрация, в общем-то, соответствовала роликам, которые я до этого смотрел, но мне нужно было собственное ощущение от этого процесса. Поэтому я сразу же вышел из игры и удалил только что созданного персонажа.
На терминале я открыл собственную страницу в «облаке» со всеми своими инструментами и домашними заготовками. Теперь начнем уже по серьёзному.
Основываясь на том, что я видел при создании первого персонажа, и моей домашней работе в выходные, я сделал первое предположение: вход в систему делали не программисты Ожерелья. До этого я нашел в сети ролики, на которых был совершенно другой интерфейс входа и регистрации, более красочные и с большим количеством возможностей, но после бета-тестирования он пропал из игры и, судя по дате запуска игры, программу входа, регистрации и создания персонажа просто купили у сторонних разработчиков.
Это было совершенно нормально для виртуальных миров. У меня самого есть приятель, который занимается виртуальной анимацией, так последний раз, когда мы виделись, он жаловался на жизнь и рассказывал, что уже полгода анимирует двери для кого-то проекта. Даже зачитывал вслух отрывки из технического задания: «Замшелая, покрытая мхом и плесенью, тяжёлая деревянная дверь, открывающаяся с противным скрипом. Производит тоскливое впечатление».
«Я им уже три варианта отправил, а они мне в ответ пишут, что дверь недостаточно тоскливая…» – рассказывал мне мой приятель, и вопрошал: «Ну как я им более тоскливую нарисую???»
Дождавшись окончания заставки, я увидел экран выбора имени, расы и специализации моего будущего аватара. Я отключил шлем и передвинулся за терминал. Информацию в текстовое поле имени можно было ввести голосом или с виртуальной клавиатуры, но в режиме терминала можно было просто вставить уже скопированный текст. Этим я и занялся, но не вручную, так как текст для имени был длинный, и вариантов его было много, вернее 787. Именно столько на момент старта Ожерелья было вариантов взлома и уязвимостей при вводе подготовленного текста в обычное поле. Естественно, мой скрипт копировал в поля имени персонажа не его будущий ник, а часть короткой программы, которая должна была вызвать нестандартные последствия, причем для меня не было важно какие, главное – нестандартные.
Скрипт вводил один вариант за другим, но ничего не происходило, система молча отвергала все варианты одним и тем же сообщением: «Вы не можете выбрать *** в качестве своего имени».
Через минут 40 скрипт закончил свою работу, и ни один из вариантов атаки не прошел. «Ладно, надо налить кофе и идти дальше по плану,» – неудача нисколько меня не расстроила, и я отправился за кофе к автоматам, расположенным рядом с входом. Проведя картой по считывающему устройству и выбрав кофе, я задумался, к какому варианту из ранее запланированных перейти, когда услышал механический голос «Ваш напиток готов!».
Пораженный простотой подсказки, я уставился на автомат. «Ваш напиток готов!» – повторил он, не дождавшись от меня реакции в положенное время. Я забрал кофе и почти бегом кинулся обратно к терминалу.
Мне нужно было узнать, какие речевые синтезаторы продавались в то время, когда запускали Ожерелье! Дело в том, что голос, приветствующий игрока при создании персонажа, не управлялся и не генерировался искином, собственно еще не было самого соединения с игрой. А любой речевой синтезатор имел встроенный командный интерфейс.
Поиск дал 4 наиболее успешно продававшихся синтезатора на момент старта игры. Конечно, они могли и не подойти, но здесь вариантов нет, надо попробовать все.
Дальше началась рутина: я вводил ник персонажа, в конце добавлял служебные команды для звукового синтезатора речи и нажимал создать!
Мне повезло на четвертой попытке и я, услышав голос «Добро пожаловать в мир, герой, а-а-а-а-к-у-у-ыы-ыы» сорвал с головы шлем. Экран входа завис, а синтезатор речи застыл на одной ноте «ы-у-ы». Ни одно кнопка на интерфейсе не была активна. Если бы я сейчас был в капсуле, то лежал бы еще четыре часа под пронзительное завывание, не имея возможности отключиться, пока бы не сработал аварийный таймер.
Но зарегистрировать самостоятельно свой первый найденный баг я не мог. Экран входа завис, как на терминале, так в шлеме. Я сфотографировал на всякий случай экран терминала, закрыл все окна со своей облачной страницей и очистил историю поиска, а то мало ли что.
Проделав все это, я отправился обратно на ресепшен общаться Оксаной. Но ее не было, на ее месте сидела какая-то полная дама без бейджика.
–Простите, добрый вечер! – поздоровался я. – Мне бы баг репорт отправить.
–Отправляй, кто тебе не дает, – ответила дама, даже не посмотрев в мою сторону.-Вон бланк на стойке лежит, заполняй и опускай в ящик.
–Зачем какой-то бланк? Вы не поняли, у меня завис экран входа, и самостоятельно баг репорт я отправить не могу, прав администратора у меня нет, перегрузить железо я не могу, – тяжело посмотрев на меня, мадам поднялась со стула и, смерив меня презрительным взглядом, буркнула: – Ну пойдем, посмотрим на твою капсулу.
–Я вообще-то с терминала заходил, – поправил я ее и показал на единственный активный терминал.