Hi,
i'm a newbie in reverse engineering and i wanted to learn something about it so i tried to exploit the old version of trackmania, based on your exploits (
http://aluigi.org/adv/tm4never-adv.txt). I started comparing the two servers and finally (i hope) i found the right key for generating crc (it was a lot of work for me oO):
I've tried to create a valid tcp-packet with that and after comparing with the original packets i noticed that the crc-check failed. I was using your code with my key. Like this:
Code:
u32 trackmania_crc(u8 *key, u8 *data, int datalen) {
static u8 fixed_key[] = "..."; //u can fill it out on your own :P
u32 hash[4];
if(!key) key = fixed_key;
if(datalen < 0) datalen = strlen(data);
md5_hmac(key, 16, data, datalen, (u8 *)hash);
return(hash[0] + hash[1] + hash[2] + hash[3]);
}
Now my question: whats wrong with my idea? How do you get this code of generating crc (did the algorithm get changed in forever?)?! How u know how a tmn-package is getting splitted (1. size, 2. crc, 3. data...)?
The old TMN ESWC server can be accessed here:
http://www.tm-forum.com/viewtopic.php?t=1350Greets