Jump to content
Tuts 4 You

[keygenme] dihux's keygenme 2


Recommended Posts

Hi dihux.

Due to the nature of the "Product Key" i wont reveal any details on calculating it, as i will spoil the fun for others who want to try this crackme.

If anyone wants to try this crackme, i highly suggest to him/her not to see another person's solution or submission.

Yes, it was nice, and yes, it could have become harder (but yet solvable).

Thanks for the crackme. :)


Edited by HVC
Link to comment
Share on other sites

  • 1 month later...

EDIT: updated version. Thanks to the person who spotted that sometimes invalid keys were genned - school girl error calculating K relative to P rather than the required P-1.


HVC suggested I try this one... I did and enjoyed it so thanks dude :)

Trying to learn some C rather than just ASM at the moment so double the interest (and frustration with VS Express!) ;)

Enjoyed it a lot, thanks dihux.

Important C is below as I guess few others will try this now (apologies if its crap coding, as I said I'm learning). Might help someone trying to do some ElGamal I guess? I'd suggest learning from the masters though.

Individual product code parts were solved with some quick n easy php....

Greetz to those way better at this than me an who I'm still learning from.

wsprintf((char *)&szProduct_Code, "37911-DIHUX-62119-FUNNY-%5X", ((GetTickCount()^rand())&0xFFFFF));
SetDlgItemText(hDlg, ID_EDIT_PRODUCT_NUMBER, szProduct_Code); //initialise miracl system and variables
miracl *mip = mirsys(256, 0);
mip->IOBASE = 16; bytes_to_big((int)strlen(szUserName), (char *)szUserName, big_M); // const bignums g, p, x, y
cinstr(big_G, "39DDDC2ECDDEB42918A6");
cinstr(big_Prime, "CBEC5F1F97FB14C803CB");
cinstr(big_X, "3C9790DF807600AF91D"); //serial1 = g ^ k % p
powmer(big_G, 1, big_Prime, big_Ser1); //serial2 = (M - (serial1 * x)) * k^-1 % (p-1)
decr(big_Prime, 1, big_Prime);
multiply(big_Ser1, big_X, big_X);
subtract(big_M, big_X, big_X);
power(big_X, 1, big_Prime, big_X);
add(big_X, big_Prime, big_Ser2); // show serial
cotstr(big_Ser1, szRegistration_Code_a);
cotstr(big_Ser2, szRegistration_Code_;
wsprintf((char *)&szRegistration_Code, "%s-%s", szRegistration_Code_a, szRegistration_Code_;


Edited by Loki
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...