Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Переписывание кода



Алекс с гордостью описывал усилия команды на этом этапе: «М ы были профессиональными программистами, и все сделали хорошо. Мы выяснили, как цифры кода программы превращаются в карты на табло игрального автомата, а затем написали небольшую добавку на языке С, которая делала то же самое», – говорил он.

«У нас был стимул для работы, и мы работали ночи напролет. Нам потребовалось около трех недель, чтобы досконально разобраться в том, как работает программа.

Для этого мы изучали текст, делали определенные предположения о его назначении, писали некоторые добавки к программе, помещали ее в R O M (компьютерный чип) и возвращали его в машину, а потом смотрели, что происходит. Например, мы написали специальную программу, которая располагала числа над изображением карт на экране. Так мы определили, каким образом программа оперирует с картами. Н а ш а работа ш л а по м е т о д у проб, ошибок, и постоянного анализа, достаточно быстро строки кода начали наполняться смыслом. Мы досконально разобрались в том, как числа в компьютерной программе превращаются в карты на экране.

Мы надеялись, что генератор случайных чисел будет устроен достаточно просто. Дело происходило в начале девяностых годов, и это было именно так. После небольшого анализа я понял, что мы имеем дело с генератором, который Дональд К н у т написал е щ е в 60‑е годы. Авторы программы для игрового автомата не стали изобретать велосипед, а просто скопировали в свою программу имеющиеся разработки по методу Монте‑Карло.

Мы точно установили, какой алгоритм использовали авторы программы в своем коде для случайной выборки карт; он назывался линейным регистром сдвига с обратной связью (linear feedback shift register) и это был очень хороший генератор случайных чисел (RNG)».

Очень скоро «взломщики» поняли, что в этом генераторе случайных чисел есть очень серьезная «прореха», которая существенно упрощает их задачу. Как объяснял Майк, «это был достаточно простой 32‑битный RNG, поэтому взломать его не составляло особого труда, а с помощью нескольких хороших оптимизаций стало совсем просто».

Итак, выдаваемые генератором числа не были абсолютно произвольными. Но, по мнению Алекса, есть серьезная причина для этого:

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

Одна вещь, которую дизайнеры не понимали, когда создавали свой автомат, заключается в том, что им и не нужен настоящий генератор случайных чисел. В любом покерном розыгрыше участвуют десять карт: пять сдаются сначала и еще пять для замены каждой из пяти по желанию игрока, В автомате эти десять карт выбирались, как десять последовательных случайных чисел в RNG».

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

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

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

Алекс приписывает это возбуждение «осознанию того, что вы умнее кого‑то и можете переиграть его. А в нашем случае еще и заработать немного денег».

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

Они были готовы начать проверку своего метода. Один из команды должен был начать игру и фиксировать набор карт, которые ему выбрасывал автомат – масть и старшинство каждой из пяти карт. Ларри вводил бы эти данные в их собственный компьютер; хотя их машина и не принадлежала к известным брэндам, это был очень приличный компьютер для их целей, поскольку его процессор был во много раз быстрее тех, что использовались в японских игральных автоматах. Всего за несколько мгновений он вычислял точный момент времени, который должен быть установлен в один из секундомеров Casio.

Когда отсчет времени заканчивался, человек у игрового автомата должен был нажать кнопку «Игра». Это должно было произойти предельно четко, в течение доли секунды. Но это не было слишком сложной проблемой, как объяснил Алекс.

«Двое из н а с какое‑то время занимались музыкой. Е с л и вы музыкант и у вас хорошее чувство ритма,то вы можете нажать кнопку в нужный момент в пределах десяти миллисекунд».

Если бы все сработало так, как предполагалось, то машина должна была выбросить игроку набор из пяти последовательных карт одной масти – королевский флэш.

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

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

Они победили автомат и сделали его своим рабом. Они бросили настоящий хакерский вызов и выиграли. Это знание могло сделать их богатыми.

Как прекрасно было мечтать об этом. Удастся ли им реализовать свои мечты в дебрях казино?





Дата публикования: 2015-01-10; Прочитано: 232 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...