Здравствуйте, гость ( Вход | Регистрация )

> Шифрование клиента
StaticZ
сообщение 4.6.2014, 3:33
Сообщение #1


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Насколько мне удалось понять протокол UO устроен следующим образом:

1) Приветствие - Клиент отправляет не зашифрованный пакет 0xEF (New Client Version). Проверенно на 7.0.х клиентах, для старых могу предположить что вместо него идет 0xBD (Client Version), но проверить нет возможности. Кто знает когда был введен пакет 0xEF и может ли кто подтвердить приветствие старых клиентов???

2) Полученные версии клиента служат основой для генерации ключей шифрования, что используются совместно с сидом (IP адресом клиента) для XOR шифрования всех последующих пакетов отправляемых клиентом. При этом пакеты от сервера не шифруются. При этом вроде как для клиентов до 1.25.36 есть эти ключи работают не много по другому.


3) После перенаправления клиента с логин-сервера на гейм-сервер пакетом 0x8C (Play Server Accept), начинает использоваться шифрование, в качестве сида которого используется, как я понял - последние 4 байта сего пакета (Auth ID)... Дальше начинается муть.... В зависимости от версии клиента используются алгоритмы шифрования:
а) < 2.0.0 - Blowfish (клиент->сервер)
б) 2.0.0x to 2.0.3 - Blowfish + Twofish (клиент->сервер)
в) > 2.0.4 - Twofish (клиент->сервер) ||| MD5 (сервер->клиент)

В тоже время в нетах всплыло что-то про сжатие Huffman, которое применяется то ли для старых клиентов то ли перед шифрованием....


Кто в теме, может просветить о деталях сего процесса. Так же хотелось бы уточнить, что именно шифруется - содержимое пакета без ID и размера в случае если у пакета не постоянный размер? Или шифруется весь поток блоками какого-то размера?

И еще меняется ли размер данных при использовании этих алгоритмов?

Сообщение отредактировал StaticZ - 4.6.2014, 3:35


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Warstone
сообщение 21.6.2014, 18:26
Сообщение #2


*********

Группа: Модераторы
Наличность: 0
Пользователь №: 10.905
Возраст: 25



Цитата
Причем тут ранка когда мне нужно обрабатывать пакеты именно на стороне клиента )
Ты не можешь сделать зеркальный алгоритм? Печально.


--------------------
Do. Or do not. There is no Try!
© Master Joda, Dagobah, Star Wars: Episode V.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
StaticZ
сообщение 21.6.2014, 20:56
Сообщение #3


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Цитата(Warstone @ 21.6.2014, 19:26) *
Ты не можешь сделать зеркальный алгоритм? Печально.
Да сказал же - вопрос времени, заново открывать америку глупо, если кто-то ее уже открыл )) Тем более проблема скорее всего не в алгоритмах шифрования а либо в их применении либо в получении потока данных.

Честно говоря с тех пор как создал эту тему даже не садился за это - завяз в других задачах. Как разберусь засяду - это посути следующий майлстоун у меня )


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
StaticZ
сообщение 17.7.2014, 3:12
Сообщение #4


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Итак проблема решена, главным виновником оказались 4 байта, что клиент впихивал перед пакетом 0х91 и из-за чего у парсера пакетов сносило крышу, ну и по совместительству они же и были сидом, а не ип... Ну а для порядка хотелось бы прояснить ситуацию на будущее. И так:
  • C->S: 0xEF (no encrypt) - своеобразное приветствие клиента, отсылаемый им Seed (IP address) и есть seed Xor шифрования для логин сервера.
  • C->S: 0x80 (xor) - данные авторизации
  • S->C: 0xA8 (no encrypt) - список серверов (в случае правильного логина конечно)
  • С->S: 0xA0 (xor) - выбор сервера
  • S->C: 0x8C (no encrypt) - разрешение на вход и данные сервера (в реальности логин сервер и игровой сервер разные машины для обеспечения большей производительности и пропускной способности, на эмуляторах конечно такие эпичные задачи не ставятся).
  • С->S: 4 bytes (no encrypt) - это не пакет, а просто seed для Twofish алгоритма.
  • С->S: 0х91 (twofish) - авторизация на игровом сервере
  • S->C: 0xB9, 0xA9 (md5+huffman) - список поддерживаемых сервером фич и список персонажей лист..
  • С->S: 0х5D (twofish) - выбор персонажа и список поддерживаемых клиентом фич
  • S->C: 0xBD (md5+huffman) - запрос версии клиента
  • C->S: 0xBD (twofish) - ответ с версией клиента
  • S->C: 0x1B (md5+huffman) - разрешение на вход с данными об игроке
  • .......... Ну а дальше понеслась...
Все что от клиента шифруется twofish, а то что от сервера сначала жмется Хаффманом, а потом шифруется md5 (разновидность XOR), собственно если поток перехватываем на стороне клиента то действуем наоборот - сначала дешефруем, а потом распаковываем. Данные проверенны на клиенте 7.0.18.0, скорее всего верны и для более старых, но поскольку пакет 0xEF введен относительно не давно там он чемто заменяется наверно. Возиться с старыми клиентами мне было в лом.

Теперь еще осталось разобраться с таблицей пакетов, то что идет от клиента можно вытащить из самого клиента, но пакеты что может принимать клиент хотелось бы поточнее...

Сообщение отредактировал StaticZ - 17.7.2014, 3:15


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
StaticZ   Шифрование клиента   4.6.2014, 3:33
Juzzver   Не в теме, но быть может будет полезным провести а...   4.6.2014, 12:35
StaticZ   Не в теме, но быть может будет полезным провести ...   4.6.2014, 13:11
Frog   ЗЫ Еще в догонку вопрос - как из таблицы пакетов в...   4.6.2014, 14:32
Warstone   Статикз, провести анализ работы UOExt религия не п...   5.6.2014, 0:46
StaticZ   Статикз, провести анализ работы UOExt религия не ...   5.6.2014, 1:35
Warstone   Кстати я так и не понял как ты из клиента вытащил ...   14.6.2014, 22:00
RL_ka   список версий всех существующих клиентов, за исклю...   14.6.2014, 12:18
StaticZ   Пакеты-изменения: 6.0.1.07 - пакет 08, пакет 25, ...   16.6.2014, 5:29
Warstone   Ну и еще можно добавить что VerInfo клиента дает и...   14.6.2014, 22:33
StaticZ   Ну и еще можно добавить что VerInfo клиента дает ...   16.6.2014, 5:12
Warstone   А ты какую версию перехватываешь?.. И не проще-ли ...   19.6.2014, 0:31
Nickname   И не проще-ли найти ML ранку (RunUO RE 1.4) она е...   19.6.2014, 0:40
StaticZ   А ты какую версию перехватываешь?.. И не проще-ли...   19.6.2014, 14:09
yazZ3va   Итак проблема решена, главным виновником оказалис...   31.10.2015, 0:58
Warstone   И я опять тебя спрошу, а не проще-ли было спросить...   17.7.2014, 11:19
StaticZ   И я опять тебя спрошу, а не проще-ли было спросить...   17.7.2014, 14:20
Warstone   И первый мой коммент...Да... Так как кому надо - з...   18.7.2014, 21:03
BoBrO   не могли бы вы скинуть пример пакета "0х5D...   22.7.2014, 10:20
StaticZ   не могли бы вы скинуть пример пакета "0х5D...   27.7.2014, 13:52
Frog   не могли бы вы скинуть пример пакета "0х5D...   30.7.2014, 0:22
Warstone   Гайд Вятта накрылся. А я его не сохранил ((   29.7.2014, 23:47
AdmiR   Гайд Вятта накрылся. А я его не сохранил (( А гд...   9.10.2014, 2:28
Mirage   Вот так и теряется в вечности нужное :(   9.10.2014, 8:23
Warstone   Пакет гайд Вятта http://ruosi.org/packetguide/inde...   31.10.2015, 7:33
yazZ3va   Не знаю куда я смотрел, но первые 4 байта это game...   31.10.2015, 12:22


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 8.7.2025, 12:14
Designed by Nickostyle