aaocg trial crackme?
--------------------

AAoCG trial crackmes, skodzony przez Diviego (yo!) nie zostal
dotad zlamany.. pewnie dlatego, ze nie da sie go zlamac ;-)

W cm jest sporo crypto-algosow, 90% mozna latwo rozpoznac, trudnosc
moze stwarzac tylko IDEA. Nie ma sensu przytaczac listingu, przejde
do meritum, czyli dlaczego ten crackmes jest nielamliwy?

Po szybkich ogledzinach, dochodzimy do wniosku, ze kombinacja
name-serial, musi spelniac nastepujace warunki:

1. SHA256(name) == RSA(HAVAl(serial))
2. SHA256(name) == RSA(DIVINE_CRYPT(serial))
3. SHA256(name) == IDEA(serial)

SHA256 i HAVAL to *nieodwracalne* hashe, IDEA to powszechnie
znany i odwracalny szyfr blokowy, DIVINE_CRYPT to zajebiscie
zamotana procka szyfrujaca Divinea (podobno mozna odwrocic :),
RSA to RSA ;) z public exponent = 3.
W pierwszym checku wystepuje nieodwracalna funkcja hashujaca,
wiec mozemy go sobie od razu odpuscic - funkcje hashujace
maja to do siebie, ze dla zadanego wyniku, nie mozna
obliczyc argumentu. Przypuscmy, ze f(x) jest f. hashujaca, wtedy
dla danego y, nie da sie obliczyc takiego x, ze f(x)==y.
Mamy wiec 1 dowod na to, ze cm jest nielamliwy ;)

Looknijmy teraz na RSA. W pierwszym szyfrowaniu, mamy modulus:

41317833364634483671345467456E37
PRIME FACTOR: 3
PRIME FACTOR: 11
PRIME FACTOR: 47
PRIME FACTOR: EF
PRIME FACTOR: 199
PRIME FACTOR: 5847DB00751
PRIME FACTOR: 8F5F74758401BD

whaaa, sporo tych czynnikow :)
ale dla nas to nie problem - wszyscy wiemy, ze liczba czynnikow
pierwszych dla klucza publicznego RSA moze byc dowolna, w praktyce
przyjela sie najmniejsza mozliwa ich liczba = 2. Dla 2 czynnikow
pierwszych, klucz prywatny liczymy ze wzoru:

d = e^-1 mod fi(N)

gdzie fi(N) = (p-1)(q-1)

dla wieloczynnikowego N, mamy

fi(N) = (p1-1)(p2-1)(p3-1)...(pi-1)

gdzie p1..pi to kolejne czynniki pierwsze N.

Musi tez byc spelniony warunek, ze 'e' ma byc wzglednie
pierwsze z fi(N), inaczej nie bedzie mozna policzyc 'd' - klucza
prywatnego.
Sprawdzmy czy ten warunek jest spelniony dla N=41317833364634483671345467456E37
3-1 = 2 (ok)
11-1 = 10 (ok)
47-1 = 46 = 2*5*7 (ok)
EF-1 = EE = 2*7*11 (ok)
199-1 = 198 = 2^3 * 3 * 11 (zonk)

W rozkladzie 199-1 mamy 3, wiec warunek pierwszosci nie jest zachowany :/
Wniosek z tego prosty - nie da sie deszyfrowac przy e=3.

Potem mamy jeszcze 2 szyfrowania RSA:

43337A353848364A3873365669477039
PRIME FACTOR: 5
PRIME FACTOR: 1D
PRIME FACTOR: 2185
PRIME FACTOR: 4313D07
PRIME FACTOR: D823B2BC47B4D0A314C3

ble ble..
i nasz oryginalny kluczyk:

45357C373A4A384C3A7538586B49723B
PRIME FACTOR: A540FEA06989C43
PRIME FACTOR: 6B36B6EBE016CEEA9

ale nawet dla niego, deszyfrowanie nie jest mozliwe - look at diz:

A540FEA06989C43-1
PRIME FACTOR: 2
PRIME FACTOR: 3
PRIME FACTOR: 3
PRIME FACTOR: 92E4708E96B359

Wstawcie do RSAToola powyzsze dane i public exponent == 3 i kliknijcie
Generate..

"Error. Public exponent E is not relatively prime to (p-1)(q-1)!
Choose a different value for E."

Cierpliwie czekamy na fixa.. im szybciej, tym predzej ;)

greets dla diviego za crackmesa :)

ged_//TKM!
www.tkm-squad.prv.pl