Показать сообщение отдельно
Старый 16.02.2010, 23:19   #63
Новичок
 
Регистрация: 27.08.2009
Сообщений: 17
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Jetty пока неопределено
По умолчанию

Бродил, наткнулся.
Мб кто-то будет искать, найдет:
Код:
/*=============== 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 модуль из первого пакета надо переворачивать ?
И если да то на каком этапе ?)

Последний раз редактировалось Jetty, 17.02.2010 в 01:22. Причина: Добавлено сообщение
Jetty вне форума   Ответить с цитированием