Hur man slår slotspel
- Alex, killen som knäckte PRNG, algoritmen som används av spelautomater för att tjäna miljoner
- Spelautomatsbedrägerier, HW-manipulering, och speciella verktyg
- Spelautomater och buggar i mjukvaran
- Bilaga: Hur Alex algoritm kan tänkas fungera
Väldesignade spelautomater som använder sig av en riktig slumptalsgenerator är teoretiskt sett oslagbara. I själva verket finns det många dokumenterade fall där spelare har lyckats lura automaterna att betala ut betydligt mer än vad casinots ägare skulle vilja.
Många av dessa trick är regelrätt stöld. Vanligtvis används verktyg som manipulerar spelautomatens hårdvara, mer specifikt automatens myntinkast eller inmatning för sedlar. Några fall involverade även anställda på casinot som hjälpte till med att manipulera spelautomaten.
I andra fall har det istället rört sig om spelare som helt enkelt var ovanligt tursamma. De lyckades hitta ett kryphål i mjukvaran och använde det till sin fördel.
Dock måste det mest intressanta fallet på senare tid (2009–2018) vara en rysk kille från Sankt Petersburg, som lyckades förutspå resultatet från ett snurr på spelautomater av en viss modell, något som han använde till sin fördel för att mjölka flera miljoner från casinon runt om i världen.
Berättelsen är så otrolig att jag har valt att ge det hela lite extra tid, ett djupdyk för en mer genomgående analys av de tekniker som han använde.
Alex, killen som knäckte PRNG, algoritmen som används av spelautomater för att tjäna miljoner
Alex jobbade som frilansande programmerare och hacker när det ryska casinot ville anställa honom för att manipulera RTP för några spelautomater från Novomatic. För att klara av jobbet, var Alex tvungen att lära sig alla detaljer om hur dessa maskiner fungerar i grunden. Han lärde sig om PRNG (pseudo-slumptalsgeneratorer), hur de fungerar och hur de används i spelautomater. Det stora genombrottet skedde när han upptäckte att spelautomaterna använde sig av en osäker PRNG-algoritm som skulle kunna vara förutsägbar.
Verklig RNG använder sig av elektromagnetiskt ljud för att skapa helt slumpmässiga och oförutsägbara värden. PRNG fungerar på ett annat sätt. Den börjar med ett förutbestämt värde som sedan slås ihop med andra funktioner för att skapa en oändlig serie med värden. De utskrivna värdena från PRNG tycks vid en första anblick vara helt slumpmässiga och omöjliga att förutspå. Om PRNG använder sig av en svag algoritm som du känner till, så kan det vara möjligt att förutspå det kommande slumptalet.
Alex hade uppenbarligen noterat att algoritmerna som användes av spelautomaterna var svaga, och bestämde sig för att använda detta till sin fördel.
Under de kommande åren lade han grunden och förberedde sig inför vad som skulle bli en betydligt mer sofistikerad verksamhet:
- Han demonterade flera populära spelautomater.
- Han utvecklade algoritmer som kunde räkna ut de aktuella parametrarna för PRNG och förutsäga utfall för framtida snurr, baserat på drygt två dussin snurr på en spelautomat.
- Han utvecklade en applikation till iPhone som använde sig av de förutspådda utfallen och som berättade för spelaren exakt när det var dags att trycka på knappen för att vinna.
- Han anlitade tiotals personer vars uppgift blev att traska runt på golvet och mjölka casinon runt om i världen de kommande 6–7 åren.
Alex påstår att han och hans team lyckades tjäna flera miljoner dollar.
Var Alex system lagligt och moraliskt försvarbart?
Tekniken som han utvecklade innehöll ingen otillåten manipulering av spelautomater. Något som är en rejäl kontrast till många av de stölder som finns beskrivna längre ned i artikeln, tekniker vars ändamål var att lura spelautomaternas hårdvara att betala ut mer pengar än de skulle. Alex strategi grundade sig på matematik och egna observationer, något som därför borde ses som en legitim och tillåten strategi för att "vinna på spelautomater".
Många experter (jag själv inräknad) anser att de strategier Alex använde sig av var helt legitima och moraliskt acceptabla. Jag skulle jämföra det med korträkning i blackjack, bonusjakt eller betting när du har en fördel. Casinon väljer själva att ha dessa spelautomater på golvet, det är således deras problem om någon är smart nog att förutspå resultaten och använda det till sin fördel.
Casinon är dock (speciellt landbaserade) enorma företag med en hel del pengar samt starka band till de lokala myndigheterna. När casinon insåg att det fanns en organiserade grupp som använde spelautomaterna som bankomater, råder det ingen tvekan om att de drog lite trådarna. Myndigheterna och advokater som representerade dessa casinon, lyckades till slut hitta ett brott som passade in på det gruppen höll på med. Mer specifikt, "konspiration för att begå bedrägeri". Detta ledde i sin tur till att fyra av Alex medhjälpare arresterades i Missouri år 2015 (och senare dömdes till 2 års fängelse) [2].
Detta var en brytpunkt i berättelsen, där några av hans medhjälpare började prata mer öppet om detaljerna kring deras system för att mjölka spelautomater. Gruppen hade sannolikt blivit kända hos de flesta säkerhetsansvariga på casinon runt om i världen, och ytterligare arresteringar gjordes i Singapore [3].
Alex försök att arbeta tillsammans med spelutvecklare
Alex förstod snart att det började bli alldeles för riskabelt att fortsätta utnyttja systemet, både för sina medhjälpare och sin egen del. Han bestämde sig för att försöka använda sin kunskap och tjäna pengar på annat håll. Han kontaktade Aristocrat – utvecklaren bakom de spelautomater han hade lyckats knäcka – direkt. Han hoppades på en åttasiffrig belöning, och erbjöd sina tjänster för att förbättra spelautomaternas PRNG-algoritmer samt åtgärda alla säkerhetshål. Samtidigt som han hotade med att sälja all den känsliga informationen till Aristocrats konkurrenter, om de skulle välja att tacka nej till hans erbjudande. Aristocrat vägrade att spela hans lilla spel, trots att han hade delat med sig av alla de matematiska detaljerna gällande spelautomaternas sårbarheter.
När Aristocrat nekade erbjudandet från Alex, valde han att ge det hela en sista chans. Han tog det ett steg längre genom att publicera delar av sin berättelse. Han kontaktade Brendan Koerner – en person som redan hade skrivit en hel del om det här i denna artikeln.
Brendan gick med på att skriva vidare på berättelsen och publicerade ytterligare en artikel med en hel del nya detaljer som han fått direkt från Alex. Om detta inte hade hänt, skulle du inte läsa om dem i min artikel.
Hur stort var det egentligen och vilka var konsekvenserna?
Det finns en hel del bevis för att Alex lyckades tillämpa sina strategier på den utdaterade spelautomaten Aristocrat MK IV. Aristocrat rekommenderar numera att deras kunder bör byta ut dessa spelautomater. Trots detta, finns det fortfarande tusentals av dessa maskiner på casinon runt om i världen. Det bör dock inte vara några problem för de flesta casinon att byta ut dessa maskiner när det krävs.
Alex hävdar (och det finns belägg för dessa påståenden [4]) att han år 2009, hade börjat med att knäcka flera gamla spelautomater från Novomatic. Det är dock väldigt troligt att Novomatic lyckades åtgärda denna sårbarhet med en uppdatering år 2011. Kanske är det så att deras patent "System and method of centralized random number generator processing" från 2013 hade något att göra med det hela.
Han hävdar även att han lyckats göra samma sak med några av spelautomaterna från Atronic.
Det i särklass tyngsta påståendet från Alex är utan tvekan att han hittade liknande sårbarheter hos Aristocrats Helix-kabinett. Helix är en av deras nuvarande modeller, och om Alex inte bluffar kan det vara så att Aristocrat har ett ännu större problem – speciellt om det inte är möjligt att åtgärda utan en uppdatering eller utbyte av komponenter. Å andra sidan är Aristocrat ett riktigt stort företag med 2 miljarder dollar i årliga intäkter och 500 miljoner dollar i vinst varje år. De kommer troligtvis överleva det hela (med en stor omställning av HW samt skadat anseende, i värsta fall).
Hur man än ser på det, blir det nog inte speciellt roligt. Även om Alex väljer att publicera ännu fler detaljer kring sina algoritmer, kommer casinon mest sannolikt stänga av de aktuella spelautomaterna innan vanligt folk får en chans att använda det till sin fördel.
En sann historia, eller bara en myt?
Det finns en hel del indirekta bevis som talar för att Alex historia är sann. Myndigheterna skulle inte ha arresterat och fängslat hans medhjälpare i två olika länder om så inte var fallet. Novomatic skulle inte heller utredas för manipulering av spelautomater, och de skulle inte heller ha släppt säkerhetsuppdateringar om så inte var fallet.
Har inte dessa spelutvecklare särskilda säkerhetsspecialister? Hur kunde dessa stora företag missa en sådan sårbarhet?
Jag vill påstå att det är ganska enkelt.
Jag har arbetat som mjukvaruutvecklare i 10 år, och kan säga att säkerhetshot ofta förbises. Detta är än mer sannolikt när det gäller nya och okända former av attacker som denna. Även om det hade funnits en säkerhetsansvarig, så är han endast utbildad i att mildra de hot som är kända för honom där och då (monkey-paw etc). Om utvecklarna inte hade en expert på plats, som kunde förutse nya sårbarheter och åtgärda dessa, skulle hotet mot PRNG enkelt kunna förbises.
Tillsynsorganen krävde endast att PRNG skulle generera en konsekvent fördelning av slumpade tal. Detta är även vad enklare PRNG gör. Oförutsägbarheten (den kryptografiska säkerheten) behöver inte testas alls.
Hela konceptet med PRNG är totalt främmande för de flesta "affärsmän". De bryr sig bara om ett fåtal saker. De är nöjda när spelautomaten:
- inte kraschar,
- är omtyckt av spelare,
- drar in pengar.
Mjukvaran i dessa spelautomater lyckas ofta överleva flera generationer av automater med bara mindre uppdateringar. Varför ändra på något som har fungerat felfritt de senaste 15 åren? Det är alltså ganska sannolikt att flera av de moderna spelautomaterna delvis använder sig av kod från tidigt 1990-tal.
Min tekniska analys av Alex system.
Jag vet att många av er är nyfikna på att lära er mer om hur Alex system fungerade.
Av den anledningen har jag tagit del av alla de detaljer som finns publicerade för att demonstrera hur demontering kan användas för att förutsäga framtida händelser hos en PRNG-spelautomat. Ta del av min tekniska analys i slutet av artikeln.
Spelautomatsbedrägerier, HW-manipulering, och speciella verktyg
Som tidigare nämnts, tror jag att Alex system var moraliskt försvarbart och även lagligt i vissa avseenden. Det gäller tyvärr inte för alla metoder som tidigare har använts för att "vinna" över spelautomater. Det finns ett flertal olagliga sätt som har använts för att blåsa spelautomater tidigare.
De flesta av dessa bedrägerier har haft något att göra med manipulering av hårdvaran och/eller speciella verktyg som använts för att "lura" spelautomaten och tjäna pengar.
Somliga metoder användes upprepade gånger, medan andra var engångsföreteelser. Något som de alla dessa metoder har gemensamt är att de endast fungerar på fysiska spelautomater som du kan hitta hos landbaserade casinon. Onlinecasinon är skyddade, eftersom spelare måste vara på plats för att kunna manipulera en spelautomat.
Ytterligare en faktor är att de casinon som blev utsatta för dessa bedrägerier valde att förbättra sin säkerhet och uppdatera spelautomaterna, något som har gjort att de flesta av metoderna jag kommer nämna är omöjliga att använda sig av i dagsläget.
Då kör vi. Här är några av de sätt som tidigare använts för att lura spelautomater.
Falska mynt eller polletter
Den första typen av bedrägeri jag kommer prata om är väldigt enkel. Den inkluderar falska mynt eller något annat som en spelautomat kan registrera som betalning. Om du kan tillverka något som spelautomaten "tror" är ett mynt, kan du använda det för att skapa pengar.
Det finns ett berömt exempel på en man som lyckades använda denna metod med stor framgång. Louis Colavecchio är en amerikansk förfalskare också känd som "The Coin". Han och hans gäng lyckades tillverka en betydande mängd falska mynt och polletter som de sedan använde för att tjäna pengar på casinon i Atlantic City och Connecticut. Han åkte dock fast och blev så småningom ganska känd, tack vare en dokumentär som visades på The History Channel.
Mynt på ett snöre (jojo-tricket)
Om du någonsin har lekt med en jojo, så vet du att den åker ner och upp när den används på rätt sätt. Detta är precis vad mynt på ett snöre gör. Först åker det in i spelautomatens myntinkast och tillåts åka tillräckligt långt in i maskinen för att registrera det som betalning och starta spelet. Sedan dras det upp och används om och om igen.
Denna metod är ganska lik den med falska mynt, men behovet av en storskalig produktion av falska mynt försvinner. Med mynt på ett snöre kan nästan vem som helst lura ett casino. Det var givetvis inte alla som försökte, och alla som försökte lyckades inte.
Slipade mynt
Tekniken som användes för att avgöra ett mynts riktighet blev bara bättre och bättre, något som gjorde att tricket med falska mynt blev föråldrat, eller åtminstone svårare att lyckas med. Spelautomater började använda sig av en ljussensor för att registrera betalning och avgöra om myntet var riktigt eller ej.
Ett slipat mynt registrerades som en godkänd betalning, dock ramlade det igenom den fysiska springan som användes för att mäta myntets storlek. Myntet blev därför returnerat till spelare och gick att använda igen.
Om spelautomaten krävde att myntet skulle överensstämma med dess krav på storlek, kunde ett annat objekt föras in samtidigt som det slipade myntet. Objektet matchade den efterfrågade myntstorleken och stannade i maskinen, samtidigt som det slipade myntet "lurade" den optiska sensorn och ramlade ut igen.
Galgar
Du får tänka tillbaka till den gamla typen av spelautomat som betalade ut mynt direkt när en spelare hade vunnit. De hade en mekanisk räknare, som användes för att räkna fram det exakta antalet mynt som maskinen skulle betala ut i förhållande till spelarens vinst.
Med denna metod användes en galge (eller något snarlikt i storlek och form) som trycktes in i området bredvid mynträknaren, något som påverkade dess exakthet. Detta innebar att maskinen fortsatte betala ut fler mynt än den skulle göra, något som gjorde att det i längden blev mer lönsamt att spela.
Top-bottom joint
Top-bottom joint var ett verktyg som bestod av två delar ... du har nog listat ut det – en topp och en botten, mer specifikt en metallpinne som var böjd likt en cirkel (toppen) och en lång gitarrsträng eller annan tunn vajer (botten).
Botten fördes in genom botten av spelautomaten, där den kom i kontakt med automatens interna elektronik, och fick sig en liten laddning därifrån. Toppen fördes då in genom myntinkastet, varefter kretsen slöts och tvingade spelautomaten att betala ut alla mynt som fanns i den.
Monkey-paw
Monkey-paw skapades av en riktig legend inom konsten att lura spelautomater – Tommy Glenn Carmichael. Innan vi börjar prata om Monkey-paw, måste vi först återgå till top-bottom joint. Carmichael ägde en butik som reparerade tv-apparater, och det gick inte speciellt bra. När hans vän visade honom verktyget top-bottom joint, bestämde han sig för att prova.
Han nådde måttlig framgång, men blev påkommen och dömdes till 5 års fängelse. Inte bara för att han hade fuskat i casinon, utan även på grund av tidigare brottslighet. Han insåg då att verktyget som han hade använt (top-bottom joint), redan var ganska välkänt. Han förstod att han var tvungen att hitta på något nytt för att lyckas med att lura casinon.
Det var av den anledningen han uppfann Monkey-paw. Han fick tag på en videopoker-maskin och började experimentera. Carmichael lyckades skapa en väldigt enkel men användbar manick. Han fäste en metallvajer på ett böjt metallrör, som han sedan förde in i spelautomatens ventilationshål och rörde omkring en stund, tills han hittade spelautomatens myntratt. Han drog i den och spelautomaten spottade ut allt som fanns inuti.
Ljusstav
Allteftersom spelautomaterna blev mer och mer tekniskt avancerade och säkra, slutade de använda mekaniska system för att räkna pengar. De började använda sig av optiska sensorer, som gjorde majoriteten av de ovan nämnda metoderna föråldrade. Carmichael anpassade sig dock, han kom på ett sätt att lura även de nya systemen.
Han skapade en liten manick som kunde "blända" den optiska sensorn, vilket gjorde det omöjligt för den att känna av hur mycket pengar som hade förts in i maskinen och hur mycket pengar som betalades ut. Eftersom spelautomaten inte trodde att den korrekta mängden pengar hade betalats ut, fortsatte den att spotta ut mer och mer pengar, vilket gjorde fuskarna rikare och rikare.
Pianotråd
Metoden går att spåra ända till 1982, då spelautomater fortfarande var mekaniskt styrda. Pianotråden fördes in i spelautomatens roterande inre. Tråden användes för att låsa klockan som mätte hjulens rotation, vilket innebar att spelare kunde manipulera resultatet från deras snurr.
Gruppen som använde sig av denna metod lyckades vinna 50 000 dollar. De filmades dock under hela processen och blev senare arresterade. Deras succé blev kortvarig, men de lyckades verkligen ändra på spelets resultat med hjälp av en pianotråd.
Utbyte av datorchipp
Dennis Nikrasch lyckades på ett annat sätt. Även han köpte en spelautomat för att "spela" hemma. Han räknade ut att automaternas datorchipp kunde omprogrammeras för att manipulera resultaten. Det omprogrammerade datorchippet kunde sedan installeras i en av casinots spelautomater och användas för att tjäna en hel del pengar.
Detta var inget han behöll för sig själv. Han beställde en hel hög med dessa datorchipp, som han sedan omprogrammerade, fick tag på nycklar till spelautomater och bytte ut deras datorchipp. Och "bara så där", hade han lyckats skapa en lyckosam verksamhet som gjorde honom rik. Han greps dock 2004 (ingen överraskning kanske), och dog 2010.
Spelautomater och buggar i mjukvaran
Trots att denna metod för att slå spelautomater, rent tekniskt inte är bedrägeri, har vi valt att ta med den i artikeln. Spelautomater programmeras av människor. Människor gör misstag. Ett misstag i programmeringen kan leda till buggar i mjukvaran som senare (medvetet eller ej) utnyttjas av spelare.
Det finns många dokumenterade fall av mjukvarubuggar som har resulterat i stora vinster:
- År 2015 var det en 90-årig kvinna från Illinois som vann 41 miljoner dollar när hon spelade på en Miss Kitty-spelautomat. Casinot vägrade betala ut pengarna.
- En man i Österrike vann en jackpott på 43 miljoner euro. Casinot insisterade på att han endast landade 4 av de 5 symboler som krävdes för att vinna jackpotten. Vinsten betalades därför inte ut och istället blev han erbjuden 100 euro samt en gratis lunch.
- En kvinna i New York lyckades vinna en jackpott på otroliga 42,9 miljoner dollar. Spelautomaten hade en maximal utbetalning på 6 500 dollar och den otroliga vinsten var bara en bugg. Casinot insisterade på att hennes spel endast gav rätt till 2,25 dollar.
Jag skulle kunna fortsätta. Poängen är att de otroliga vinsterna som sker till följd av en mjukvarubugg, i stort sett aldrig betalas ut. Något som gör det hela ännu värre, är att skumma casinon faktiskt kan använda detta och skylla på en bugg för att slippa betala ut vinster.
Mjukvarubuggar resulterar dock inte alltid i jackpottvinster De kan istället ge spelaren en mängd småvinster, eller felaktigt identifiera de använda mynten på ett sätt som gynnar spelaren. Denna typ av fall kan flyga under radarn, och på så vis utnyttjas av smarta spelare.
Kom ihåg, slumpen gynnar den förberedde. :)
Appendix: Hur Alex algoritm kan tänkas fungera
Vi börjar med att sammanställa allt vi vet om hans strategi:
- Alex behövde först resultat från omkring 24 snurr för att kunna förutsäga framtida utfall.
- Medhjälpare väntade på rätt tidpunkt att trycka på spelknappen.
- Brendan Koerner lyckades hitta ursprunget till PRNG-algoritmen (från de matematiska bevis som Alex tillhandahöll) till boken "The Art of Computer Programming".
Den PRNG-algoritm som kan ha använts av Aristocrats spelautomater
Den enklaste PRNG-algoritmen som förklaras i boken "The Art of Computer Programming", som även ger tillfredställande resultat är ganska simpel:
RNG = (a * TidigareRNG +c) mod m
Denna algoritm, känd som Linjär kongruensgenerator (LCG), används fortfarande som en standard för PRNG-algoritmer i flera programmeringsspråk (exempelvis Java).
Kunde utvecklarna hos Aristocrat helt enkelt ha valt att använda den standard för PRNG-algoritmer som programmeringsspråket erbjöd? Eller kunde det vara så att de använde den enklaste PRNG som uppfyllde kraven?
Jag anser att det är ett troligt scenario. Standardalgoritmen fungerar och klarar kraven för de slumpmässigt genererade talen. Den kanske helt enkelt stod sig mot de krav som programmerarna ställde.
Hur man knäcker en enkel PRNG
Vi ska nu spekulera i hur djärv Alex kunde ha varit när han utnyttjade algoritmen.
1. Dekompilering
Det första steget är att veta exakt vilka parametrar algoritmen följer (parametrarna a, c och m). Detta är den enkla biten, eftersom dessa parametrar finns inskrivna i varje spelautomat. Alex behövde bara läsa binärkoden från kabinettens minne och dekompilera den. Detta är något som alla specialister inom mikroelektronik kan göra, med rätt verktyg givetvis.
Det räcker inte med att bara känna till parametrarna a, c och m. Med dekompilering kan du vanligtvis utläsa parametrarna hos alla PRNG-algoritmer – även om de är kryptografiskt skyddade. För att kunna förutspå och utnyttja RNG-sekvensen hos en verklig spelautomat på ett casino, måste du även veta något annat – det aktuella seed-värdet som används.
2. Att hitta det aktuella RNG-värdet.
LCG-algoritmen som används för PRNG, karaktäriseras ofta som enkel att förutsäga. Detta innebär att det räcker med att veta 3 slumptal för att kunna räkna ut parametrarna a, c och m, för att sedan kunna räkna ut de kommande talen i sekvensen.
Bli inte förvirrad av detta, eftersom det inte var exakt vad Alex tampades med. Alex visste redan parametrarna a, c och m. Han visste inte vilket det aktuella RNG-värdet var. Han kunde indirekt observera de genererade slumptalen genom att undersöka vilka positioner som hjulen stannade på.
Detta grundar sig i att logiken bakom en spelautomat är deterministisk och programmerad inuti själva skåpet. Den kan således dekompileras, plockas isär och simuleras någon annanstans. Logiken för spel tar vanligtvis ett slumpmässigt tal och använder sig av matematiska beräkningar för att bestämma var varje hjul ska stanna.
Spelautomaternas hjul har ofta omkring 50 till 100 symboler, varav tre visas på skärmen. Kombinationerna kan ibland återupprepas och hjulen kan vara av olika storlek, men låt oss anta att varje hjul har 50 unika kombinationer. Det slumpmässiga talet väljer en av dessa 50 kombinationer, så bara genom att titta på det första hjulet kan vi eliminera 49/50 (98 %) av de potentiella talen.
Om spelet har 5 hjul, så kommer det i genomsnitt bara vara ett av 312 miljoner slumpmässiga tal som ger exakt samma resultat som det spelaren kan observera.
Om du vet resultatet från flera på varandra slumpmässiga (*) tal, så kan du ganska snart landa med bara ett ursprungligt slumptal som ger det önskade utfallet för alla snurr. Faktum är att antalet snurr står i direkt proportion till längden på det ursprungliga slumptalet.
Du behöver alltså bara kunna simulera alla de möjliga slumptalen och det är klart ... ja, kanske inte så snabbt.
Om en spelautomat använder slumpmässiga tal som är 64 bitar långa, skulle det ta alldeles för mycket datorkraft (544 år med min laptop). Alex behövde fortfarande lite oavsiktlig hjälp från utvecklarna på Aristocrat. Jag hittade två saker de kunde ha gjort för att hjälpa Alex:
- Använt sig av en RNG som är för kort (32-bitars).
- Använt sig av slumptal som på något annat sätt kunde användas för att lista ut dess aktuella RNG.
1. För kort (32-bitars) RNG
Aristocrat MK IV använde sig av en 32-bitars ARM 250-processor. Om spelutvecklarna valt att använda sig av en 32-bitars RNG, skulle det bara ha funnits 4 294 967 296 möjliga RNG-lägen. Det kan se ut att vara en hel del, men i själva verket är moderna datorer så snabba att de kan knäcka det väldigt snabbt (det tog 4 sekunder med min laptop).
Detta alternativ verkar dock tämligen osannolikt. Dessutom är en 32-bitars RNG för kort för att täcka alla möjliga resultat i spelet (5 hjul * symboler).
2. Använda sig av ett slumptal på ett sätt som är "lätt att utnyttja"
Vi antar nu att det var en 64-bitars RNG som användes. Hur använder du ett 64-bitars nummer för att deterministiskt stoppa 5 hjul med 50 symboler vardera? Det enklaste tillvägagångssättet vore följande:
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
Varje hjul använder nu sin del av slumptalet, och här finns det ingen korrelation mellan de individuella hjulen. Givet att slumptalen är enhetliga, finns det alltså en likvärdig chans för alla utfall (**). Godkänt av tillsynsorgan.
Tillämpning:
Om du vet hjulens positioner, kan du enkelt beräkna slutet på ett slumptal (RND mod 50^5):
RndEnd = pos1 + pos2*50 + pos3*50*50 + pos4*50*50*50 + pos5*50*50*50*50
Kommer detta hjälpa dig att gissa det aktuella RNG-läget? Ja, det kommer det faktiskt göra. Det kommer att hjälpa dig en hel del.
Nu behöver du inte simulera alla slumptal, bara de tal som slutar med RndEnd. Eller, mer specifikt, alla slumptal som passar in i mönstret RndEnd + X * 50^5:
- 1 * 312500000 + RndEnd
- 2 * 312500000 + RndEnd
- 3 * 312500000 + RndEnd
- …
Av de 2^64 möjliga värdena (18466744073709551616), behöver du bara prova 59029581035. Båda innehåller enormt många möjliga värden, men samtidigt som min laptop behövde 544 år för att simulera det första, kan simuleringen av det andra göras på 60 sekunder. Det är en enorm skillnad.
Så ligger det till. Nu känner du till slumptalen och kan förutsäga framtida utfall.
Det verkliga kryphålet som Alex använde sig av kan ha varit annorlunda, men jag slår vad om att det har en hel del gemensamt med vad vi precis har gått igenom.
(*) I verkligheten kände Alex inte till utfallen från de slumpmässiga talen, han kände dock till utfallen från slumptal ganska nära i sekvensen.
Alex medhjälpare var tvungna att vänta på exakt rätt tillfälle för att trycka på knappen. Det tyder på att Aristocrat MK IV hade kontinuerligt genererade slumptal med visst intervall (något som är ett lagkrav i vissa rättsområden). När en spelare trycker på knappen, används det aktuella slumptalet för att bestämma utfallet.
Lägg märke till att frekvensen för hur slumptalen genereras även måste vara programmerad inuti spelautomaten. Den kan alltså på ett enkelt sätt utläsas och förutsägas efter genomgång av programkoden.
Vi antar att slumptalet i spelautomaten genereras med en frekvens på 100/sekund. Att spela 24 rundor kan ta omkring 60 sekunder. Det finns alltså 6 000 slumptal att ta hänsyn till, varav 24 kan använts för att räkna fram utfallet. Uppgiften blir sedan att beräkna det första slumptal som ger utfallet för ett första snurr, samt även beräkna utfallet för de resterande 23 snurren med hänsyn till de kommande 6 000 cyklerna. Denna simulering är enkel att göra; det tar bara lite extra tid (med optimala inställningar).
(**) För att få perfekt enhetlighet, måste du förkasta de tal som är större än 2^64–2^64 mod (50^5).
Intressanta länkar för mer information om dessa diskussioner:
- 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/