Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 12.04.2015, 15:27   #1
Новичок
 
Регистрация: 13.11.2014
Сообщений: 20
Сказал Спасибо: 2
Имеет 1 спасибку в 1 сообщении
i_am_kisly пока неопределено
По умолчанию Проблема с пакетом RequestAuthLogin

Помогите решить проблему с пакетом. При одном и том же логине на стороне клиента, на стороне сервера он расшифровывается в "случайный" набор символов. Если включить автосоздание аккаунтов, то сервер создает аккаунт и присылает "LoginOK".
Логично предположить, что проблема на этапе сборки и/или шифрования, не где - я хз уже всё облазил, но не догоняю.
Очень прошу помочь советом, ошибка где-то в этом коде (шифрование нагло стырено из L2NET):

Код:
//Осторожно быдлокод! Уберите женщин и беременных детей от мониторов!!

		// RSA_pubKeyMod must point to 128-bytes length buffer
		public bool create( byte[] szL2Login, byte[] szL2Password, uint ggAuthResponse, byte[] RSA_pubKeyMod )
		{
			//
			// vars
			int l2l_len = szL2Login.Length;
			int l2p_len = szL2Password.Length;
            byte[] l2login = new byte[L2_LOGIN_MAXLEN];
            byte[] l2password = new byte[L2_PASSWORD_MAXLEN];
			byte[] block128 = new byte[128];
			int           i = 0;
			const int     l2l_offset = 94;
			const int     l2p_offset = 108;

			// check strings length
			if( (l2l_len<1) || (l2l_len>L2_LOGIN_MAXLEN) )
			{
				Console.WriteLine( "L2Login_RequestAuthLogin::create(): L2 Login length must be [1..{0}] chars\n", L2_LOGIN_MAXLEN );
				return false;
			}
			if( (l2p_len<1) || (l2p_len>L2_PASSWORD_MAXLEN) )
			{
				Console.WriteLine( "L2Login_RequestAuthLogin::create(): L2 Password length must be [1..{0}] chars\n", L2_PASSWORD_MAXLEN );
				return false;
			}
			// copy strings
			for( i=0; i<(int)l2l_len; i++ ) l2login[i]    = szL2Login[i];
			for( i=0; i<(int)l2p_len; i++ ) l2password[i] = szL2Password[i];

            //
            
            Array.Copy(l2login , 0, block128, l2l_offset, L2_LOGIN_MAXLEN);
            Array.Copy(l2password, 0, block128, l2p_offset, L2_PASSWORD_MAXLEN);

			// RSA encode block...
			if( !this.block_encode_RSA( ref block128, (uint)block128.Length, RSA_pubKeyMod ) ) return false;
			// construct packet
			this.writeReset();
			this.setPacketType( 0x00 );                    // RequestAuthLogin code
			this.writeBytes( block128, (uint)block128.Length ); // block with login/password
			this.writeUInt( ggAuthResponse );              // from GGAuthResponse
			for( i=0; i<16; i++ ) this.writeUChar( 0x00 ); // 16 NULLs
			this.writeUChar( 0x08 );
			for( i=0; i<10; i++ ) this.writeUChar( 0x00 ); // some 11 bytes
			// now packet must be padded to 8-byte border
			// next caller must add checksum, and so on...
			return true;
		}

		// for internal use only
		// encode block with login/password
		// RSA_pubKeyMod must point to 128-bytes length buffer
		protected bool block_encode_RSA( ref byte[] block , uint blockSize, byte[] RSA_pubKeyMod )
		{
			//
			byte[] Exponent = {1,0,1};

			//Create a new instance of RSAParameters.
			System.Security.Cryptography.RSAParameters RSAKeyInfo = new System.Security.Cryptography.RSAParameters();

			//Set RSAKeyInfo to the public key values. 
			RSAKeyInfo.Modulus = RSA_pubKeyMod;
			RSAKeyInfo.Exponent = Exponent;

			L2_Login.RSAManaged poo = new L2_Login.RSAManaged();
			poo.ImportParameters(RSAKeyInfo);

			byte[] outb = new byte[128];

			outb = poo.EncryptValue(block);
			return true;

		}
По сути меняться могут только RSA_pubKeyMod, так как ggAuthResponse у меня всегда равен нулю.

Добавлено через 13 часов 20 минут
Зашибись у меня RSA работает Два дня не спал прост, как проспался, так сразу заметил.

Последний раз редактировалось i_am_kisly, 12.04.2015 в 15:28. Причина: Добавлено сообщение
i_am_kisly вне форума   Ответить с цитированием
Старый 12.04.2015, 15:50   #2
Новичок
 
Аватар для noklin
 
Регистрация: 15.03.2015
Сообщений: 6
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
noklin пока неопределено
По умолчанию

Я что-то не понял в чем проблема?
noklin вне форума   Ответить с цитированием
Старый 13.04.2015, 19:24   #3
Новичок
 
Регистрация: 13.11.2014
Сообщений: 20
Сказал Спасибо: 2
Имеет 1 спасибку в 1 сообщении
i_am_kisly пока неопределено
По умолчанию

Да разобрался уже. Результат rsa шифрования никуда не передавался.
i_am_kisly вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 04:12.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!