Jump to content
Flubber

[RE] Reverse Keygen Algorithm #2

Recommended Posts

"Ce am de indeplinit?"

Gaseste algoritmul de care se foloseste keygen-ul din arhiva (vezi  mai jos link-ul pentru download) pentru a genera serial key-ul.

Optional:

Rezolva ReverseMe2-ul inclus in pachet (valabil din lectiile facute de lena151   -- lectia #10).

Indiciu: O cale de a il rezolva foarte usor, este prin a rezolva challenge-ul acesta si a obtine parola la arhiva.

Download:

http://www.multiupload.com/8QPQ8XNGWM

Marime arhiva: 6.4 MB: 6676756 bytes (datorita DLL-ului pentru Windows Media Player -- stiu, lame, dar acceptati-mi urmatoarea scuza: nu ma pricep la programare GUI in C sau ASM)

Scuzati ca este scris in limba engleza (m-am gandit ca poate va fi de folos si altora).

Nu sunt restrictii, puteti folosi orice. Rezolvarile prin PM. Ele se vor anunta aici (dupa o perioada), inclusiv numele celor ce au rezolvat-o (daca se doreste).

Dificultate: Usor

Nota: Putin mai greu decat anteriorul.

Cine a rezolvat competitia? Lista este urmatoarea:

  1. rospark
  2. flux
  3. xpaulx
  4. SilviuSDS
  5. Usr6
  6. alkimistu

Algoritmul folosit de keygen:

Se iau primele 5 caractere introduse in field-ul pentru nume. Pe baza acestor 5 caractere genereaza un string cu valorile lor in ASCII (zecimal). Din acest string se inlatura prima cifra iar restul pana la 10 cifre sunt afisate. Acesta reprezinta serial-ul pentru ReverseMe 2.0.

Ce se intampla atunci cand introducem doar "a"?

"a", are codul ASCII in zecimal egal cu 97. 5 de a => 97 97 97 97 97, insa se inlatura prima cifra din serial: 7 97 97 97 97 => 9 caractere.

Unii au fost indusi in eroare datorita acestui detaliu, fiindca odata ce introducem caractere cu valoarea ASCII in zecimal mai mare decat aceea a literei "c" (99), serial-ul va avea lungimea egala cu 10:

4 de "c" si un "d": 99 99 99 99 100, unde se inlatura prima cifra: 9 99 99 99 100 => 10 caractere.

Rezolvarile participantilor:

Este timpul pentru a va aduce la cunostinta rezolvarile.

rospark,

Un rezumat foarte frumos si o aplicatie ce indeplineste conditiile scrisa in C++, chiar nu ma asteptam la o asemenea analiza (majoritatea fiind scurt si la subiect fie dupa observatii ale serial-ului, fie din alte analize proprii). El este valabil la urmatoare adresa:

http://pastebin.com/672NhaPG

[!] Atentie, rezumatul este in limba engleza!

flux,

pune si tu ceva mai complicat flubby

la asta se face dec din toate caracterele si se unesc rezultatele

dupa din sirul rezultat se elimina prima cifra si sunt extrase urmatoarele 10

=> key-ul

xpaulx,

Direct la subiect, explicatia ce am dat-o si mai sus, la fel se aplica si in cazul lui SilviuSDS cu o mica schimbare.

SilviuSDS,


Deci l-am dibuit si pe asta.

Keygenul are nevoie de 5 caractere pentru a putea genera un serial pentru ca oricate caractere ai baga in acel textbox el ia in calcul doar primele 5 caractere. Am observat ca daca niciun caracter din primele 5 nu are valoarea sa in ascii mai mare sau egal ca 100 atunci serialul va avea lungimea de 9 caractere, altfel o va avea de 10 caractere.

String^ key; //asta va memora serialul
bool length = false; //daca e fals atunci la urma serialul va avea 9 caractere, altfel va avea 10 caractere

Scoatem din textbox primele 5 caractere si apoi le procesam dupa cum urmeaza:
1.Verificam daca este vreun caracter care are valoarea in ascii mai mare sau egal cu 100 si daca gasim unul care are valoarea mai mare atunci setam length = true;

2.Luam primul caracter il convertim in ascii, valoarea sa in ascii o convertim in string si ii stergem primul caracter(ex: daca avem "101" va ramane doar "01", daca avem "56" va ramane doar "6") si il adaugam la stringul key.

3.Luam al 2-lea caracter si il convertim in ascii si apoi in string si il adaugam la key si facem asa cu toate celelalte caractere ramase.

4.Verificam daca booleanul length este adevarat sau fals, daca e fals stergem tot din sirul key de la pozitia 9 in continuare, daca e adevarat atunci stergem tot din key de la pozitia 10 in continuare.

Si Voila, keygenul nostru va genera un serial exact la fel ca cel original.

Nu am avut acum timp sa fac si keygenul dar il voi face mai tarziu si il voi posta. Poate metoda mea e putin neortodoxa si exista metode mai usoare de a genera acel serial dar fiecare are modul lui de gandire, right?

Usr6,

O metoda mai neortodoxa din partea lui Usr6, foarte interesanta! Si uite asa cu rezolvarea lui Usr6 in ochiul tuturor, aveti parola si pentru VeoVeo (utilitar ce bineinteles, il puteti gasi gratuit pe net).


incep cu finalul

QWxnbyB1c2VkIHRvIGVuY3J5cHQgaXMgUk9ULTEzIHdpdGggc2 hpZnQgb2YgMTI=
Algo used to encrypt is ROT-13 with shift of 12

Suhq m ymz m odmow, mzp tq'xx nq tgzsdk msmuz fayaddai. Fqmot tuy tai fa odmow, mzp tq'xx zqhqd nq tgzsdk msmuz.
cezar 12
parola arhivei este :
Give a man a crack, and he'll be hungry again tomorrow. Teach him how to crack, and he'll never be hungry again.

acu algoritmu :
key ul are 9 sau 10 cifre (daca apar litere >=d )
codare
cifre:
0=84 1=94 2=04 ... 9=74
litere
a=74 ... c=94 d=004 ... m=094 n=104 ...w=194 x=204 z=224

cum se formeaza key ul
daca elementu din dreapta este cifra nu se schima nimic, daca elementul din dreapta este litera a,b,c se aduna 5, daca e d-z se scade 3
ex:
introducem "a1bis" key este trunchiat la 10 cifre
in dreapta lui a este cifra deci -->[COLOR=#ffa07a]74[/COLOR]
in dreapta lui 1 este litera <d deci se aduna 5 -->[COLOR=#ffa500]99[/COLOR]
in dreapta lui b se afla i >d deci se scade 3 -->[COLOR=#ffff00]81[/COLOR]
in dreapta lui i se afla s >d deci se scade 3 -->[COLOR=#00ff00]051[/COLOR]
in dreapta lui s nu mai e nimic deci -->[COLOR=#afeeee]1[/COLOR][COLOR=#ff0000]54 [/COLOR]
key-->[COLOR=#ffa07a]74[/COLOR][COLOR=#ffa500]99[/COLOR][COLOR=#ffff00]81[/COLOR][COLOR=#00ff00]051[/COLOR][COLOR=#afeeee]1[/COLOR]

alkimistu,

Ei bine, mura-n gura, un keygen scris de el ce indeplineste acelasi lucru. Mai jos este functia scrisa de el in Visual C# ce indeplineste conditiile keygen-ului:


string StringToASCII(string input)
{
int asc=0;
int i = 0;
char c;
string concat = null;

for (i = 0; i < input.Length; i++)
{
c = input[i];
asc = input[i];
concat = concat + asc;
}

return concat;
}
private void button1_Click(object sender, EventArgs e)
{

if (textBox1.Text.Length < 5)
{
MessageBox.Show("Te rog introdu minim 5 caractere");
}
else
{
if (Convert.ToInt32(StringToASCII(textBox1.Text.Substring(0, 1))) < 97)
{
string a = StringToASCII(textBox1.Text).Substring(1, 1);
textBox2.Text = (StringToASCII(textBox1.Text).Remove(0, 1) + a ).Substring(0, 9);
}
else
{
string a = StringToASCII(textBox1.Text).Substring(1, 1);
textBox2.Text = (StringToASCII(textBox1.Text).Remove(0, 1) + a).Substring(0, 10);
}
}
}

Dupa cum mi s-a spus, trebuie sa aduc keygen-uri (scrise intr-o limba mai rezonabila) si algoritmi mai dificili, nu ma injurati cei ce vi s-a parut o floare la ureche, a fost usor intr-adevar, dar sa fie si confortabil pentru toata lumea.

Pana data viitoare!

Edited by Flubber
update 2: rezolvari - alkimistu
  • Upvote 1
Link to comment
Share on other sites

Bun, sa zicem ca avem algoritmul, dar tot nu inteleg parola de la arhiva de unde o scoatem?

La ce foloseste reginfo.key generat de ReverseMe2?

ReverseMe2 a fost inclus pentru a ii face reverse in caz ca te intereseaza cum ar arata algoritmul pus in practica de aplicatia respectiva (caruia i-a fost destinat keygen-ul), unde as face o recomandare: urmariti tutorialul facut de lena151!

Parola pentru arhiva o scoti din keygen.

Apropo, pentru a termina competitia, este necesar decat algoritmul! Restul este optional.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...