Бродил, наткнулся.
Мб кто-то будет искать, найдет:
Код:
/*=============== RequestAuthLogin (RSA) ===============*/
unsigned char l_reqauthlogin[]=
"\xb2\x00" // Size
"\x00" // RequestAuthLogin (RSA) packet
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00" // GGAuthResponse from GGAuth packet
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00" //CRC
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
pktsize = (unsigned char)(l_reqauthlogin[1]*256+l_reqauthlogin[0]);
print_packet(l_reqauthlogin, pktsize, WITH_SIZE);
memcpy((l_reqauthlogin+2+1+96+2), login, sizeof(login));
memcpy((l_reqauthlogin+2+1+112), pwd, sizeof(pwd));
RSA * rsa_key;
rsa_key = RSA_new();
BIGNUM * bn_mod;
BIGNUM * bn_exp;
bn_mod = BN_new();
bn_exp = BN_new();
bn_mod = BN_bin2bn(RSA_key, sizeof(RSA_key), NULL);
BN_dec2bn(&bn_exp, "65537");
rsa_key->n = bn_mod;
rsa_key->e = bn_exp;
result = RSA_public_encrypt (128, (l_reqauthlogin+3), (l_reqauthlogin+3), rsa_key, RSA_NO_PADDING);
if (!result) {
printf("Error: %i %u\n", result, ERR_get_error());
}
Код написан на С, пригоден для С++, расчитан на библиотечные функции openssl (в Linux он всегда есть 8] ). Переменная RSA_key не что иное как unsigned char * RSA_key[128];
РСА ключ(точнее модуль) из первого пакета(unscrambleный ).
Код оказался не совсем стабильным, ищу баги ТТ
Ниже правильный код
Добавлено через 2 часа 2 минуты
Кстати а RSA модуль из первого пакета надо переворачивать ?
И если да то на каком этапе ?)