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

Иногда игроки просто находили сбой в работе игрового автомата и использовали его в своих целях. 

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

Эта невероятная история заставила нас задуматься: а можно ли так же предугадать результат игры, чтобы обыграть автомат?

Как обычный парень обыграл слоты

Алекс — так зовут этого парня — расшифровал используемый слотами ГПСЧ (PRNG) и заработал на этом миллионы.

Одно российское казино наняло его для управления RTP игровых автоматов Novomatic, тогда он работал программистом и хакером. Алекс разобрался с ГПСЧ (генераторы псевдослучайных чисел) и с принципами их работы в автоматах. Он заметил, что эти слоты используют небезопасный алгоритм ГПСЧ.

Настоящий ГСЧ использует электромагнитные помехи для генерации случайных и непредсказуемых значений — здесь по-честному. 

ГПСЧ работает иначе. Здесь значения предопределены и создается иллюзия бесконечной серии значений — на первый взгляд кажется, что значения выпадают случайно. Но в работе ГПСЧ можно найти слабое место и предсказать следующее значение.

Именно так и поступил Алекс. За несколько лет он создал целую систему и собрал команду единомышленников — так они заработали больше миллиона долларов.

Возникает вопрос — насколько законно и честно поступил Алекс?

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

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

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

Эта история абсолютно реальна. В 2015 году четверых участников из команды Алекса арестовали за мошенничество (их раскрыло одно из обманутых им казино).  Сам Алекс решил уйти из этого бизнеса и занялся другим.

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

Схемы и инструменты манипуляций с игровыми автоматами

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

Вот несколько самых распространенных способов обмануть автомат:

  • Поддельные монеты или жетоны: нужны поддельные монеты или купюры, которые игровые автоматы принимают как форму оплаты. 
  • Монета на нитке (йо-йо): как игрушка йо-йо, момента крутится вверх и вниз, если им правильно управлять. Э Сначала её вставляют в игровой автомат достаточно глубоко, чтобы машина зарегистрировала её и начала игру. Потом вытаскивают и используют снова и снова.
  • Затёртые монеты: такая монеты будет зарегистрирована как настоящая форма оплаты, но будет возвращена игроку для повторного использования.
  • Струна от рояля: струна вставляется во вращающиеся внутренности слот-машины и заклинивает часы, используемые для измерения вращения колеса. Так игроки могут манипулировать результатом спина. 

Слоты и программные сбои

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

Есть огромное количество примеров, когда сбой приводил к огромным выигрышам. Например, в 2015 году 90-летняя женщина из Иллинойса выиграла 41 миллион долларов в автомате Miss Kitty. Но казино отказалось выплатить выигрыш.

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

Сбой нужно уметь распознать и применить в своих целях. И даже если получится заметить сбой, нет гарантии, что вы сможете на этом заработать и получить свои деньги.

Как Алекс взломал слоты

Простейший алгоритм ГПСЧ на самом деле довольно прост:

RNG = (a * Предыдущий RNG + c) mod m

Это линейный конгруэнтный генератор (LCG), он и сейчас используется как алгоритм генератора случайных чисел по умолчанию.

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

Как взломать простой ГПСЧ 

Первый шаг — узнать точные параметры алгоритма (a, c и m в формуле). Это не сложно, так как они указаны на каждом игровом автомате. Алекс просто просчитал двоичный код из памяти автомата и декомпилировал его. 

Далее чтобы спрогнозировать и использовать последовательность ГСЧ на реальном слоте, нужно знать текущее значение ГСЧ.

2. Поиск текущего значения ГСЧ

Алгоритм ГСЧ ГПСЧ несложно предсказать. Достаточно знать 3 случайных числа, чтобы вычислить параметры a, c, m и легко угадать следующие числа в последовательности.

Однако это не та задача, с которой столкнулся Алекс. Алекс уже знал параметры a, c и m из декомпиляции, но он не знал текущее значение состояния RNG. Он смог отследить полученные случайные числа косвенно, наблюдая за положениями остановки барабанов в записанных спинах.

У барабана слота 50 — 100 символов, и только три отображаются на экране. Комбинации могут повторяться, а барабаны иметь разную длину. Предположим, что на каждом барабане имеется по 50 комбинаций. Случайное число выбирает одну из этих 50 комбинаций, поэтому просто взглянув на первый барабан при первом спине, вы можете исключить 49/50 (98%) потенциальных случайных чисел.

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

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

1. 32-разрядное состояние ГСЧ

Если слот использует 32-битное значение случайных чисел, тогда может быть только 4 294 967 296 возможных состояний ГСЧ. Для современных компьютеров — это дело 5 секунд.

2. Использование случайных чисел для поиска текущего состояния ГСЧ

Если у слота 64-разрядное состояние RNG, то детерминистически останавливать 5 барабанов по 50 символов каждый можно следующим образом:

Pos1 = RND modulo 50

Pos2 = (RND / 50) modulo 50

Pos3 = (RND / (50*50)) modulo 50

Pos4 = (RND / (50*50*50)) modulo 50

Pos5 = (RND / (50*50*50*50)) modulo 50

Теперь у барабана есть только собственная часть случайных чисел, а между барабанами нет никакой связи. При условии, что случайные числа являются однородными, тогда существует единая вероятность любого возможного результата игры (**). Регулятор подтверждает.

Если есть значения барабанов, несложно вычислить конец случайного числа (RND mod 50 ^ 5):

RndEnd = pos1 + pos2*50 + pos3*50*50 + pos4*50*50*50 + pos5*50*50*50*50

Теперь вы сможете определить текущее положение генератора случайных чисел. 

Останется смоделировать случайные числа, которые соответствуют шаблону RndEnd + X * 50^5:

1 * 312500000 + RndEnd

2 * 312500000 + RndEnd

3 * 312500000 + RndEnd

Теперь из 2^64 возможных значений (18466744073709551616) вам нужно будет всего лишь 59029581035. На первый взгляд это очень много, но хороший компьютер справится с этой задачей за несколько минут. 

Вот и всё. Теперь вы знаете случайное число, и можете предсказать будущие спины.