Показать сообщение отдельно
Старый 14.01.2011, 15:41   #7
Новичок
 
Регистрация: 12.01.2011
Сообщений: 16
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Brave пока неопределено
По умолчанию

Собственно разобрав пример который мне прислал уважаемых alexteam я составил алгоритм действий, который опишу ниже для того чтобы знатоки
откорректировали недочёты, если они есть, и тема была полезна для других пользователей.
Собствено алгоритм:
Сразу хочется сказать что размер пакета отрезаеться при его получении и добаляеться при его отправке
то есть пакет состоит из структуры:
packet=record
size:word//размер пакета
Data:array [0..size]of byte;//собственно данные с которыми мы проводим операции.
end;

1. Создаём соединение с логин сервером.
2. Принимаем пакет Init.
2.1 Расшифровываем Data при помощи ХОR ключа содержащегося в последних 4-х байтах
2.2 Расшифровываем Data статическим ключом BlowFish.
2.3 Запоминаем SessionID 4 байта. RSA ключ 128 байт. Новый BlowFish ключ 16 байт.
3.Отправляем пакет RequestGGAuth c SessionID, который взяли из пакета Init.Добавили ЧекСумму.Зашифровали BlowFish.
4.Приняли ответ GGAuth от сервера.
4.1 Расшифровали его BlowFish.
4.2 Запоминаем GGAuthResponse
Теперь у нас есть все данные чтобы авторизироваться на сервере.
5. Зашифровываем логин и пароль при помощи RSA.
5.1 Формируем пакет RequestAuthLogin:128 байт Зашифрованного логина и пароля.В 129 байт пишем 4 байта с GGAuthResponse.
В 149 байт ставим 8. Добавляем чек сумму 160 байт.
5.2 Зашифровываем пакет BlowFish из пакета Init.
6. Отправляем.
7.Принимаем, все ли правильно сделали. =)

Жду ответов. Так же хочется узнать об изменениях этого алгоритма в зависимости от хроник.

А еще чуть не забыл спросить. Что такое Ревизия?? Я это слово встречал на сборках серверов, а есть ли она у клиента?
Brave вне форума   Ответить с цитированием