Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
ничего не приходит после PROTOCOL_BASE_CONNECT_ACK
#21
PROGRAMMATOR Написал:Это в base64, без нее 162 байта, отступить 29 байт инфы о ключе, выбрать 128 байт ключа, пропустить 2 байта с размерами public экспоненты и в конце сама экспонента.

Получается 128 ключик и три байта экспонента, так что всё верно. Другое дело все это скормить клиенту.

Сделал без base64 пропустил 29 байт,выбрал 128 байт ключа и пропустил 2 байта,но всё равно клиент обрывает соединение
[SRC="csharp"]
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); // length = 162
byte[] buff = new byte[131];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, serializedPublicBytes.Length - 31);
Buffer.BlockCopy(serializedPublicBytes, 159, buff, 128, 3);
[/SRC]

Добавлено через 12 часов 12 минут
Что то один раз удалось зайти,а во второй раз нет
Ответ
#22
Dom2 Написал:Сделал без base64 пропустил 29 байт,выбрал 128 байт ключа и пропустил 2 байта,но всё равно клиент обрывает соединение
[SRC="csharp"]
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); // length = 162
byte[] buff = new byte[131];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, serializedPublicBytes.Length - 31);
Buffer.BlockCopy(serializedPublicBytes, 159, buff, 128, 3);
[/SRC]

Добавлено через 12 часов 12 минут
Что то один раз удалось зайти,а во второй раз нет


а ты ключ правильно генерируешь?
Ответ
#23
правильно вроде.
короче я тут заметил клиент не закрывается только в 3-4 случаях из 10...что это такое вообще?
[SRC="csharp"]
writer.Write(new byte[] { 0x96, 0x00 });
writer.Write(new byte[] { 0x02, 0x02 });
writer.Write(new byte[] {
0x00, 0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,
0x02, 0x0b, 0x00, 0x09, 0x00,
0x85, 0x00, 0x80, 0x00 });
writer.Write(buff);
writer.Write(new byte[] { 0x01, 0x00, 0x11, 0x01, 0x01 });
[/SRC]
Ответ
#24
Когда клиент падает, он выводит отладочную информацию. Возможно там он говорит, что ему не понравилось?
Ответ
#25
PROGRAMMATOR Написал:Когда клиент падает, он выводит отладочную информацию. Возможно там он говорит, что ему не понравилось?
Да ничего нужного не пишет.Вот последние строчки в логе BC
Код:
..\..\..\src\i3Framework\i3Framework.cpp(905) : [void __thiscall i3Framework::OnUpdate(float)]  :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_LOAD_END Enter

..\..\..\src\i3Framework\i3Framework.cpp(931) : [void __thiscall i3Framework::OnUpdate(float)]  :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_LOAD_END Leave

E:\PB_Backup_All\2015-01-15\PointBlank\Source_New\ClientSource\Source\GameFramework.cpp(3086) : [void __thiscall CGameFramework::OnUpdate(float)]  :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_FADEIN_START Enter

E:\PB_Backup_All\2015-01-15\PointBlank\Source_New\ClientSource\Source\GameFramework.cpp(3089) : [void __thiscall CGameFramework::OnUpdate(float)]  :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_FADEIN_START Leave

[2016/1/16-14h:28m:27s(282)] VSN C:2.12.18 S:2.11.9
[2016/1/16-14h:28m:27s(285)] * LOGIN 1 - start

[2016/1/16-14h:28m:27s(290)] * LOGIN 1 - end
Ответ
#26
явно ид сессии не может быть 0
Ответ
#27
Boris2105 Написал:явно ид сессии не может быть 0

Изменил на 1 не помогло
Ответ
#28
Значит проблема в ключе.
Ответ
#29
PROGRAMMATOR Написал:Значит проблема в ключе.

Вроде же всё правильно.Я в гугле брал инфу о генерации пары.
Сначала вот так генерирую пару:
[SRC="csharp"]
public static AsymmetricCipherKeyPair GeneratePair()
{
CryptoApiRandomGenerator randomGenerator = new CryptoApiRandomGenerator();
SecureRandom secureRandom = new SecureRandom(randomGenerator);
RsaKeyPairGenerator rsa = new RsaKeyPairGenerator();
rsa.Init(new KeyGenerationParameters(secureRandom, 1024));
AsymmetricCipherKeyPair pair = rsa.GenerateKeyPair();
return pair;
}
[/SRC]
Далее вот так вот получаю байты ключа:
[SRC="csharp"]
SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public);
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded();
byte[] buff = new byte[128];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, serializedPublicBytes.Length - 34);
[/SRC]

Где проблема тогда?((
Ответ
#30
Да так сложно что-либо понять, кода "молча" ложится. У меня обычно если ключ он не принял - то выводит стандартное окно BugTrap и там пишет, что-то типа:

[Изображение: lakEX.png]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  После перезахода сервер отказываеться видить клиент slawa560 6 2,440 08-08-2017, 11:26 PM
Последний пост: slawa560
  После покупки предмета 0 часов slawa560 1 1,659 08-06-2017, 12:15 AM
Последний пост: PROGRAMMATOR
  PROTOCOL_BASE_CONNECT_ACK Boris2105 1 1,882 05-17-2016, 03:29 PM
Последний пост: PROGRAMMATOR
  PROTOCOL_BASE_CONNECT_ACK Sojang 12 3,571 01-21-2016, 12:15 PM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)