Discussione Rng, Algoritmi e Slot Machine online

peppejk10

Utente Iron
30 Giugno 2022
5
2
0
9
Buonasera a tutti. Spero sia la sezione piu' appropriata.
E da tempo che "studio" e analizzo le slot online. Da poco mi sono accorto che su un output ricevuto da una slot, tra i vari valori che fornisce, vi e' un valore chiamato RNG.
In genere con questo termine si indica il Random Number Generator, che e' quel software/hardware che genera i numeri casuali collegati ai vari simboli della slot.
Non essendo esperto in materia di algoritmi o formule inverse, secondo voi questi elementi che vedrete, sono riconducibili o utilizzabili in qualche modo per la previsione dell'rng, e quindi utili a risalire magari al seme dell'rng stesso?

"reels":[["2","5","7","6","2"],["5","8","7","13","10"],["5","6","7","5","13"],["14","13","3","9","7"],["9","13","1","5","11"]],"extra":[],"last_request":{"lines":25,"extra":{},"rng":null,"autoplay":false,"bet":1,"action":"spin"},"can_change_bet":true,"overlay_reels":null},"rng":{"R0":13,"R1":1,"R2":13,"R3":31,"R4":15}

Questa e' solo una parte dell'output restituito dalla slot dopo aver avviato lo spin; ovviamente reel sta ad indicare i 5 rulli della slot composti ognuno da 5 simboli, mentre l'ultimo valore rng, presenta 5 "R" numerate da 0 a 4, come se corrispondesse ai 5 rulli, con un numero identificativo a lato.
Ovviamente tutto cio' cambia ad ogni spin, ed apparentemente non trovo correlazioni tra i reel e rng , ne tantomeno conosco formule o algoritmi per cui inserire i valori generati, magari negli ultimi 50 spin, e avere una probabile previsione sulla prossima sequenza.

P.s: in un altra slot , apparte i soliti valori per i rulli, trovo invece questi valori

"apiversion":"5.1.11908.419","gameversion":"5.1.10227.416","gamehash":"6701f20f22fea5baf57b84917600f1e79715a518","rngversion":"5.1.4478.308","rnghash":"eead3c403b3721bb62da82546e60c5fb52174559","jpversion":"5.1.4326.325","jphash":"4ccbcc6c2e2607c4c0b3bf17ce5eabe17a98ec01"}

L'hash in questione sembrerebbe non decriptabile perche' si tratterebbe di SHA-1 (credo)

C'e' qualcuno esperto in materia che puo' darmi delucidazioni'?
 
I primi algoritmi di generazione di numeri casuali per computer come LCG non erano pensati per la crittografia, inoltre si usava spesso un seed relativo al tempo, quando poi si è iniziato a usarli nelle slot e lotterie ci sono stati vari attacchi storici (ricordo un episodio simile trattato in "L'arte dell'intrusione" di Kevin D. Mitnick Condor). Da allora però si è passati a sorgenti di numeri random più sicure e algoritmi CSPRNG, di solito forniti direttamente dal sistema operativo:
  • /dev/urandom per sistemi UNIX-like
  • BCryptGenRandom per Windows
il kernel raccoglie un pool di entropia (seed) da diverse sorgenti fin dal boot (dati da hardware, input dell'utente, programmi, interrupt, il tutto ri-mischiato quando arrivano nuovi dati), in più usa un cipher simmetrico per estendere questi dati random (imprevedibili ma pochi) per poter essere in grado di generare anche GB di random rapidamente. Un casinò online potrebbe addirittura avere un generatore random hardware (HRNG) che sfrutta dati ambientali praticamente impossibili da conoscere o replicare.

Diciamo che puoi riuscire a fregare solo un sistema che fa così (e nemmeno il 100% delle volte):
C:
srand(time(NULL));
// ...
int n = rand();

Ma questo codice dovresti vederlo solo a scuola o dove non conta essere imprevedibili: se è il solitario o prato fiorito ci sta, se ci sono di mezzo soldi anche no :asd:
 
I primi algoritmi di generazione di numeri casuali per computer come LCG non erano pensati per la crittografia, inoltre si usava spesso un seed relativo al tempo, quando poi si è iniziato a usarli nelle slot e lotterie ci sono stati vari attacchi storici (ricordo un episodio simile trattato in "L'arte dell'intrusione" di Kevin D. Mitnick Condor). Da allora però si è passati a sorgenti di numeri random più sicure e algoritmi CSPRNG, di solito forniti direttamente dal sistema operativo:
  • /dev/urandom per sistemi UNIX-like
  • BCryptGenRandom per Windows
il kernel raccoglie un pool di entropia (seed) da diverse sorgenti fin dal boot (dati da hardware, input dell'utente, programmi, interrupt, il tutto ri-mischiato quando arrivano nuovi dati), in più usa un cipher simmetrico per estendere questi dati random (imprevedibili ma pochi) per poter essere in grado di generare anche GB di random rapidamente. Un casinò online potrebbe addirittura avere un generatore random hardware (HRNG) che sfrutta dati ambientali praticamente impossibili da conoscere o replicare.

Diciamo che puoi riuscire a fregare solo un sistema che fa così (e nemmeno il 100% delle volte):
C:
srand(time(NULL));
// ...
int n = rand();

Ma questo codice dovresti vederlo solo a scuola o dove non conta essere imprevedibili: se è il solitario o prato fiorito ci sta, se ci sono di mezzo soldi anche no :asd:
Studiavo una cosa da tempo... ma grazie alla tua risposta mi è venuta un'idea (non per le slot, ma ben altro) 😆