Як перемогти слоти
- Алекс — парубок, який розшифрував генератор псевдовипадкових чисел (PRNG) для слотів і заробив на цьому мільйони
- Шахрайство в ігрових слотах, HW-маніпуляція та спеціальні інструменти
- Слоти і програмні збої
- Додаток: Як працює алгоритм Алекса
У правильно розроблених слотах, які працюють зі справжніми генераторами випадкових чисел, теоретично неможливо перемогти. Але насправді існує багато задокументованих випадків, коли гравцям вдалося обдурити слоти і виграти суму набагато більшу, ніж припускали власники казино.
Більшість з цих трюків — нахабна крадіжка. У таких випадках використовуються інструменти для маніпулювання апаратним забезпеченням ігрового автомата, а саме диспенсером для монет або акцептором приміток. Деякі схеми потребували участі співробітника казино, який допомагав маніпулювати ігровим автоматом.
В інших випадках гравцям просто щастило. Їм вдавалося знайти збій в програмному забезпеченні і використовувати його на свою користь.
Однак, в останній час (2009-2018 рр.) самим цікавим випадком була історія російського хлопця з Санкт-Петербурга, який зумів успішно передбачити результати спінів на деяких моделях ігрових автоматів і використовував це в своїх інтересах, щоб заробити мільйони на казино по всьому світу.
Ця історія настільки фантастична, що я вирішив заглибитися в цю тему і провести більш глибокий аналіз методів, які він використовував.
Алекс — парубок, який розшифрував генератор псевдовипадкових чисел (PRNG) для слотів і заробив на цьому мільйони
Алекс працював позаштатним програмістом і хакером, коли російське казино найняло його для управління RTP деяких ігрових автоматів Novomatic. Щоб виконати цю роботу, Алекс повинен був детально дізнатися про устрій цих машин зсередини. Він також дізнався про PRNG (генератори псевдовипадкових чисел) і про те, як вони працюють, і як вони використовуються в ігрових автоматах. Коли він помітив, що ігрові автомати використовують небезпечний алгоритм PRNG, який можна передбачити, стався прорив.
Справжній RNG використовує електромагнітний шум для генерації абсолютно випадкових і зовсім непередбачуваних значень. PRNG працює інакше. Все починається з обумовленого значення, яке потім міксується з іншими даними для створення нескінченної серії значень. Вихідні значення PRNG здаються абсолютно випадковими і з першого погляду не піддаються прогнозуванню. Однак, якщо PRNG використовує слабкий алгоритм, і ви знаєте який, вам вдасться передбачити наступне випадкове число.
Ймовірно, Алекс помітив прогалини в алгоритмах деяких ігрових автоматів і вирішив використати це в своїх інтересах.
За кілька років йому вдалося закласти фундамент більш складної операції:
- Він реконструював кілька популярних ігрових автоматів.
- Він розробив алгоритм, який здатний визначити поточні параметри PRNG і передбачити результати майбутніх спінів на основі двох десятків спінів слота.
- Він розробив додаток для iPhone, який використовував передбачені результати, щоб повідомляти гравцеві, коли саме робити виграшний спін.
- Він найняв десятки агентів, яким було доручено обігравати казино по всьому світу протягом наступних 6-7 років.
За словами Алекса, за цей час йому та його команді вдалося заробити мільйони доларів.
Чи була система Алекса законною і морально прийнятною?
Техніка, яку він розробив, не включає ніяких заборонених маніпуляцій з ігровими автоматами. Це великою мірою контрастує з багатьма методами крадіжки, описаними далі в цій статті, при яких зламують апаратні засоби ігрових автоматів, з метою розподілити більше грошей, ніж передбачалося. Стратегія Алекса заснована на чистій математиці з його власних спостережень і, таким чином, може вважатися обґрунтованою і робочої стратегією «як перемогти слоти».
Багато експертів з азартних ігор (включаючи мене) вважають дії Алекса абсолютно чистими і морально прийнятними. Я б порівняв це з підрахунком карт в блекджек або з бонусхантінгом. Казино ставлять ці ігрові автомати добровільно, і це їх проблема, якщо хтось з головою може передбачити результати і скористатися цим.
Але казино (особливо традиційні) — це величезні компанії з великою кількістю грошей і міцними зв'язками з місцевою владою. Якщо казино помічають, що організована злочинна група використовує їх ігрові автомати як банкомати, зрозуміло вони не стануть сидіти склавши руки. Влада та адвокати казино в результаті знайдуть статтю, відповідну злочину цієї групи. А саме, «змова з метою здійснення шахрайства». Це призвело до арешту 4 агентів Алекса в Міссурі в 2015 році (які згодом були звинувачені та засуджені на 2 роки у федеральній в'язниці) [2].
Це стало переломним моментом в цій історії, після якого деякі агенти почали говорити більш відкрито про деталі їх схеми. Орієнтування на цю групу були розіслані службам безпеки казино по всьому світу, і незабаром відбувся ще один арешт в Сінгапурі [3].
Спроба Алекса працювати з виробниками слотів
Усвідомлюючи, що робота його агентів за цією схемою стала занадто ризикованою, Алекс вирішив в останній раз скористатися своїм ноу-хау, щоб заробити гроші. Він зв'язався з компанією Aristocrat — виробником ігрових автоматів — безпосередньо. Розраховуючи на 8-значну винагороду, він запропонував свої послуги щодо вдосконалення алгоритмів PRNG та усунення проблем безпеки. У той же час він пригрозив, що якщо Аристократ не прийме його пропозицію, він продасть цю конфіденційну інформацію своїм конкурентам. Однак Aristocrat відмовився грати в його гру, незважаючи на те, що їм були надані всі математичні дані про їх уразливості.
Коли Аристократ відмовився від пропозиції Алекса, той вирішив дати компанії ще один шанс і трохи підштовхнути її, опублікувавши подробиці своєї історії. Тоді він зв'язався з Бренданом Кернером, людиною, яка поділилася відомими фактами про цю історію в своїй статті.
Брендан погодився продовжити розповідь і опублікував ще одну статтю з безліччю нових деталей, які надійшли безпосередньо від Алекса. Якби цього не сталося, ви б не побачили мою статтю.
Масштаби цієї історії та наслідки
Існує досить багато доказів того, що Алекс зумів успішно застосувати свою стратегію на застарілому ігровому автоматі Aristocrat MK IV. Аристократ сам рекомендує своїм клієнтам замінити ці машини. Незважаючи на це, у багатьох казино світу як і раніше стоять тисячі цих машин. Проте, у більшості казино немає проблем з їх заміною при необхідності.
Алекс стверджує (і є деякі факти, що підтверджують його твердження [4]), що в 2009 році він почав розшифровувати PRNG деяких старих автоматів Novomatic. Однак дуже ймовірно, що Novomatic вдалося видалити цю уразливість з оновленням безпеки в 2011 році. Можливо, з 2013 року до цього мав якесь відношення патент Novomatic для Системи і методів централізованої обробки генераторів випадкових чисел.
Алекс також стверджує, що йому вдалося зробити те ж саме з деякими машинами, розробленими Atronic.
Безумовно, найсильнішим твердженням Алекса було те, що він знайшов аналогічну вразливість в автоматах Aristocrat Helix. Helix — одна з їхніх нинішніх моделей, тому, якщо Алекс не блефує, у Аристократа може виникнути ще більша проблема. Особливо якщо її неможливо виправити за допомогою оновлення безпеки або заміни якогось чіпа. Але, з іншого боку, Aristocrat — величезна компанія з річним доходом в 2 мільярди доларів і щорічним прибутком 500 мільйонів доларів. Саме тому вони, швидше за все, виживуть (з глобальною внутрішньою заміною HW і ударом по їх репутації, в гіршому випадку).
У всякому разі, галасу не буде. Навіть якщо Алекс вирішить опублікувати більш докладну інформацію про свої алгоритми, казино, швидше за все, вимкнуть усі згадані ігрові автомати, перш ніж звичайні люди зможуть використовувати цю інформацію в своїх інтересах.
Правдива історія або міська легенда?
Існує багато непрямих доказів того, що історія, описана Алексом, правдива. Влада не заарештувала б і не засудила його агентів в 2 країнах, якби це було неправдою. Novomatic не проводив би дослідження маніпуляцій з ігровими автоматами і не випустив би поновлення безпеки, якби це не було правдою.
Хіба у виробників ігрових автоматів немає відданих фахівців в галузі безпеки? Як ці величезні компанії можуть мати таке вразливе місце?
Скажу вам, це досить легко.
Я працював розробником програмного забезпечення протягом 10 років, і можу сказати, що загрози безпеці можуть бути легко втрачені з поля зору. Це навіть більш імовірно для нових і невідомих типів атак, подібних до цієї. Навіть якщо в той час відповідальним був менеджер з безпеки, він був навчений тільки пом'якшувати загрози, які були йому відомі в той час. Якби у команди розробників не було справжнього штатного експерта, який міг би прогнозувати появу нових вразливостей, тоді б цю загрозу PRNG можна було легко помітити.
Управлінцям ж було тільки потрібно, щоб PRNG генерував рівномірний розподіл згенерованих чисел. Саме це і роблять навіть найпростіші PRNG. Немає необхідності тестувати непередбачуваність (криптографічну безпеку).
Концепція PRNG звучить як щось невідоме для більшості «ділових людей». Адже вони лише дбають про кілька речей. А саме, коли ігровий автомат:
- не ламається,
- подобається гравцям,
- приносить гроші.
Крім того, програмне забезпечення в ігрових автоматах часто витримує кілька поколінь з незначними оновленнями. Навіщо міняти те, що працює без проблем протягом останніх 15 років, чи не так? Саме тому багато сучасних машин використовують частини коду з початку 90-х років.
Мій технічний аналіз системи Алекса
Я знаю, що ви хотіли б детально дізнатися, як працює система Алекса.
Саме тому я зібрав усі опубліковані дані та вирішив продемонструвати, як можна використовувати зворотну інженерію для прогнозування результатів в слоті з PRNG. Ознайомтеся з моїм технічним аналізом в кінці статті.
Шахрайство в ігрових слотах, HW-маніпуляція та спеціальні інструменти
Я вважаю, що система Алекса морально прийнятна і навіть легальна в деяких юрисдикціях. Однак, щоб «перемогти» слоти, використовуються не тільки такі методи. Раніше існувало безліч незаконних способів обдурити слоти.
Більшість зареєстрованих шахрайських схем для ігрових автоматів мають відношення до апаратних маніпуляцій та/або спеціальних інструментів, що використовуються, щоб «обдурити» ігровий автомат і заробити гроші.
Деякі з них повторювалися неодноразово, в той час як інші були одноразовою операцією. Єдине, що у них було спільного, це той факт, що вони працюють тільки з фізичними ігровими автоматами, які ви можете знайти в традиційних казино. Онлайн казино захищені, так як гравцям необхідно фізично наблизитися до ігрового автомату, щоб маніпулювати ним.
Крім того, оскільки казино постійно піддавалися нападкам шахраїв, вони почали впроваджувати подальші заходи безпеки та оновлення обладнання, які виключили можливість використання схем, про які я буду говорити далі.
Отже, давайте перейдемо до суті питання. Нижче представлені деякі способи обману ігрових автоматів, які використовувалися в минулому.
Підроблені монети або жетони
Перший описаний мною варіант шахрайства зі слотом дуже простий. Для цього знадобляться підроблені монети або купюри, які ігрові автомати приймають як форму оплати. Якщо ви можете виготовити щось, що, на думку машини, є «монетою», ви можете використовувати її, щоб заробити гроші.
Наведу вам один відомий приклад людини, яка дуже успішно використовувала цю техніку. Луіс Колавекіо — американський фальшивомонетник, також відомий як «The Coin». Зі своєю бандою він зумів виготовити значну кількість підроблених монет і жетонів для казино і використовувати їх, щоб заробити гроші в казино Атлантик-Сіті і Коннектикуту. Його спіймали, після чого він став досить відомим завдяки каналу The History Channel, який зняв про нього документальний фільм.
Монета на нитці (йо-йо)
Якщо ви грали колись з йо-йо, то знаєте, що він крутиться вгору і вниз, якщо їм правильно керувати. Саме це відбувається з монетою на нитці. Спочатку її вставляють в ігровий автомат достатньо, щоб машина зареєструвала її та почала гру. Потім вона витягується і використовується знову і знову.
Цей метод дуже схожий на підроблені монети, тільки усуває необхідність в великомасштабному виробництві підроблених монет. З монеткою на нитці спробувати обдурити казино може кожен. Звичайно, не всі так робили і не у всіх виходило.
Затерті монети
З кожним разом технологія оцінки достовірності монет стає все кращою, що робить трюки з підробленими монетами вже неактуальними. Ігрові автомати стали використовувати світловий датчик для реєстрації платежів і відстеження фальшивих монет.
Затерта монета була зареєстрована як справжня форма оплати, але впала в фізичний компаратор, який використовувався для виміру монет. Таким чином, монета була повернута гравцеві для повторного використання.
Якщо в ігровому автоматі встановлені вимоги до розміру, тоді разом з монетою вставляється інший об'єкт, який відповідає за розміром. У той час коли затерта монета випадає з автомата, другий об'єкт залишається всередині.
Гачки для одягу
Уявіть собі старі ігрові слоти, які виплачували монети кожен раз, коли гравець щось вигравав. Вони мали лічильник механічних монет, який використовувався для підрахунку монет, щоб виплачувати стільки, скільки виграв гравець.
У цій схемі гачок для одягу (або щось подібне за формою) поміщався поруч з лічильником монет, що впливало на точність підрахунку. Це означало, що слот виплачував більше, ніж передбачалося, що робило гру більш прибутковою в довгостроковій перспективі.
Двостороннє з'єднання
Двостороннє з'єднання являє собою інструмент, що складається з двох частин: вигнутого металевого стержня, який утворює коло (вгорі) та довгої гітарної струни або будь-якого іншого тонкого дроту (внизу).
Нижня частина вставляється в нижню частину машини, де вона вступає в контакт з внутрішньою електронікою автомата, створюючи деякий заряд. Верхня частина потім вставляється в слот для монет і цим замикає коло і змушує машину виплатити всі монети, які були у неї всередині.
Мавпяча лапа
Мавпяча лапа була створена легендою в мистецтві обману казино – Томмі Гленн Кармайклом. Але щоб дістатися до лапи мавпи, спочатку нам потрібно буде повернутися до двостороннього з'єднання. Кармайкл володів дуже прибутковою майстернею з ремонту телевізорів. Тому, коли його друг Рей Мінг розповів йому про двостороннє з'єднання, він відразу вирішив спробувати.
У нього непогано виходило, поки його не зловили і не засудили до 5 років позбавлення волі не тільки через шахрайство, але і попередні звинувачення. Після він зрозумів, що інструмент, який він використовував (двостороннє з'єднання), був уже досить добре відомий. Тому йому потрібно було придумати щось нове, щоб досягти успіху в справі обману казино.
Так він винайшов мавпячу лапу. Він придбав відеопокер машину і почав експериментувати. Кармайклу вдалося створити дуже просту, але функціональну конструкцію. Він прикріпив металеву струну до зігнутого металевого стрижня, який вставлявся у вентиляційний отвір ігрового автомата і крутив його, поки він не переключиться на відсік для монет. Потім він витягав його і отримував все, що було всередині машини.
Оптична чарівна паличка
Оскільки ігрові автомати стали більш технологічно розвиненими і безпечними, в них більше не використовуються механічні системи для підрахунку грошей. Вони почали використовувати оптичні датчики, через що більшість вищеописаних схем стали марними. Але Кармайкл пристосувався до змін і знайшов спосіб обдурити нові системи.
Він сконструював невеликий пристрій, який міг би «засліпити» оптичний датчик, не дозволяючи визначити, скільки грошей було вставлено в машину і скільки було виплачено. Оскільки за підрахунками машини правильна сума не була виплачена, вона продовжувала виплачувати все більше і більше грошей.
Струна від рояля
Цей метод почав використовуватися ще в 1982 році, коли барабани ігрових автоматів керувалися механічно. Струна від рояля вставлялася в обертові нутрощі слот-машини. Струна заклинювала годинник, що використовувався для вимірювання обертання колеса, а це означало, що гравці могли маніпулювати результатом спіна.
Група людей, які прокрутили цю операцію, зуміла виграти 50 000 доларів. Однак, протягом всього процесу вони були зняті на камеру і заарештовані пізніше. Їх успіх був недовгим, але їм дійсно вдалося змінити результат гри, використовуючи тільки струну від рояля.
Заміна чіпу
Деннісу Нікрашу вдалося зробити все інакше. Він також купив ігровий автомат, щоб грати в нього вдома. Він зрозумів, що чіп машини можна перепрограмувати і таким чином маніпулювати результатом гри. Потім перепрограмовані чіпи могли бути встановлені в ігрові автомати казино і використовуватися для виграшу великих грошей.
І він не став приховувати цю інформацію. Він замовив вантаж таких чіпів, перепрограмував і замінив на них чіпи в слотах. Так йому вдалося запустити успішну операцію, яка зробила його багатим. Природно, пізніше його заарештували (в 2004 році), а в 2010 році він помер.
Слоти і програмні збої
Хоча цей спосіб технічно не є обманом або шахрайством, я вирішив зробити його частиною цієї статті. Слоти програмуються людьми. А люди помиляються Помилка програмування може привести до збою програмного забезпечення, яке пізніше (свідомо чи несвідомо) може бути використано гравцями.
Існує багато задокументованих випадків збоїв програмного забезпечення, які призвели до величезних виграшів:
- У 2015 році 90-річна жінка з Іллінойсу виграла 41 мільйон доларів, граючи в ігровий автомат Miss Kitty. Казино відмовилося виплатити виграш.
- Чоловік в Австрії виграв джекпот у розмірі 43 млн євро. Однак, казино наполягало на тому, що у гравця випало тільки 4 з 5 символів, необхідних для запуску джекпоту. Тому його перемога не була виплачена, і замість цього йому запропонували 100 доларів і безкоштовну їжу.
- Жінці в Нью-Йорку вдалося зірвати вражаючий джекпот у розмірі 42,9 мільйона доларів. В автоматі був встановлений ліміт в розмірі 6500 доларів, і величезна перемога була ні чим іншим, як збоєм. Казино наполягло на тому, що гравець зможе отримати тільки 2,25 долара від її спіна.
І список можна продовжувати. Суть в тому, що великі виграші, які трапляються через збій програмного забезпечення, практично ніколи не виплачуються. І що ще гірше, деякі тіньові казино дійсно можуть використовувати це, щоб не виплачувати реальні перемоги, посилаючись на збої.
Однак збій програмного забезпечення не завжди призводить до джекпоту. Замість цього він може обмежити гравцеві потік виграшів або невірно прийняти гроші, вставлені в машину. Приклади такого роду можуть перебувати під радаром і використовуватися хитрими гравцями.
Але пам'ятайте, що випадок допомагає тільки підготовленому розуму. :)
Додаток: Як може працювати алгоритм Алекса
Почнемо з узагальнення всього, що ми знаємо про його стратегію:
- Алексу було потрібно близько 24 спінів для прогнозування майбутніх результатів.
- Агенти чекали слушного часу, щоб натиснути кнопку спіну.
- Брендану Кернеру вдалося відстежити походження алгоритму PRNG (з математичних доказів, наданих Алексом) в книзі «Мистецтво комп'ютерного програмування».
PRNG, який міг використовуватися в автоматах Аристократа
Найпростіший алгоритм PRNG, описаний в «Мистецтві комп'ютерного програмування», який дає задовільні результати, насправді досить простий:
RNG = (a * Попередній RNG + c) mod m
Цей алгоритм, відомий як лінійний конгруентний генератор (LCG), як і раніше використовується в якості алгоритму PRNG в багатьох мовах програмування (наприклад, Java).
Чи могли розробники ігрових автоматів Aristocrat просто використовувати алгоритм PRNG, що надається мовою програмування, яким вони користувалися? Або ж чи могли вони використовувати найпростіший PRNG, який відповідає вимогам однорідності?
Я думаю, можливо. Цей алгоритм за замовчуванням працює і відповідає критеріям однорідності випадкових чисел. І він відповідає всім критеріям, над якими працювали програмісти в технічних вимогах.
Як зламати простий PRNG
Тепер давайте припустимо, як Алекс міг скористатися цим алгоритмом.
1. Декомпіляція
Перший крок — дізнатися точні параметри алгоритму (параметри a, c і m). Це проста частина, так як ці параметри написані на кожному ігровому автоматі. Алекс просто повинен був прочитати двійковий код з пам'яті автомата і декомпілювати його. Це завдання, яке може зробити будь-який фахівець в галузі мікроелектроніки, якщо він оснащений належними інструментами.
Але знати тільки параметри a, c і m, недостатньо. При декомпіляції ви можете прочитати параметри всіх алгоритмів PRNG – навіть криптографічно засекречених. Щоб мати можливість спрогнозувати і використати послідовність RNG на реальному ігровому автоматі, розміщеному в казино, вам також потрібно знати ще поточне значення RNG.
2. Пошук поточного значення RNG
Алгоритм LCG PRNG зазвичай легко передбачуваний. Тобто, якщо ви знаєте 3 випадкових числа, ви зможете вирахувати параметри a, c, m і легко передбачити наступні числа в послідовності.
Однак це не та задача, з якою зіткнувся Алекс. Алекс вже знав параметри a, c і m з декомпіляції, але він не знав поточне значення стану RNG. Він зміг відстежити отримані випадкові числа побічно, спостерігаючи за положеннями зупинки барабанів в записаних спінах.
Ключовим моментом є те, що логіка ігрового автомата детермінована і програмується всередині. Тому її можна декомпілювати, проводити реінжиніринг і моделювати в іншому місці. Логіка гри зазвичай передбачає випадкове число і використовує деякі математичні операції, щоб визначити, де кожен барабан повинен зупинитися.
Барабани ігрового автомата зазвичай мають від 50 до 100 символів, три з яких відображаються на екрані. Комбінації можуть іноді повторюватися, а барабани мати різну довжину. Але, припустимо, що на кожному барабані є по 50 унікальних комбінацій. Випадкове число обирає одну з цих 50 комбінацій, тому просто глянувши на перший барабан при першому спіні, ви можете виключити 49/50 (98%) потенційних випадкових чисел.
Якщо в грі 5 барабанів, то в середньому тільки один з близько 312 млн випадкових чисел дає точно такий же результат, як і той, який спостерігається у гравця.
Якщо ви знаєте результат більшості послідовних випадкових (*) чисел, то ви дуже скоро отримаєте всього лише 1 початкове випадкове число, яке дасть бажаний результат для всіх спінів. Фактично, потрібна вам кількість спінів пропорційна довжині початкового випадкового числа.
Так що вам просто потрібно змоделювати всі можливі випадкові числа і вуаля ... ну, тільки не так швидко.
Якщо в ігровому автоматі використовуються випадкові числа, довжина яких дорівнює 64 бітам, то імітація їх усіх потребує занадто великої обчислювальної потужності (544 роки на моєму ноутбуці). Алексу все одно потрібна була ненавмисна допомога від розробників Аристократа. Я знайшов 2 речі, які могли допомогти Алексу:
- Використання занадто короткого (32-розрядного) стану RNG.
- Використання випадкового числа таким чином, щоб його можна було використовувати для пошуку поточного стану RNG.
1. Занадто короткий (32-розрядний) стан RNG
Автомати Aristocrat MK IV були розроблені на 32-бітному процесорі ARM 250. Якщо розробники слотів вирішили також використовувати 32-бітове значення випадкових чисел, тоді може бути лише 4 294 967 296 можливих станів RNG. Може здатися, що це багато, але сьогоднішні комп'ютери дуже швидкі, і цю кількість параметрів можна легко перевірити грубою силою (займає 4 секунди на моєму ноутбуці).
Однак, я вважаю цей варіант менш імовірним. Більш того, 32-розрядне випадкове число занадто коротке, щоб охопити всі можливі результати в деяких іграх (5 барабанів * 90 символів).
2. Використання випадкового числа «зручним для використання» способом
Давайте тепер припустимо, що існує 64-розрядний стан RNG. Як ви використовуєте 64-бітове число, щоб детерміністично зупиняти 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
Чи допоможе це вам вгадати поточний стан RNG? Насправді, так. Це вам дуже допоможе.
Тепер вам не потрібно моделювати всі можливі випадкові числа, а тільки ті, які закінчуються на RndEnd. Або, якщо більш конкретно, всі випадкові числа, які відповідають шаблону RndEnd + X * 50^5:
- 1 * 312500000 + RndEnd
- 2 * 312500000 + RndEnd
- 3 * 312500000 + RndEnd
- …
Тепер з 2^64 можливих значень (18466744073709551616) вам потрібно буде всього лише 59029581035. Обидва вони являють собою величезну кількість можливих значень, але, хоча на моєму ноутбуці симуляція першого займе 544 роки, симуляція другого займе всього 60 секунд. Це величезна різниця.
От і все. Тепер ви знаєте випадкове число, і можете передбачити майбутні спіни.
Справжній експлойт RNG, який використовував Алекс, може бути іншим, але я впевнений, що він має багато спільного з процесом, який я описав тут.
(*) Насправді Алекс не знав результатів послідовних випадкових чисел, але знав результати випадкових чисел, які були досить близькі в послідовності.
Агентам Алекса доводилося чекати певного моменту, щоб натиснути кнопку спіна. Це вказує на те, що автомат Aristocrat MK IV постійно генерує випадкові числа з певною частотою (в деяких юрисдикціях це є законодавчою вимогою). Коли гравець натискає кнопку спіна, поточне випадкове число використовується для визначення результату обертання.
Зверніть увагу, що частота генерації випадкових чисел також повинна бути запрограмована всередині ігрового автомата. Тому його також можна легко прочитати і передбачити після декомпіляції коду.
Припустимо, що випадкові числа в ігровому автоматі генеруються з частотою 100/сек. Гра в 24 раунди може зайняти близько 60 секунд, тому є близько 6000 випадкових чисел, з яких 24 були використані для розрахунку результату спіна. Потім завдання полягає в тому, щоб обчислити перше випадкове число, яке дає результат першого спіна, а також результати інших 23 спінив, коли вони циклічно відбуваються протягом наступних 6000 циклів. Цю симуляцію також легко змоделювати; для цього тільки потрібно в кілька разів більше часу (при правильній оптимізації).
(**) Щоб отримати ідеальну однорідність, вам доведеться викинути числа, які більше 2^64 – 2^64 mod (50^5).
Цікаві посилання для більш докладного обговорення:
- https://news.ycombinator.com/item?id=13579353
- https://www.schneier.com/blog/archives/2017/02/predicting_a_sl.html
- https://www.justice.gov/usao-edmo/pr/four-russian-nationals-indicted-fraud-charges
- https://www.wired.com/story/meet-alex-the-russian-casino-hacker-who-makes-millions-targeting-slot-machines/
- https://www.casino.org/blog/slot-cheats-that-work/