
Scopriamo l'algoritmo utilizzato per generare il seriale di un programma e per ultimo creiamo un keygen
Per creare un keygen, dobbiamo trovare e calcolare l’algoritmo che genera il seriale in base al nome che noi andiamo ad inserire all'interno del campo Name nel programma.
Il programma che andiamo ad analizzare e i tools che ci servirano sono reperibili a questo link:Reverse engineering - Come creare una patch per un programma
Andando a disassemblare il programma troviamo due funzioni che si occupano di generare il seriale in base al nome che noi andiamo ad inserire, in particolare queste due funzioni, sono due call:
Steppiamo all’interno della prima funzione con F7 e troviamo questo:
Questa funzione, da come si può vedere, si occupa di trasformare tutte le lettere del nostro Name da minuscolo a maiuscolo e una volta trasformate in maiuscolo fa la somma in esadecimale di tutte le lettere inserite e le mette in EDI, infine una volta terminato fa uno xor con 5678:
004013A2 |. 81F7 78560000 XOR EDI,5678
Per finire salva tutto il contenuto di EDI in EAX.
Continuando a steppare ritorniamo nel immagine di prima delle due funzioni, bene ora dobbiamo entrare nella seconda funzione del seriale e vedere cosa c'è:
In pratica quello che fa questa funzione è:
-Mettere ogni singolo numero del seriale in BL e sottrarlo a 30h
-EDI = EDI * EAX
-EDI = EDI + EBX
-ESI = ESI + 1
E infine EDI viene xorato con 1234 e il contenuto di EDI viene salvato in EBX.
Continuando a steppare si arriva qui:
00401241 . 3BC3 CMP EAX,EBX
Significa che se EAX e EBX sono uguali il seriale è corretto.
Tradotto in linguaggio C:
if (EAX == EBX) printf("Seriale corretto");
else printf("Seriale errato");
Bene ora vediamo come creare il keygen, in sostanza il software fà questo:
Name XOR 5678h = Serial XOR 1234h
per trovarci il seriale:
Serial = Name XOR 5678h XOR 1234h questo per le proprietà dello XOR
Per chi non sa cosa sia lo XOR ecco una piccola spiegazione:
Lo XOR è un operatore logico detto anche OR esclusivo che restituisce 1 se e solo se la somma degli operandi uguali ad 1 è dispari, mentre restituisce 0 in tutti gli altri casi.
Questa è la tabella della verità dell’operatore XOR:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Una piccola curiosità per lo XOR: questo operatore è molto usato negli algoritmi crittografici.
Ora che abbiamo capito come ricavare il seriale dobbiamo crearci il Keygen per generare il Serial, io l’ho sviluppato in linguaggio C, si può sviluppare nel linguaggio che piace di più:
#include‹ctype.h›
#define MAX 11
#define A 22136 //5678h
#define B 4660 //1234h
int main(void)
{
char nome[MAX];
int i = 0;
int leng = 0;
int sum = 0;
printf("Name: ");
gets(nome);
leng = strlen(nome); //Calcolo la lunghezza
if (leng < MAX)
{
for(i = 0; i < leng; i++)
{
nome[i] = toupper(nome[i]); //Trasformo in maiuscolo
sum = sum + nome[i]; //Sommo le lettere
}
sum = sum ^ A ^ B;
printf("Serial = %d\n",sum);
}
else printf("Errore - Lunghezza Name eccessivo!\n");
system("PAUSE");
return(0);
}
Come avete notato ho dichiarato una costante MAX di valore 11, il motivo è semplice, la TextBox accetta solo 11 caratteri e non di più, se avete fatto attenzione prima mentre che steppavate il programma, quando abbiamo incontrato l'API GetDlgItemText c'era un 11, quel numerino indica proprio il numero di caratteri massimi che si possono inserire in quel campo, stessa cosa per il campo Serial.
Se noi ora proviamo a compilare ed eseguire in nostro keygen ed inseriamo come Name: qwer
Otteniamo Serial = 17779
proviamo ad inserirlo nel software e vedremo che funziona.

Sembra facile, i passaggi sono chiari ma il link non mi funziona
Link OK
questo è veramente la vera arte dei grandi maestri del Reverse engineering,
La scrittura di KeyGen nel modo più pulito e più efficace di girare le sicurezze,
visto che per definizione non introduce e non modifica nulla dall’eseguibile dove vogliamo applicarlo,
mi lasciò un link in più http://quequero.org/Home dove sicuramente si trova tanti informazione con questo spirito.
Wow davvero non ci sono parole… con due righe di C hai fatto un keygen 🙂 pensavo fosse qualcosa di più complicato..ma avrei un paio di domande… pensando ai soliti giochi per PC.. loro ti forniscono direttamente un seriale giusto (S/N).. mica vogliono che tu inserisca un nome prima?
Quindi la domanda è per questi giochi la generazione del keygen si basa su aspetti diversi..?oppure si crea un database di “nomi” riconosciuti e tramite l’algoritmo si genera un seriale di tipo random?
Oppure mi scappa sicuramente qualcosa e non essendo del mestiere magari sapete chiarirmimeglio…
Oppure in altri giochi si crea il cosiddetto file crack che è lo si incollava al posto del .exe del gioco..li invece era tutta un’altra storia no?Mi sa che facendo cosi il S/N manco serviva più…ormai è passato qualche anno da quando non installo qualche gioco potente che richiedeva in passato queste tecniche..chissà magari i tempi sono cambiati..
Come da oggetto… 🙂
Leggendo l’articolo, infatti, mi è venuta in mente proprio la stesa domanda che hai fatto tu:
(QUOTO)”per questi giochi la generazione del keygen si basa su aspetti diversi..?oppure si crea un database di “nomi” riconosciuti e tramite l’algoritmo si genera un seriale di tipo random?”
Inoltre, mi viene un altro dubbio: proprio sulla scorta della tua giusta osservazione anche sui crack, ma non è che per caso esistono tipologie di algoritmi differenti per la generazione di seriali?
Ad esempio: la frontiera oggi, nel cracking dei giochi è battere il SecuROM, che rompe le scatole, con licenza parlando, perfino quando i giochi li compri originali (e da appassionato, ti garantisco che ne so qualcosa… :p)
Il punto è che anche questo sistema nel corso del tempo si è modificato, è stato migliorato e le nuove uscite hanno meccanismi differenti.
Allora la mia domanda è questa: esistono tipologie di generazione di seriali differenti a seconda degli applicativi? E se si, sono algoritmi che possono evolvere o no?
Io ho sempre immaginato che ci fosse un meccanismo tipo controllo di parità per verificare che un seriale fosse “legittimo”. È così? E se no, come funziona?
Non so se sono andato OFF-topic con questa domanda ma io sono completamente a digiuno di cracking per cui fate conto che io su questo parto proprio da zero, se non qualcosina prima.
già penso che abbiamo le stesse perplessita.. e immagino anche che per gl’altri non sia tanto semplice risponderci in quanto sono argomenti abbastanza delicati..quindi se stefano e fabrizio possono..che battano pure un colpo 🙂 e magari ci dicono di piu..ovviamente se ci sono altri appassionati..ben vengano chiarimenti in merito!
ciao
In realtà non ci sono metodi fissi esiste di tutto come sistema, prati pari con la fantasia che ha il programmatore a fare il controllo del seriale.
Premetto che ormai saranno più di quattro anni che non faccio più Reverse ma i metodi basi sono sempre questi,
Il più semplice è come avete illustrato voi nell’eseguibile esiste un piccolo DB spesso criticato dove vengono contenuti una serie di chiavi e che saranno le uniche che attivano il programma.
mi è capitato anche un programma dove c’era solo una chiave per di più in chiaro che attirava col programma.
Per questo esiste una funzione già presente in oly che ricerca tutte le stringhe presente nell’eseguibile.
Dopo ne esiste una variante ad esempio quello che Microsoft ha adottato nella metà degli anni 90,
Ad esempio una certa versione di Office era necessario solo mettere ****1234567 dove le quattro * erano un numero fisso i numeri che seguivano qualsiasi
questa è una protezione che all’epoca era piuttosto diffusa dove alcuni numeri erano fissi e altri random
Dopo da questo principio c’è stata un’evoluzione la parte fissa più la parte random davano uno dei numeri di controllo che vengono piazzate o infine del seriale o in mezzo a posti prestabiliti, in questo caso c’è doppio controllo la presenza dei numeri prestabiliti in più a funzioni di controllo che poteva essere stupidamente anche da controllo di parità qualunque sia spesso si è visto anche sistemi come il numero del codice a barre,
questo è stato impiegato ad esempio sulle carte sky i primi tre numeri erano 0001, 0002 e 0003 seguito da sette numeri che dividono il numero della carta e l’ultimo è il codice di controllo all’epoca non aveva bloccato I pirati per clonare queste carte.
Dopo ci sono tutti algoritmi i più disparati che esistono,
Ma alcuni elementi sono sempre quelli di generatore random,
I numeri primi per la loro capacità di scomposizione,
le operazioni booleani AND e OR e XOR
i contatori.
L’ultimo che ho dell’assemblato veniva nascosto anche la data di scadenza della licenza di fianco modificando questa potevi usarlo per un tempo indeterminato o discretamente lungo visto che possibile 9999 giorni che nella realtà corrispondono 273 anni.
Chiaramente tutti questi algoritmi hanno l’unico scopo di non fare utilizzare il programma a chi non ha pagato i dovuti di licenze e questo si è instaurato una specie di gara a chi scrisse il miglior algoritmo di protezione ma il problema fondamentale è questo.
una persona scrive l’algoritmo di protezione, 100 persone provano ad bucare quell’algoritmo,
Quindi la statistica ci dice che a famosi di tentativi si arriva per forza alla soluzione.
Ma le ultime novità in questo campo è la registrazione su server remoto,
Anche qui c’è una discreta possibilità di bucare il sistema,
una delle più note è la funzione registra via telefono, egli basta creare keygen della attivatore via telefono.
cosa riguarda il sistema SecuROM questo è stato messo in giro dalla Sony con l’unico scopo di distruggere tutto il mercato della rivendita dei giochi o prestito dei giochi.
È questo è un altro grosso problema attuale delle case produttrici essendo giochi carri,
Come farmi fratello una volta che ha finito i giochi con i suoi amici si prestano a vicenda.
così alla possibilità di provare tutti, ma passando moltissimo il numero di giochi acquistati,
Senza parlare del commercio di alcuni catene specializzate GameStop che hanno organizzato la rivendita di giochi usati.
Le case produttrici di giochi vedono di un brutto occhio questa pratica visto che diminuisce e un fattore non indifferente il numero di vendite.
quindi creano quei sistemi di registrazione per evitare che vengono usate più di un numero di volte questo gioco.
perché certamente attualmente possibile con un emulatore di DVD di utilizzare i giochi con la sicurezza SecuROM è peggio di tutti viene creato iso con la sicurezza al suo interno, quindi il sistema non se ne rende conto e pensa di essere legittimo,
Nella realtà dei fatti spiegare il funzionamento di un algoritmo di sicurezza è legale,
è solo l’utilizzo di queste conoscenza a scopo di utilizzare un gioco senza aver pagato le licenze non è permesso dela legge.
Per di più aggiungerei che un buon algoritmo di sicurezza ad esempio l’algoritmo di cifratura AES è pubblico si può leggere anche http://it.wikipedia.org/wiki/Advanced_Encryption_Standard il suo funzionamento.
La necessità del segreto e solo quando l’algoritmo è piuttosto scarso, e qui premia più il segreto come fattore di sicurezza.
Questo problema si è posto nella seconda quota mondiale dove l’algoritmo enigma era perfettamente conosciuto, ma non esistevano metodi per bucarlo efficaci.
Io penso che il metodo più semplice per scoprire quei algoritmi e di provarci.
dopo un po’ di tempo vi accorgerete che in fin dei conti i metodi sono sempre quelli.
varia solo la loro implementazione
l ‘algoritmo “reeindal ” ..come si pronuncia.. si ne avevo sentito già parlare… mi sà che è famosissimo..cmq si hai ragione spiegare il funzionamento è legale..ma con “delicato” mi riferivo al fatto che sono argomenti complessi da trattare cosi su un forum..cmq ho letto sulla wiki pagina..che sono riusciti a penetrale l AES attraverso un attacco a forza bruta durato 5 anni…sfruttando i processori di persone volontarie e parallelizando i calcoli..incredibile..alla fine poi ci si riesce sempre dato che il numero di combinazioni è limitato..e non c e nessuna dinamica che fa mutare il riconoscimento effettivo..una volta scelto è tt statico e nn cambia nulla a quanto pare…
In realtà adesso mi stava venendo in mente un’altra cosa..e le chiavette delle banche? quelle ad esempio di MPS..che devi mettere la tua pass key piu quella della chiavetta “univoca”..associata a non so cosa..forse il tempo..anche quelle si possono scovare in qualche modo?poi ovviamente il problema è provarle perchè hai solo 3 tentativi per riuscirci…forse li veramente la possibilità di penetrare il sistema è davvero ridotta a quasi zero…o sbaglio?se poi si riesce anche li allora..veramente siamo alla frutta ragazzi..mamma mia aiuto !
ciao marco
Ciao a tutti,
a giudicare sia dall’articolo che dalle risposte mi sembra ci sia molta confusione riguardo al mondo del reversing. Premetto che non voglio fare l’arrogante ma fare chiarezza, visto che per anni ho frequantato l’ambiente del reversing e ho anche scritto alcuni Crackme, KeyGenen e tutorial e ho conosciuto molti cracker della scena italiana e non. Non me ne voglia l’autore di questo articolo ma inserire dei pezzi di codice in questo modo non chiarisce affatto cosa voglia dire creare un keygen. Qui mi sembra ci sia uno scopiazzamento preso da tutorial già in circolazione in rete da anni e in particolare su famoso sito di reversing. Anche gli articoli dello stesso autore precedentemente postati su questo sito sono molto ‘familiari’ e già in rete da molto tempo e casualmente trattano tutti dello stesso argomento di tutorial già vecchi di anni (Lezione su ollydbg, Come patchare un programma, Come creare un key generator ecc.ecc.) ma sarà solo una casualità…
Detto questo, vorrei rispondere ad alcune domande fatte nei commenti:
Per “divivoma” e “Piero Boccadoro”: la verifica dei seriali nei programmi tipo i giochi o comunque dove non deve essere inserito il nome avviene principalmente calcolando un checksum della chiave inserita oltre ad alcuni altri controlli.
Faccio un esempio:
supponiamo che il seriale per un gioco sia questo -> 12W35-987QA-ZZ0987
per verificare la correttezza del seriale non ci sarà bisogno di database crittografati o meno perchè questo non renderebbe più sicura la protezione, ma anzi la renderebbe più debole, poi se volete vi spiego il motivo in un post diverso.
Quello che solitamente viene fatto è:
1 – controllare che ad una certa posizione sia presente un certo carattere (ad esempio il ‘-‘ ad una posizione precisa)
2 – calcolare il checksum del seriale o di una parte di esso sia corretto secondo un algoritmo preciso (es: la somma dei codici ascii dei primi 5 caratteri deve risultare sempre un certo valore)
Faccio un esempio pratico per chiarire meglio il concetto.
Un codice seriale è generato in questo modo (è un esempio banale che non corrisponde al seriale di esempio fornito):
1 – La somma dei primi 5 caratteri deve essere 1000
2 – il terzo carattere è calcolato sommando i caratteri numerici del seriale. La somma viene poi divisa per 3 finchè non si giunge ad un numero minore di 128 e il valore risultante sarà convertito in ascii.
3 – Gli ultimi 5 caratteri sono calcolati a partire dai primi 10.
E così via. I metodi di protezione sono infiniti.
Per quanto riguarda le protezioni SecuROM e affini, poco hanno a che fare con la generazione di keygen. Quelle protezioni sono realizzate proteggedo l’eseguibile con un sistema di ‘packing’ che crittografa l’eseguibile e ne rende impossibile lil disassembling con programmi tipo ollydbg. In quel caso solitamente si usano sofrwate di debugging (vedi SoftICE) che ti permette di vedere il codice ‘run time’, nel momento dell’esecuzione dello stesso. Ovviamente esistono protezioni che rilevano programmi di debugging e bloccano l’esecuzione del programma per evitare che venga sprotetto (per ogni protezione comunque c’è sempre una contromossa :-)).
Anche qui servirebbe un post specifico data la vastità del tema e la difficoltà per chi non è esperto di questo mondo.
La forzatura di chiavi crittografiche riguarda un’altra cosa ancora.
Per ‘craccare’ una chiave crittografica non possono essere gnerati keygen, in quanto la chiave non è reversabile e si procede perciò solo col bruteforcing. La forzatura della protezione in questo caso è solo questione di tempo.
Ad esempio il famoso DES non è mai stato ‘reversato’ (ricostruito l’algoritmo) ma non è più sicuro perchè con la potenza di calcolo dei calcolatori moderni un bruteforce richiede pochi minuti.
Spero di aver chiarito le idee ad alcuni di voi e resto a disposizione per ulteriori chiarimenti.
Ciao a tutti,
Kino
Ciao Fabrizio,
sono d’accordo con te in parte ma dissento quando dici che è stato fatto un riassunto per rendere il discorso più accessibile per i non addetti ai lavori.
Chi è a digiuno di assembly di debugging o di programmazione non trae giovamento dal vedere listati di eseguibili disassemblati o parti di codice con una breve descrizione.
A mio parere (ma posso ovviamente sbagliarmi) sarebbe stata più utile una spiegazione più teorica, che rimandasse poi ai siti di reversing per un eventuale approfondimento, dove la generazione del keygen è spiegata dalla prima all’ultima riga.
Dubito che chi è a digiuno di reversing possa aver capito qualcosa del codice disassemblato o dei sorgenti assembly; l’errore secondo me è pubblicare qualcosa a metà tra un articolo tecnico specifico e una lezione teorica.
Per quanto riguarda il DES hai ragione quando dici che la crittoanalisi è una parte fondamentale di un attacco ad un algoritmo, ma alla fine serve solamente per migliorare le tue procedure di bruteforcing eliminando chiavi che non potrebbero esistere per come è fatto l’algoritmo. Non è vero che il DES non necessita di essere reversato in quanto pubblico. Forse mi sono spiegato male. Quando dico che il DES non è mai stato reversato intendo dire che non è possibile, partendo da un testo cifrato, risalire all’originale testo in chiaro facendo reversing. Non è cioè possibile estrarre la chiave dal testo cifrato.
Mi fa piacere finalmente parlare un po’ di reversing. La scena italiana è da anni che soffre un po’ e ci sarebbe bisogno di un ritorno al passato.
Ciao a tutti,
Kino
La realtà dei fatti è che se questi articoli che sembrano così familiari e che semplicemente è metodo canonico di come funziona il mondo Crack e KeyGen.
Quindi sembra che Stefano88 c’è semplicemente voluto illustrare il funzionamento di queste cose,
sicuramente conoscendo anche io personalmente i siti che sicuramente avrei frequentato anche tu, esempio http://quequero.org/Home gli articoli è vero che prendono spunto da guide che girano da lunghi anni,
ma Stefano da cosa ne giudico ha completamente rielaborato l’argomento rendendolo più accessibile anche a gente che non è specialista o che ha fatto anni di studio su questo argomento quindi è un puro lavoro di sintesi e di volgarizzazione del sapere e non in copia incolla di un altro sito.
Riguarda i sistemi tipo SecuROM o anche HDCP questi sistemi richiedono più di sofrwate di debugging anche funzionante anche funzionante a livello kernel, ma veri propri dispositivi esterni come un aggregatore di stati logici, questi attacchi sono proprio i più difficili da realizzare e che necessitano di connetterti direttamente sul circuito stampato e leggere il flusso di dati in transito.
ma con questo sistema si è riusciti a recuperare a chiare crittografiche ad esempio del sistema HDCP.
Per cosa riguarda le codifiche non esiste solo il metodo bruteforcing ma esiste tutta una parte chiamato crittoanalisi questa branca studia d’esempio i metodi per migliorare un attacco in bruteforcing,
Ad esempio facendo un’analisi dell’algoritmo cifrante da questo puoi determinare collisioni chiare possibili,
O eliminare le chiavi che non possono essere usate così da passare il numero di tentativi.
http://it.wikipedia.org/wiki/Attacco_del_compleanno
Infine l’algoritmo DES (Data Encryption Standard non) non necessita di essere reversato visto che pubblico dalla sua creazione.
illuminaci… qual’è il passato dell’italia nel reversing..sono curioso 🙂 ?? ricordo ancora l’aggeggino che aveva mio zio per la scheda di tele +..scommetto che anche quello fa parte di questo passato..da cui si potevano inserire i codici per “clonare” le schede..ma nn so..magari mi sbaglio dimmi tu 🙂
Ad ogni modo sono d’accordo con te riguardo al fatto che..se si deve dire una cosa bisogna dirla per bene..e tener presente che chi legge è sempre un “ingnorante” in materia in quanto siamo su un blog aperto..e chiunque può leggere l’articolo..
Ovviamente ciò non toglie la buona fede di stefano che comunque ci ha messo del suo..e ciò va sottolineato giustamente..poi ovviamente se qualcuno conosce più a fondo ciò che viene trasmesso negl’articoli..amen..a sua volta potrebbe proporre qualche articolo più specifico..per ribadire il concetto, no?
Non buttiamo troppo giù il lavoro di ciascuno di noi che scrive..ognuno a modo suo ci mette impegno 😉
Penso che qui c’è un po’ di confusione per cosa riguarda Crittologia,
In realtà è possibile estrarre la chiave dell’algoritmo DES attraverso un testo cifrato con questo algoritmo,
ma allo stesso modo è possibile estrarre chiari anche algoritmi molto più complessi come AES 256.
Da da questi due algoritmi il metodo più comuni per estrarre la chiave che permette di decifrare il messaggio È un metodo di Crittanalisi.
In realtà il metodo a forza bruta ( bruteforcing ) non s’codifica il messaggio ma estranei dal messaggio codificato la chiave crittografica, in seguito servirà a squalificare il messaggio.
tutti i metodi conosciuti attualmente estraggono la chiave da un messaggio cifrato strani metodi che sono basati sull’ingegneria sociale.
Visto che siamo un pochino fuori tema l’invito a continuare sul forum dove vi spiegherò un pochino i metodi di attacco alle cifratura
Non sono espertissimo di crittografia, ma se fosse possibile estrarre la chiave da un testo cifrato allora non servirebbe usare il bruteforcing ma semplicemente un algoritmo di reversing, stile keygen.
Il bruteforcing non è altro che una serie di tentativi di decrittazione con diverse chiavi, prese da un ‘dizionario’ o create ad hoc in seguito a crittanalisi.
Correggimi se sbaglio.
Ciao,
Kino.
qui possiamo continuare a discutere di cifratura e Crittoanalisi
http://it.emcelettronica.com/forum/continuiamo-qui-discutere-di-cifratura-e-crittoanalisi
Una volta in italia esistevano diversi gruppi di reverser, anche validi a livello internazionale. Alla sera ci si trovava su canali irc par parlare di cracking, degli ultimi metodi di protezione, si scrivevano tutorial dove si analizzavano i nuovi algoritmi creati dalle software house. Si frequentavano anche i canali internazionali dove c’erano i più bravi cracker in circolazione.
Vi parlo di più di 10 anni fa, quando c’erano ancora i modem analogici…
Bei tempi…
Qui è un problema più filosofico che tecnico,
In questo caso intenti reversing come un attacco di tipo senza trovare la chiave di codifica, ma dall’altra parte chi esce direttamente il testo in chiaro.
Nella realtà dei fatti dal momento che il testo codificato e il testo in chiaro con metodi riesce a ottenere la chiave crittografica.
È più interessante ottenere la chiave crittografica perché spesso viene usata sempre alla stessa, quindi puoi squalificare molti messaggi.
Hai ragione kiko, ma io ti assicuro che non ho scopiazzato da nessuna parte, non è colpa mia se ci sono diversi tutorial uguali, come detto in precedenza volevo solo mostrare una base su come poter iniziare a fare reversing tutto qua, ovviamente la mia vuole essere una critica verso te era solo per dire. Comunque spero sia stata cosa gradita questi tutorial, è vero che mettere istruzioni qua e la di assembly non è utile, ma non sapevo come spiegarlo e mi sono sforzato decine di volte a riscrivere alcune parti per renderle comprensibili a chi di assembly non ne ha mai visto e sentito parlare.
Non ti preoccupare,
il tuo lavoro è un’ottima cosa, provochi anche il metodo di mostrare poche ma interessanti pezzi di codice assembla risulta molto efficace, non è necessario mostrare le altre cose che il codice critico dove effettivamente modifiche o rendersi.
È non ti preoccupare che sappiamo benissimo che non è uno scopiazzato c’è Emanuele che ci tiene d’occhio e controlla che non accade questo.
ma si dai tranquillo !! continua così…!
Ok grazie a tutti che avete apprezzato il mio lavoro
>c’è Emanuele che ci tiene d’occhio
quoto 😉
Una domanda: qualora la generazione della password avvenga lato server, come si può risalirne all’algoritmo generante?
BUONGIORNO RAGAZZI VOLEVO SAPERE IL FUNZIONAMENTO O QUALCHE CHIARIMENTO IN PIU,DEI GENERATORI DI CODICI DI SCHEDE PREPAGATE PER I GIOCHI,
GRAZIE MILLE IN ANTICIPO