01-15-2016, 07:09 PM
Вообщем исправил я эту ошибку,но теперь новая клиент обрывает соединение когда я ему шлю пакет PROTOCOL_BASE_CONNECT_ACK.Есть идеи?
ничего не приходит после PROTOCOL_BASE_CONNECT_ACK
|
01-15-2016, 07:09 PM
Вообщем исправил я эту ошибку,но теперь новая клиент обрывает соединение когда я ему шлю пакет PROTOCOL_BASE_CONNECT_ACK.Есть идеи?
PROGRAMMATOR Написал:Перепроверять структуру, так как явно sessionId не может быть 0.Проверил структуру вроде всё ок,но всё равно клиент вылетает вот пакет: [SRC="csharp"] SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public); byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); string publicKey = Convert.ToBase64String(serializedPublicBytes); Logger.Instance.Info("Key length = " + Encoding.ASCII.GetBytes(publicKey).Length); using (var stream = new MemoryStream()) using (var writer = new BinaryWriter(stream)) { writer.Write(new byte[] { 0x96, 0x00 }); writer.Write(new byte[] { 0x02, 0x02 }); writer.Write(new byte[] { 0x00, 0x00 }); writer.Write(new byte[] { 0x01, 0x00, 0x00, 0x00 }); // session id writer.Write(new byte[] { 0x00, 0x00 }); writer.Write(new byte[] { 0x02, 0x0b, 0x00, 0x09, 0x00}); // client version writer.Write(new byte[] { 0x85, 0x00 }); // key length writer.Write(Encoding.ASCII.GetBytes(publicKey)); writer.Write(new byte[]{ 0xfc, 0xb0, 0x01, 0x00, 0x01, 0x01, 0x01, }); return stream.ToArray(); } [/SRC] а вот метод генерации ключей: [SRC="csharp"] public static AsymmetricCipherKeyPair GeneratePair() { CryptoApiRandomGenerator randomGenerator = new CryptoApiRandomGenerator(); SecureRandom secureRandom = new SecureRandom(randomGenerator); RsaKeyPairGenerator rsa = new RsaKeyPairGenerator(); rsa.Init(new KeyGenerationParameters(secureRandom, 512)); AsymmetricCipherKeyPair pair = rsa.GenerateKeyPair(); return pair; } [/SRC] В чём может быть проблема? Добавлено через 22 минуты Изменил на этот код и клиент не закрывается,но ответного пакета не шлёт( [SRC="csharp"] writer.Write(new byte[] { 0x98, 0x00 }); writer.Write(new byte[] { 0x02, 0x02 }); writer.Write(new byte[] { 0x00, 0x00 }); writer.Write(new byte[] { 0x01, 0x00, 0x00, 0x00 }); // session id writer.Write(new byte[] { 0x00, 0x00 }); writer.Write(new byte[] { 0x02, 0x0b, 0x00, 0x09, 0x00}); // client version writer.Write(new byte[] { 0x85, 0x00 }); writer.Write(Encoding.ASCII.GetBytes(publicKey)); writer.Write(new byte[]{ 0xda, 0xfc, 0x01, 0x00, 0x11, 0x01, 0x01, }); [/SRC]
01-15-2016, 09:28 PM
Проблема в ключе, я же писал, что он только тело передает, да и еще изменённое, просто сгенерировать и отдать клиенту - ничего не даст.
Dom2;405348 Написал:writer.Write(new byte[] { 0x02, 0x0b, 0x00, 0x09, 0x00}); // client version - это версия сервера
01-15-2016, 09:45 PM
PROGRAMMATOR Написал:Проблема в ключе, я же писал, что он только тело передает, да и еще изменённое, просто сгенерировать и отдать клиенту - ничего не даст. Как именно изменено?И как всё это реализовать?я в rsa вообще нуб:redlol: Если что пилю я под GAME VER : 2.12.18.151123010
01-15-2016, 09:51 PM
Понятия не имею как изменяет, я же писал об этом. Нужно пробовать цеплять S2MO_32bit.dll и смотреть, как генерит и как считывает.
Юзаю 2.12.19.160112004
01-15-2016, 09:55 PM
PROGRAMMATOR Написал:Понятия не имею как изменяет, я же писал об этом. Нужно пробовать цеплять S2MO_32bit.dll и смотреть, как генерит и как считывает. В моей версии клиента вроде тело ключа не изменяется,но всё равно почему то клиент обрывает соединение и закрывается...
01-15-2016, 10:17 PM
Вроде? Генерируете же 512 бит вместо 1024.
01-15-2016, 10:26 PM
PROGRAMMATOR Написал:Вроде? Генерируете же 512 бит вместо 1024. 1024 битный ключ должен же быть равен 128 байтам верно?так вот у меня он равен 216 байтам почему то.бред короче.
01-15-2016, 11:23 PM
Это в base64, без нее 162 байта, отступить 29 байт инфы о ключе, выбрать 128 байт ключа, пропустить 2 байта с размерами public экспоненты и в конце сама экспонента.
Получается 128 ключик и три байта экспонента, так что всё верно. Другое дело все это скормить клиенту. |
« Предыдущая | Следующая »
|
Возможно похожие темы ... | |||||
Тема | Автор | Ответы | Просмотры | Последний пост | |
После перезахода сервер отказываеться видить клиент | 6 | 2,152 |
08-08-2017, 11:26 PM Последний пост: slawa560 |
||
После покупки предмета 0 часов | 1 | 1,469 |
08-06-2017, 12:15 AM Последний пост: PROGRAMMATOR |
||
PROTOCOL_BASE_CONNECT_ACK | 1 | 1,708 |
05-17-2016, 03:29 PM Последний пост: PROGRAMMATOR |
||
PROTOCOL_BASE_CONNECT_ACK | 12 | 3,179 |
01-21-2016, 12:15 PM Последний пост: PROGRAMMATOR |