Como derrotar as Slot Machines

  1. Alex, o indivíduo que decifrou o PRNG utilizado pelas slots e ganhou milhões
  2. Fraudes nas slot machines, manipulação de HW e ferramentas especiais
  3. Falhas nas slots e no software
  4. Anexo: Como poderá funcionar o algoritmo do Alex

Teoricamente, as slots bem concebidas que fazem uso de um Gerador Aleatório de Números (RNG) puro são imbatíveis. Mas na realidade existem vários casos documentados de jogadores que conseguiram enganar as slots, ganhando muito mais do que os proprietários do casino esperariam.

Muitos destes truques são furtos flagrantes. Incluem, habitualmente, ferramentas para manipular o hardware da slot machine, nomeadamente o distribuidor de moedas ou recetor de notas. Alguns casos envolveram alguém do próprio casino a ajudar na manipulação da slot machine.

Noutros casos, os jogadores foram apenas extremamente sortudos. Foram capazes de encontrar uma falha no software e utilizá-la a seu favor.

No entanto, o caso mais interessante é uma história muito recente (2009-2018) de um indivíduo russo de São Petersburgo, que conseguiu prever com sucesso o resultado das rondas de alguns modelos de slot machines e utilizou esta técnica para ganhar milhões em vários casinos em todo o mundo.

Esta história é tão alucinante que decidi dedicar-lhe algum tempo e analisar mais profundamente as suas técnicas.

Os créditos da publicação dos detalhes desta história devem-se ao wired.com e a Brendan Koerner [1].

Alex, o indivíduo que decifrou o PRNG utilizado pelas slots e ganhou milhões

Alex trabalhava como programador e hacker (freelancer) quando um casino russo contratou-o para manipular o RTP de algumas slot machines da Novomatic. Para completar o trabalho, Alex aprendeu em detalhe o funcionamento interno destas slot machines. Aprendeu ainda sobre os Geradores de Números Pseudo Aleatórios (PRNG), bem como sobre o seu funcionamento e aplicação nas slot machines. A grande descoberta aconteceu quando ele percebeu que as slot machines utilizavam um algoritmo PRNG inseguro e previsível.

O RNG puro usa ruído eletromagnético para gerar valores completamente aleatórios e totalmente imprevisíveis. O PRNG funciona de uma forma diferente. Começa com um valor predefinido e mescla-o com algumas outras entradas para gerar uma série infinita de valores. À primeira vista, os valores de saída do PRNG parecem completamente aleatórios e impossíveis de prever. No entanto, se o PRNG utilizar um algoritmo fraco e se souber exatamente qual, então pode prever o próximo número aleatório.

Se o PRNG utilizar um algoritmo fraco e se souber exatamente qual, então pode prever o próximo número aleatório.

Aparentemente, o Alex percebeu que os algoritmos usados por algumas slot machines eram fracos e decidiu utilizar isso em seu benefício.

Ao longo dos anos seguintes, ele conseguiu lançar as bases, preparando-se para o que se tornaria uma operação muito mais sofisticada:

  • fez engenharia inversa de várias slots populares.
  • desenvolveu um algoritmo capaz de descobrir os parâmetros atuais do PRNG e prever os resultados de rondas futuras com base em duas dezenas de rondas de uma slot.
  • desenvolveu uma aplicação para iPhone que utilizava os resultados previstos para dizer ao jogador quando exatamente pressionar o botão de forma a resultar numa vitória.
  • contratou dezenas de agentes locais, que foram encarregues de sacar dinheiro a casinos um pouco por todo o mundo nos 6-7 anos seguintes.

Alex afirma que durante este período de tempo ele foi capaz de ganhar milhões de dólares.

Nota: O sistema de Alex não funcionaria nos jogos e casinos online modernos, como os que pode encontrar na nossa lista de slots grátis, uma vez que utilizam sistemas com RNG puros que geram resultados verdadeiramente aleatórios.

Alex, da Russia, que encontrou uma forma inteligente de derrotar as slots

O sistema de Alex é legal e moralmente aceitável?

A técnica que ele desenvolveu não inclui qualquer manipulação proibida. Este sistema contrasta enormemente com muitas técnicas de roubo descritas adiante neste artigo, que enganam o hardware das slot machines para dispensar mais dinheiro do que o pretendido. A estratégia de Alex é baseada em matemática pura e nas suas próprias observações e, portanto, pode ser considerada uma estratégia válida e limpa para "derrotar as slots".

Muitos especialistas jogo (incluindo eu próprio) consideram as ações de Alex completamente limpas e moralmente aceitáveis. Eu compararia-a à contagem de cartas no blackjack, caça aos bónus ou vantagem na aposta. Os casinos colocam as slot machines disponíveis ao público voluntariamente, e é problema deles se alguém inteligente for capaz de prever os resultados e tirar partido disso.

Tecnicamente, esta estratégia não era ilegal em muitas jurisdições. Portanto, mesmo que os seguranças do casino conseguissem apanhar um dos seus agentes, apenas confiscaram os seus ganhos e o proibiriam de entrar no casino.

Mas os casinos (especialmente os físicos) são empresas grandes, com muito dinheiro e fortes conexões com as autoridades locais. Quando os casinos perceberam que havia um grupo organizado utilizando as suas slot machines como multibancos, sem dúvida que mexeram alguns pauzinhos. As autoridades e os advogados do casino conseguiram encontrar um crime que enquadrava as ações deste grupo: "conspiração para cometer fraude". Desta forma, este crime resultou na detenção de 4 agentes de Alex no Missouri em 2015 (que mais tarde foram acusados e condenados a 2 anos numa prisão federal) [2].

Este foi o ponto de viragem na história, e alguns agentes começaram a falar mais abertamente sobre os detalhes do seu sistema. Provavelmente o grupo tornou-se conhecido pela maioria dos agentes de segurança de casinos ao redor do mundo e verificou-se outra detenção em Singapura [3].

A tentativa de Alex para trabalhar com os fabricantes de slots

Reconhecendo que era cada vez mais arriscado os seus agentes continuarem a utilizar o sistema, decidiu fazer a última tentativa de usar seu conhecimento para ganhar dinheiro. Ele contactou diretamente a Aristocrat – a fabricante das slot machines que ele comprometeu. Na esperança de uma recompensa na casa dos 8 dígitos, ele ofereceu os seus serviços para melhorar os algoritmos PRNG e consertar todos os problemas de segurança. Ao mesmo tempo, ele ameaçou que, caso a Aristocrat não aceitasse sua oferta, ele venderia informações confidenciais aos seus concorrentes. No entanto, a Aristocrat não cedeu a Alex, apesar dele ter demonstrado todos os detalhes matemáticos sobre a sua vulnerabilidade.

Quando Aristocrat recusou a oferta de Alex, ele decidiu dar mais uma oportunidade e forçar um pouco mais publicando os detalhes da sua história. Ele contactou Brendan Koerner - um homem que já tinha coberto os factos conhecidos sobre a sua história e que estão neste artigo.

Brendan concordou em continuar com a história e publicou outro artigo com novos detalhes, providenciados por Alex. Se tal não tivesse acontecido, não estaria a ler sobre ele no meu artigo.

Em todo o caso, para mim, esta é a maior história do jogo do século XXI. Definitivamente estou ansioso pelo próximo capítulo e também pelo filme. Espero que Hollywood lhe faça justiça. As pipocas estão prontas.

Qual a real dimensão e quais as consequências?

Existem várias provas que Alex conseguiu aplicar com sucesso a sua estratégia numa slot machine desatualizada da Aristocrat MK IV. A Aristocrat recomenda agora aos seus clientes a substituição dessas máquinas. Apesar disso, ainda existem milhares dessas máquinas em muitos casinos ao redor do mundo. No entanto, a maioria dos casinos não deve ter nenhum problema em substituí-las quando necessário.

Alex afirma (e existem vários indícios que suportam a sua afirmação [4]) que em 2009, ele começou a decifrar os PRNGs de algumas das máquinas mais antigas da Novomatic. No entanto, é muito provável que a Novomatic tenha conseguido remover essa vulnerabilidade com uma atualização de segurança em 2011. Possivelmente, a patente da Novomatic sobre umSistema e Método Centralizado de Geração e Processamento de Números Aleatórios em 2013 está relacionada com isso.

Ele afirma ainda que conseguiu fazer o mesmo com algumas máquinas feitas pela Atronic.

De longe, a alegação mais forte de Alex é que ele encontrou uma vulnerabilidade semelhante para a maquina Helix da Aristocrat. Helix é um de seus modelos atuais, logo, se Alex não estivesse fazendo bluff, aAristocrat estaria perante um problema ainda maior - especialmente se não for possível corrigir com uma atualização de segurança ou uma pequena substituição do chip. Mas, por outro lado, a Aristocrat é uma empresa enorme, com uma receita anual de 2 mil milhões de dólares e um lucro anual de 500 milhões de dólares. Portanto, é muito provável que eles sobrevivessem (com grandes substituições internas de HW e danos à sua reputação, no pior cenário).

De qualquer forma, não espere muita diversão. Mesmo que o Alex decidisse publicar mais detalhes sobre os seus algoritmos, os casinos muito provavelmente desligariam todas as slot machines afetadas antes que as pessoas comuns tivessem a oportunidade de utilizá-los em seu próprio benefício.

Se quiser divertir-se, arranje a sua slot da Aristocrat e faça a sua própria engenharia inversa. Aposto que com um amigo meu especialista em micro-eletrónica poderíamos fazê-lo se quiséssemos. ;-)

Uma história verídica ou um mito urbano?

Existem muitas provas indiretas que a história descrita por Alex é verdadeira. As autoridades não teriam detido e condenado os seus agentes em 2 países se não fosse verdade. A Novomatic não teria investigado a manipulação das slot machines nem teria lançado atualizações de segurança se isso não fosse verdade.

Mas os fabricantes de slots não têm especialistas de segurança dedicados? Como estas grandes empresas poderiam ignorar tal vulnerabilidade?

Eu vou dizer abertamente.

Eu trabalhei 10 anos como desenvolvedor de software e posso dizer que ameaças de segurança podem ser facilmente ignoradas. Isto é ainda mais provável para tipos novos e desconhecidos de ataques como este. Mesmo que na época houvesse um responsável pela segurança, ele estaria treinado para mitigar apenas as ameaças que conhecia na época (pata de macaco, etc.). Se a equipa de desenvolvimento não tivesse um verdadeiro especialista a bordo que fosse capaz de prever novas vulnerabilidades e levantar a mão, então essa ameaça relacionada com PRNG poderia facilmente passar despercebida.

Os reguladores só exigiam que o PRNG gerasse uma distribuição uniforme dos números gerados. E isto qualquer PRNG rudimentar faz. A imprevisibilidade (segurança criptográfica) não tinha de ser testada sequer.

O conceito do PRNG soa como algo estranho para a maioria dos "empresários". Eles preocupam-se apenas com um pequeno conjunto de coisas. Ficam satisfeitos quando uma slot machine:

  • não "crasha"
  • é apreciada pelos jogadores
  • gera dinheiro.

Além disso, o software das slot machines normalmente sobrevive a várias gerações apenas com pequenas atualizações. E porquê mudar algo que funcionou sem problemas nos últimos 15 anos, certo? Portanto, é bem possível que muitas máquinas modernas usem partes de código do início dos anos 90.

A minha análise técnica do Sistema de Alex

Eu sei que muitos de vós estão ansiosos para saber em detalhe como funcionava o sistema de Alex.

É por isso que reuni todos os detalhes publicados e decidi demonstrar como a engenharia inversa pode ser usada para prever os resultados futuros de um slot PRNG. Confira a minha análise técnica no final deste artiugo.

Fraudes nas slot machines, manipulação de HW e ferramentas especiais

Como afirmei anteriormente, acredito que o sistema de Alex era moralmente aceitável e até legal em algumas jurisdições. No entanto, nem todas as formas que foram usadas anteriormente para "vencer" as slots são assim. Existem numerosas formas ilegais utilizadas para enganar as slots no passado.

A maior parte das fraudes registadas em slot machines estão relacionadas com manipulação de hardware e/ou ferramentas especiais usadas para "enganar" as slot machines e ganhar dinheiro.

É importante ressalvar que as manipulações de hardware e o uso de quaisquer ferramentas para alterar o funcionamento das slot machines é ilegal. Isto significa que pode pegar um machado e quebrar a máquina até chegar à área de armazenamento de dinheiro. Do ponto de vista jurídico, estava fazendo praticamente a mesma coisa.

Algumas ocorreram repetidamente, enquanto outras foram uma operação única. O que todos têm em comum é o fato de funcionarem exclusivamente com slot machines físicas, que pode encontrar nos casinos físicos. Os casinos online estão protegidos, pois os jogadores precisam estar fisicamente perto de uma slot machine para manipulá-la.

Além disso, como os casinos foram continuamente alvo de fraudes, eles começaram a implementar medidas de segurança e atualizações de hardware que tornaram a maioria das fraudes de que irei falar impossíveis de aplicar nos dias de hoje.

Ok, vamos lá! Aqui estão algumas formas como as slot machines foram manipuladas no passado.

Tokens ou moedas falsas

A primeira fraude que vou mencionar é muito simples. Inclui moedas falsas ou qualquer outra coisa que a máquina registe como forma de pagamento. Se é capaz de fabricar algo que a máquina "pensa" que é uma moeda, pode usá-la para ganhar dinheiro.

Evidentemente, deverá ser capaz de produzir essas moedas a um preço inferior ao seu valor nominal. Caso contrário, não será lucrativo.

Há um exemplo famoso de um homem que conseguiu usar esta técnica com muito sucesso. Louis Colavecchio é um falsificador de casinos americano também conhecido como "The Coin". Ele e o seu gangue conseguiram fabricar quantidades consideráveis de moedas falsas e tokens de casino e usá-los para ganhar dinheiro nos casinos de Atlantic City e Connecticut. Ele foi capturado e ficou bastante famoso, graças ao canal História, que fez um documentário sobre ele.

Moedas num fio (Yo-Yo)

Se já brincou com um Yo-Yo, sabe que ele sobe e desce quando manuseado corretamente. E é exatamente isso que acontece numa moeda com um fio. Primeiro, é inserida na slot machine de forma a que a máquina o registe e inicie o jogo. De seguida é puxada de volta e utilizada novamente vezes sem conta.

Esta técnica é muito semelhante às moedas falsas, mas elimina a necessidade de produção de moedas falsas em grande escala. Com uma moeda num fio, qualquer jogador pode enganar um casino. Claro, nem todo mundo o fez, e nem todos os que o fizeram tiveram sucesso.

Uma forma fácil que era usada para derrotar as slots no passado: uma moeda num fio

Moedas raspadas

A tecnologia usada para analisar a validade das moedas ficava cada vez melhor, o que tornava truques como moedas falsas obsoletos ou, pelo menos, muito mais difíceis de executar. As slot machines começaram a utilizar um sensor de luz para registar os pagamentos e verificar se as moedas eram reais ou falsas.

Uma moeda raspada foi registada como forma válida de pagamento, mas caiu no comparador físico que era usado para medir o tamanho das moedas que entravam. A moeda era então devolvida ao jogador e pronta para ser usada novamente.

Se a slot machine exigisse que a moeda correspondesse aos requisitos de tamanho, outro objeto era inserido na máquina juntamente com a própria moeda raspada. Esse objeto combinava perfeitamente com o tamanho da moeda e ficou na máquina, enquanto a moeda raspada "enganou" o sensor óptico e caiu de dentro dele.

Cabides

As técnicas descritas anteriormente influenciavam a forma como o dinheiro era inserido na máquina. O próximo truque para as slot, bem como muitos dos seguintes, são diferentes. Eles afetam as formas como as slots pagam o dinheiro, mais especificamente as moedas.

Tem que pensar as slot machines antigas pagavam diretamente em moedas sempre que um jogador ganhava algo. Tinham um contador de moedas mecânico que era usado para contar as moedas que saíam da máquina para pagar os ganhos do jogador.

Nesta fraude, um cabide (ou algo semelhante em forma e forma) era empurrado na área ao lado do contador de moedas, e afetava a sua precisão. Isso significa que a slot continuava a pagar mais do que devia, tornando o jogo lucrativo a longo prazo.

Junta superior-inferior

Uma junta superior-inferior era uma ferramenta que consistia em duas partes ... você adivinhou - a parte superior e a inferior, mais especificamente uma haste de metal dobrada para formar um círculo (parte superior) e uma longa corda de guitarra ou algum outro fio fino (parte inferior).

A junta superior-inferior é uma das ferramentas mais conhecidas para enganar os casinos. Era muito popular nos anos 70 e 80. Esta técnica levou o termo " esvaziar a slot machine" para um patamar completamente novo.

A parte inferior era inserida na parte inferior da máquina, onde entrava em contato com a parte elétrica interna da máquina, extraindo uma pequena carga dela. A parte superior era então inserida na ranhura da moeda, que fechava o circuito e forçava a máquina a pagar todas as moedas que continha dentro de si.

Pata de macaco

A pata de macaco foi criada por uma lenda na arte de enganar casinos e slot machines– Tommy Glenn Carmichael. Mas, para chegar à pata de macaco, primeiro temos que voltar à junta superior-inferior. Carmichael era dono de uma oficina de consertos de TV, um negócio que não a correr muito bem. Então, quando seu amigo Ray Ming lhe apresentou a técnica da junta superior-inferior, ele decidiu experimentá-la.

Ele teve algum sucesso com essa técnica, mas mais tarde foi preso e condenado a 5 anos de prisão, não só por causa da fraude contra o casino, mas também pelas suas condenações anteriores. Nesse momento ele percebeu que a ferramenta que estava usando (a junta superior-inferior) já era amplamente conhecida. Então ele chegou à conclusão que tinha de encontrar algo novo para ser bem sucedido na "arte" de enganar os casinos.

Então ele inventou a pata de macaco. Ele comprou uma máquina de vídeopóquer e deu início a uma experiência. Carmichael conseguiu criar uma engenhoca muito simples, mas funcional. Ele prendeu uma corda de metal a uma haste de metal dobrada, que mais tarde inseriu na abertura de uma slot machine e moveu-a até encontrar o interruptor para o depósito de moedas da máquina. Ele puxou-a e obteve tudo o que estava dentro da máquina.

Vara de luz

À medida que as slot machines se tornaram tecnologicamente mais avançadas e seguras, pararam de usar sistemas mecânicos para contar dinheiro. Começaram a utilizar sensores ópticos, tornando obsoletas a maior parte das técnicas mencionadas. Mas Carmichael adaptou-se às mudanças e encontrou uma forma de enganar os novos sistemas.

Ele construiu um pequeno dispositivo capaz de "cegar" o sensor ótico, tornando-o incapaz de detetar o dinheiro inserido na slot machine e o dinheiro pago. Como a máquina pensava que a quantia correta ainda não tinha sido paga, ela continuava a pagar cada vez mais dinheiro, tornando os batoteiros cada vez mais ricos.

Corda de piano

O método da corda de piano para enganar slots não tem nada a ver com inserir ou pagar dinheiro. A corda de piano era utilizada para alterar o resultado do jogo, tornando-a numa técnica muito distinta.

Remonta a 1982, quando os tambores das slot machines ainda eram mecânicos. A corda do piano era inserida no interior rotativo da slot machine. A corda era usada para travar o relógio usado para medir a rotação da roda, o que significava que os jogadores podiam manipular o resultado de cada ronda.

O grupo de pessoas que tentou realizar esta operação conseguiu ganhos na ordem dos $50.000. No entanto, eles foram filmados durante todo o processo e foram detidos mais tarde. O seu sucesso durou pouco tempo, mas eles realmente conseguiram mudar o resultado do jogo usando apenas uma corda de piano.

Substituição do chip

Dennis Nikrasch arranjou forma de conseguir fazer as coisas de uma forma diferente. Ele também comprou uma slot machine para "brincar" em casa. Ele descobriu que o chip da máquina poderia ser reprogramado para manipular o resultado do jogo. Os chips reprogramados poderiam então ser instalados nas slot machines dos casinos e usados para ganhar muito dinheiro.

E ele não guardou essa informação exclusivamente para si. Ele encomendou vários chips, reprogramou-os, arranjou as chaves das slot machines e substituiu os seus chips. E dessa forma, ele conseguiu executar uma operação bem-sucedida que o tornou rico. Mais tarde ele foi preso (2004) e morreu em 2010.

Falhas nas slots e no software

Embora esta forma de vencer slots não seja tecnicamente batota ou fraude, decidi incluí-la artigo. As slots são programadas por pessoas. E as pessoas cometem erros. Um erro de programação pode levar a falhas de software que podem mais tarde (conscientemente ou inconscientemente) ser exploradas pelos jogadores.

Uma falha no software da Slot Machine

Existem vários casos documentados de falhas de software que resultaram em grandes ganhos:

  • Em 2015, uma mulher de 90 anos do Illinois ganhou 41 milhões de dólares ao jogar na slot machine Miss Kitty. O casino recusou-se a pagar o valor.
  • Um homem na Áustria ganhou um jackpot de 43 milhões de euros. No entanto, o casino insistiu que ele acertou em apenas 4 dos 5 símbolos necessários para acionar o jackpot. Portanto, o seu prémio não foi pago e ele recebeu 100 euros e uma refeição grátis.
  • Uma mulher em Nova York conseguiu um incrível jackpot de 42,9 milhões de dólares. A máquina tinha um pagamento máximo de $6.500 e a grande vitória foi apenas uma falha. O casino insistiu que ela tinha direito apenas aos $2,25 apostados nessa ronda.

E poderíamos continuar. A questão é que os grandes ganhos que acontecem devido a uma falha de software raramente são pagos. E o pior, é que alguns casinos duvidosos podem realmente estar usando estas falhas para não pagar ganhos reais, culpando-os por uma falha.

No entanto, uma falha de software nem sempre resulta num jackpot. Em vez disso, pode fornecer ao jogador um fluxo de vitórias menores ou interpretar mal o dinheiro inserido na máquina de uma forma que favoreça o jogador. Falhas deste tipo podem ficar sob o radar e ser exploradas por jogadores habilidosos.

Porém, terá de ser extremamente sortudo para encontrar este tipo de bug. E mesmo que tenha essa sorte, não tem a certeza de que realmente conseguirá ver o dinheiro.

Mas lembre-se, a sorte favorece as mentes preparadas. :)

Anexo: Como poderá funcionar o algoritmo do Alex

Vamos começar resumindo tudo o que sabemos sobre sua estratégia:

  • Alex necessita do resultado de aproximadamente 24 rondas para prever os resultados futuros.
  • Os seus agentes aguardavam pelo instante certo para pressionar o botão girar.
  • Brendan Koerner conseguiu rastrear as origens do algoritmo PRNG (a partir da evidência matemática fornecida por Alex) até ao livro The Art of Computer Programming.

Isenção de responsabilidade: a análise técnica que se segue limita-se à minha especulação sobre o que os engenheiros da Aristocrat podem ter feito de errado e como Alex pode ter explorado esses erros. Apesar do facto de eu levar em consideração todas as informações disponíveis na época, o sistema real pode diferir em detalhes maiores ou menores.

O Casino Guru está a olhar cuidadosamente no caso do Alex

O PRNG que pode ter sido utilizado nas máquinas da Aristocrat

O algoritmo do PRNG mais simples descrito em The Art of Computer Programming capaz de produzir um resultado satisfatório é na verdade muito simples:

RNG = (a * RNGanterior + c) mod m

Este algoritmo, conhecido como Gerador Linear Congruente (LCG), é utilizado como um algoritmo PRNG padrão em muitas linguagens de programação (por exemplo, Java).

Os desenvolvedores de slot machines da Aristocrat poderiam simplesmente ter utilizado o algoritmo PRNG padrão fornecido pela linguagem de programação que utilizada? Ou terão usado o PRNG mais simples capaz de atender ao requisito de uniformidade?

Penso que esse seja um cenário possível. Este algoritmo padrão funciona e atende aos critérios de uniformidade dos números aleatórios gerados. Ele pode ter atendido a todos os critérios que os programadores estavam trabalhando na especificação de requisitos.

Como quebrar um PRNG simples

Agora vamos especular sobre como o ousado Alex pode ter explorado esse algoritmo.

1. Descompilação

O primeiro passo é conhecer os parâmetros exatos do algoritmo (parâmetros a, c e m). Esta é a parte fácil, pois esses parâmetros estão escritos em todas as slot machines. Alex "só" tinha que ler o código binário da memória da máquina e descompilar. Esta é uma tarefa que qualquer especialista em microeletrónica pode fazer se estiver equipado com as ferramentas adequadas.

Mas ao saber apenas os parâmetros a, c e m, por si só, não é suficiente. Com a descompilação, pode realmente ler os parâmetros de todos os algoritmos PRNG - mesmo os criptograficamente seguros. Para ser capaz de prever e explorar a sequência RNG numa slot machine real colocada num casino, precisará também de saber algo mais - o valor atual da semente do RNG.

2. Encontrar o valor atual do RNG

O algoritmo LCG do PRNG é geralmente caraterizado como facilmente previsível. Isto significa que sabendo 3 números aleatórios, você é capaz de calcular os parâmetros a, c, m e prever facilmente os próximos números na sequência.

Não fique confuso com este facto, pois esta não foi exatamente a tarefa que Alex enfrentou. O Alex já conhecia os parâmetros a, c e m da descompilação, mas ele não sabia o valor atual do estado RNG. Ele foi capaz de observar os números aleatórios produzidos indiretamente, observando as posições onde tambores paravam nas rondas registradas.

O ponto chave é que a lógica de um jogo de slot é determinística e programada dentro da máquina. Portanto, tudo pode ser descompilado, submetido à engenharia inversa e simulado noutro lugar. A lógica do jogo geralmente utiliza um número aleatório e usa algumas operações matemáticas para determinar onde cada tambor deve parar.

Os rolos das slot machines têm (geralmente!) cerca de 50 a 100 símbolos, dos quais apenas três são exibidos no ecrã. As combinações podem repetir-se e os tambores podem ter um comprimento diferente, mas vamos supor que existem 50 combinações únicas em cada tambor. O número aleatório seleciona uma dessas 50 combinações, então apenas olhando para o primeiro tambor na primeira ronda, é possível eliminar 49/50 (98%) dos potenciais números aleatórios.

EXEMPLO

Se o jogo tem 5 tambores, então em média, apenas um em 312 milhões de números aleatórios dá exatamente o mesmo resultado que o observado pelo jogador.

Se conhece o resultado de muitos(*) números, então mais cedo ou mais tarde terminará com apenas 1 número aleatório inicial que dá o resultado desejado para todas as rondas. Na verdade, o número de rondas que precisa é proporcional ao comprimento do número aleatório inicial.

Então só precisa de simular todos os números aleatórios possíveis e voilà… bem, não tão rápido.

Se uma slot machine utilizasse números aleatórios de 64 bits, então simulá-los a todos exigiria demasiado poder computacional (544 anos no meu computador). O Alex ainda precisava obter uma ajudinha não intencional dos desenvolvedores da Aristocrat. Encontrei 2 coisas que eles poderiam ter feito que ajudaram o Alex:

  • Utilizaram um estado do RNG muito curto (32 bits).
  • Usaram um número aleatório de uma forma que poderia ser usado para ajudar a encontrar o estado atual do RNG.

1. Um estado do RNG muito curto (32 bit)

As slots da Aristocrat MK IV foram desenvolvidas num processador ARM 250 de 32 bits. Se os desenvolvedores das slots decidiram usar uma semente do número aleatório de 32 bits, então existiam apenas 4,294,967,296 estados possíveis para o RNG. Pode parecer muito, mas os computadores atuais são muito rápidos e esse número de opções pode ser facilmente examinado pela força bruta (demora 4 segundos no meu computador).

No entanto, considero esta opção menos provável. Além disso, um número aleatório de 32 bits é muito curto para cobrir todos os resultados possíveis em alguns jogos (5 tambores * 90 símbolos).

2. Usando um número aleatório numa forma "fácil de explorar"

Vamos agora assumir o estado do RNG em uso era de 64 bits. Como usar um número de 64 bits para parar deterministicamente 5 tambores de 50 símbolos cada? A abordagem mais fácil que preserva a uniformidade seria a seguinte:

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

Cada tambor utiliza a sua parte de um número aleatório e não há correlações entre os diferentes tambores. Desde que os números aleatórios sejam uniformes, então há uma probabilidade uniforme de sair qualquer resultado possível do jogo (**). O regulador aprova.

Agora a exploração:

Se conhece as posições dos tambores, pode calcular facilmente o final de um número aleatório (RND mod 50^5):

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

Isto ajudará a adivinhar o estado atual do RNG? Na verdade, sim. Vai ajudará imenso.

Agora não precisa simular todos os números aleatórios possíveis, mas apenas aqueles que terminam em RndEnd. Ou, para ser mais específico, todos os números aleatórios que correspondam ao padrão RndEnd + X * 50^5:

  • 1 * 312500000 + RndEnd
  • 2 * 312500000 + RndEnd
  • 3 * 312500000 + RndEnd

Agora, dos 2^64 valores possíveis (18466744073709551616), terá de experimentar apenas 59029581035. Ambos representam um largo número de valores possíveis, mas enquanto no meu laptop a simulação do primeiro caso levaria 544 anos, a simulação ficaria completa em apenas 60 segundos. É uma grande diferença!

E é isto. Agora conhece o número aleatório e pode prever rondas futuras.

O verdadeiro explorador do RNG que Alex usou pode ser diferente, mas aposto que tem muito em comum com o processo que descrevi aqui.

(*) Na realidade, o Alex não conhecia os resultados dos números aleatórios consecutivos, mas conhecia os resultados dos números aleatórios que eram muito próximos na sequência.

Os agentes do Alex tinham que esperar um certo momento para pressionar o botão para iniciar a ronda. Isso indica que as máquinas da Aristocrat MK IV geravam números aleatórios de forma contínua e com alguma frequência (em algumas jurisdições é um requisito legal). Quando um jogador pressiona o botão para iniciar a ronda, o número aleatório atual é usado para determinar o resultado da ronda.

Observe que a frequência de geração de números aleatórios também deve estar programada dentro da slot machine. Portanto, ele também pode ser facilmente lido e previsto após a descompilação do código.

Vamos supor que os números aleatórios numa slot machine são gerados com uma frequência de 100/segundo. Jogar 24 rondas pode demorar cerca de 60 segundos, então existem cerca de 6.000 números aleatórios envolvidos, dos quais 24 foram usados para calcular o resultado das rondas. A tarefa então é calcular o primeiro número aleatório que dá o resultado da primeira ronda, e também os resultados das 23 rondas restantes compatíveis com os 6000 ciclos seguintes. Esta simulação é fácil de fazer; leva apenas algumas vezes mais tempo (com otimizações adequadas).

(**) Para obter a uniformidade perfeita, teria que descartar os números maiores que 2^64 – 2^64 mod (50^5).

Links interessantes para mais informações sobre estas discussões:

Alguns dos teus amigos considerariam este artigo útil?

Partilha este artigos e deixe eles saberem