MemoryCore 0 #491932 Posted November 4, 2020 @Dragon armor Каким алгоритмом (режимом алгоритма CBC/ECB) расшифровать пакеты после авторизации? при авторизации 'session' длиной 32 байта является сессионным ключом, верно? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #491944 Posted November 4, 2020 @MemoryCore Уточни вопрос. После авторизации - значит при подключении на baseapp? Там blowfish используется. Алгоритм шифрования не менялся с BigWorld 2.01, в исходниках можно посмотреть реализацию. Если ты про шифрование данных авторизации - там RSA. 7 часов назад, MemoryCore сказал: при авторизации 'session' длиной 32 байта является сессионным ключом, верно? 32 бита наверное. Ты про первый нешифрованный пакет после авторизации от клиента к серверу? Насчёт терминологии не знаю, это число нужно для того, чтобы идентифицировать пользователя. Дальше оно не используется. 31.10.2020 в 02:38, DrWeb7_1 сказал: А кто тогда определяет дерево исследования? И клиент, и сервер? В клиенте визуальное отображение, в xml файлах связи между техникой, модулями, порядком открытия (т.е. при исследовании модуля/техники что должно стать доступным). 31.10.2020 в 02:38, DrWeb7_1 сказал: Внутри клиента игры оно представлено XML-файлом, насколько я помню. На сервере – понятия не имею. Да, в клиенте xml. На сервере данные те же. Но сервер отправляет клиенту то, что исследовано, а что нет. Сейчас же даже первый уровень техники не открыт, потому что сервер не отправляет клиенту информацию об этом. Вот такой скрин есть у меня из старой версии эмуля. Хотя вся техника доступна. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #491945 Posted November 4, 2020 (edited) 24 минуты назад, Dragon armor сказал: На сервере данные те же. То есть, можно на сервере построить дерево исследования, например, от версии 0.8.11 в сервере 0.9.22, создать соответствующую ему клиентскую структуру и оно будет работать? О_о Похоже, снова срабатывает твой аргумент в пользу именно этой версии — неважно, какая версия клиента, всё равно всё определяется сервером? Edited November 4, 2020 by DrWeb7_1 Перепутал слова. Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #491946 Posted November 4, 2020 Только что, DrWeb7_1 сказал: То есть, можно на сервере построить дерево исследования, например, от версии 0.8.11 в клиенте 0.9.22, создать соответствующую ему клиентскую структуру и оно будет работать? О_о Можно проверить же. Попробуй в старом клиенет поменять и посмотреть, изменится ли визуально. В клиенте отображаются связи между модулями/техникой, чтобы эти данные не гонять постоянно. Серверу тоже надо брать откуда-то информацию. Вот например, часть файла. <_150mm_Rohr_L29_5> shared <maxAmmo> 30 </maxAmmo> <unlocks> <vehicle> G97_Waffentrager_IV <cost> 163500 </cost> </vehicle> </unlocks> При исследовании 150мм орудия будет открыт вафлепаз. И сервер следует этим инструкциям. Исследовал - сервер отправил клиенту информацию, что эта техника теперь доступна для исследования. 6 минут назад, DrWeb7_1 сказал: Похоже, снова срабатывает твой аргумент в пользу именно этой версии — неважно, какая версия клиента, всё равно всё определяется сервером? Это же такой тип игры, где сервер сам играет за клиента, а ему отображает лишь визуальную картинку. Quote Share this post Link to post Short link Share on other sites
MemoryCore 0 #491950 Posted November 4, 2020 @DragoN Я занимаюсь исключительно реверсингом протокола. 1. Клиент отправляет на сервер JSON который накрывается RSA-2048. в JSON есть поле session размер которого 32 байта * 8 = 256 бит Session: "b03e3025d4bca9df96cb11860855f5a3" После отправки пакета с авторизацией на сервер (нам возвращается Invalid Login в чистом виде - если данные не валид или зашифрованный пакет) Я смотрел под отладчиком - зашифрованный пакет расшифровывается но я перепробовал все реализации Blowfish [JTS-tanks / и просто разные методы дешифровки blowfish] на данные на выходе так-же остались зашифрованными. @Dragon armorРазобрался с дешифровкой пакетов, от сервера прилетает Json с accountID / NickName и token2. Формат token2 -> 30387392:8461659054643771568:204598897782153838542585458392281532956 - каким образом клиент получает информацию о игроке? это тоже сервер отдает или web api? Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #491960 Posted November 4, 2020 2 часа назад, MemoryCore сказал: в JSON есть поле session размер которого 32 байта * 8 = 256 бит Ты вон о каком параметре. Это хеш, вроде md5. В скриптах игры мне так и не удалось разобраться, какие именно данные хешируются. Для чего нужен - так же не знаю. На авторизацию не влияет. 2 часа назад, MemoryCore сказал: каким образом клиент получает информацию о игроке В энтити Login получает db_id. Вслед за этим создаётся энтити Account, в которой содержится никнейм. Смотри соответствующие def файлы. Также заметь, что не занимался тестированием того, что произойдёт, если в "name" отправить один никнейм, а в Login другой. Какой именно примет клиент и будет ли разница - не знаю. Quote Share this post Link to post Short link Share on other sites
MemoryCore 0 #491968 Posted November 4, 2020 (edited) @Dragon armor скорее всего Session является (хэшем SHA-1 HWID железа) ибо он не меняется (только если другое железо) У меня есть еще вопрос касательно дешифрования пакетов (некоторые пакеты не дешифруются после дешифровки blowfish - есть ли там какие-то сжатие zlib возможно, и я так понимаю там до сих пор осталась структура py pickle?) Edited November 4, 2020 by MemoryCore Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #491972 Posted November 4, 2020 1 час назад, MemoryCore сказал: скорее всего Session является (хэшем SHA-1 HWID железа) ибо он не меняется (только если другое железо) Нет, там md5. m = hashlib.md5() m.update(params['session']) params['session'] = m.hexdigest() 1 час назад, MemoryCore сказал: некоторые пакеты не дешифруются после дешифровки blowfish - есть ли там какие-то сжатие zlib возможно, и я так понимаю там до сих пор осталась структура py pickle?) Там постоянно cPickle, во многих zlib. Ты пакеты на отдельные сообщения разбираешь? Quote Share this post Link to post Short link Share on other sites
MemoryCore 0 #491974 Posted November 4, 2020 @Dragon armor Очень интересно потому-что у меня длина session равна (40) а у md5 (32) - впрочем это не так важно. Я думаю над написанием MITM клиента поэтому и спросил про расшифровку (Да, я разбираю пакеты на отдельные сообщения, надеюсь они не отправляются частями?). у них zlib сжатие после шифрования или до шифрования? P.s сейчас юзаю сплайсинг для чтения буффера шифрования / дешифрования. Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #491977 Posted November 4, 2020 21 минуту назад, MemoryCore сказал: у них zlib сжатие после шифрования или до шифрования? У них zlib зависит от типа отдельного сообщения. Одно может быть сжато, другое cPickle, а третье - строка (json например). И всё в одном пакете. Смотреть надо в скриптах игровых, как интересующее сообщение создаётся. 23 минуты назад, MemoryCore сказал: надеюсь они не отправляются частями? И такое может быть. С флагами пакета разобрался? В исходниках BigWorld о них есть достаточно информации. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #491979 Posted November 4, 2020 (edited) 5 минут назад, Dragon armor сказал: Одно может быть сжато, другое cPickle, а третье - строка (json например). И всё в одном пакете. Ну и бардак. Или так задумано ввиду объёма передаваемых данных? Edited November 4, 2020 by DrWeb7_1 Quote Share this post Link to post Short link Share on other sites
MemoryCore 0 #491980 Posted November 4, 2020 4 минуты назад, Dragon armor сказал: У них zlib зависит от типа отдельного сообщения. Одно может быть сжато, другое cPickle, а третье - строка (json например). И всё в одном пакете. Смотреть надо в скриптах игровых, как интересующее сообщение создаётся. И такое может быть. С флагами пакета разобрался? В исходниках BigWorld о них есть достаточно информации. @DragoNспасибо огромное за ответы на интересующие вопросы. Теперь понял в какую сторону нужно двигаться по протоколу. 2 минуты назад, DrWeb7_1 сказал: Ну и бардак. Или так задумано ввиду объёма передаваемых данных? Бардак жесткий, намного удобнее было бы использовать protobuf Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #491981 Posted November 4, 2020 3 минуты назад, DrWeb7_1 сказал: так задумано ввиду объёма передаваемых данных Разные программисты делали разные части проекта. Может так. 3 минуты назад, MemoryCore сказал: намного удобнее было бы использовать protobuf У них питон основной язык. Используют то, что есть в языке. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #492009 Posted November 5, 2020 04.11.2020 в 14:59, MemoryCore сказал: Формат token2 Этот вид токена применяется Wargaming.net Game Center, если производить авторизацию через него или при использовании "Быстрого входа" через Wargaming.net OpenID в клиенте игры. Ниже соответствующая запись python.log из клиента 1.10.1.1, хотя она же справедлива и для 0.9.22.0.1. Цитата 2020-11-04 01:51:03.082: NOTICE: [NOTE] (scripts/client/connection_mgr.py, 242): User authentication method: token2 Quote Share this post Link to post Short link Share on other sites
Vanya115 0 #492015 Posted November 5, 2020 Переход с 0.9 на последний патч проблематичным будет? Или можно просто танки из последних версий переносить на старый клиент? Можно ли будет устроить битву Левиафана с Вафлей Е110 против Неуязвимого (у него там только 500мм брони и 25000 хп)? Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #492017 Posted November 5, 2020 4 минуты назад, Vanya115 сказал: Можно ли будет устроить битву Левиафана с Вафлей Е110 против Неуязвимого (у него там только 500мм брони и 25000 хп)? Нельзя. У этих танков разное представление на уровне физического движка. Quote Share this post Link to post Short link Share on other sites
Plotnik5252ru 13 #492020 Posted November 5, 2020 Тоесть танки из режимов нельзя перенести или сделать? Quote Share this post Link to post Short link Share on other sites
Vanya115 0 #492022 Posted November 5, 2020 40 минут назад, Plotnik5252ru сказал: Тоесть танки из режимов нельзя перенести или сделать? Сделать наверное можно. Ну а перенести... Кстати, у Вафли и Неуязвимого вроде бы должна быть совместимость, они же из похожих патчей. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #492023 Posted November 5, 2020 6 минут назад, Vanya115 сказал: Кстати, у Вафли и Неуязвимого вроде бы должна быть совместимость, они же из похожих патчей. Твой вопрос из предыдущего поста был про перенос на 0.9.х. Такое не прокатит. Quote Share this post Link to post Short link Share on other sites
Plotnik5252ru 13 #492024 Posted November 5, 2020 10 минут назад, Vanya115 сказал: Сделать наверное можно. Ну а перенести... Кстати, у Вафли и Неуязвимого вроде бы должна быть совместимость, они же из похожих патчей. Ну смотри есть обычная вафля в клиенте. И то можно просто сделать или перенести на неё этот стиль или шкурку? А с остальным идей даже нет. А характеристики там хп и тд, можно менять на сервере. Quote Share this post Link to post Short link Share on other sites