BattleNet авторизация
восстановлено с кеша google.com
Огромная благодарность Shadez за помощь. ================================================== ===================================== 1 Aven Грядет день Х когда с новым патчем станет невозможным авторизация по старому методу, давайте разберемся вместе с новым протоколом Вот, что пока удалось раскопать: Стандартный порт подключения: 1119 Адрес сервера указывается в файле realmlist.wtf в параметре set realmlistbn Клиент (тестировалось на 10505) подключается именно по нему, когда в качестве логина используется E-Mail. Логин использовался: 12345aabbcc@sfgsfg.ru Первый пакет отправляемый клиентом серверу: PHP код:
================================================== ===================================== 2 TOM_RUS В первом пакете содержится информация о версии компонентов клиента и логин в виде е-мэйла. Также несколько респонсов: PHP код:
Пакет 40 00: PHP код:
Запрос реалмлиста 40 02: PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
================================================== ===================================== 3 Aven Тоже поснифал Вот что интересно, в отличии от старого протокола, после получения полного списка миров клиент запрашивает периодически изменения в нем, а не полный список: запрос: PHP код:
PHP код:
http://pastebin.com/m449fe02c Пакет 40 10 - содержит данные о аккаунте WoW, видны строки имени оригинального аккаунта PHP код:
Вот тут есть описание протокола для старых игр, опкоды под каждую свои... |
================================================== =====================================
4 Fog А если прикрепить учетку еще и к US BN то оригинальное имя отправиться 2 раза и появится меню выбора учеток. Из двух одинаковых, правда. ================================================== ===================================== 5 TOM_RUS Цитата:
================================================== ===================================== 6 Aven к учетной записи БН можно прикреплять несколько аккаунтов, тогда после авторизации можно выбрать, какую учетную запись wow использовать. ================================================== ===================================== 7 TOM_RUS Цитата:
Цитата:
================================================== ===================================== 8 Fog Цитата:
P.S. В ЛК на battle.net отображалась eu-версия оригинальной учетки как WOTLK, а us-версия - как Trial, при каждом заходе писал, что срок вышел и требовал проплатить. Велосипед ? Реалмлист-опкод Код:
42 02 1A 07 04 0B 00 15 D0 A2 D0 BA D0 B0 D1 87 ID батлгруппы Имя (Ткач Смерти) Длина имени в байтах Связано с локалью ? id мира в батлгруппе ? Какие-то другие данные по id мира курсив составляет GUID реалма (?) 0B - ??? - не посылается в предыдущем пакете Нолик Флаги 00 + offline? (00) + realmType (01) + 00 00 00 + timezone (0C) + 00 population ================================================== ===================================== 9 TOM_RUS Сегодня было выяснено что battle.net протокол использует модули (DLL) подобно Warden, модули эти скачиваются с сервера http://auth.eu.depot.battle.net:80 (для евро). Обработку пакетов осуществляет этот самый загружаемый модуль. Название модуля было обнаружено в серверных пакетах 42 08 (первый логин, когда модуль еще не загружен на компьютер) и 42 10 (последующие логины). Логично предположить что в первом пакете (40 00) есть информация о том, загружен модуль или нет. В данный момент известно 6 модулей, их названия следующие: PHP код:
C:\Documents and Settings\<USER_NAME>\Local Settings\Application Data\Blizzard Entertainment\Battle.net\Cache. ================================================== ===================================== 10 Deamon Изврат, извраат! Прошлым вечером я пытался найти обработчики для этих опкодов в 3.2.2. Но в battlenet.dll я нашел только релазиции протоколов http/2.0 и ftp. А в wow.exe находится класс BattlenetLogin, и обработчиками там тоже и не пахнет. Теперь понятно почему ================================================== ===================================== 11 TOM_RUS Приблизительная структура пакета 42 10: PHP код:
12 Kosss Гдето в 0x4210 пакете помоему возвращается ИП сервера, либо в нём содержится хаш включающий в себя ИП шлющего сервера. Возможно ли? Просто если перенаправить например клиента на localhost через прокси Kobold PX, то клиент разрывает коннект с сообщением что игровой сервер не тот. Хотя прокси пропускает пакеты без изменений. Либо в 0x4000 первом пакете клиент хашит ип по которому коннектит, но тогда сервер не слал бы жирного пакета в 791 байт у меня а ответил чем то мелким с отказом. В общую копилку видимо аналогии RECONNECT_CHALLENGE: PHP код:
================================================== ===================================== 13 TOM_RUS Когда-то я тоже столкнулся с этой проблемой, но не стал разбираться из-за чего это происходит и заюзал winpcap вместо прокси. А что если прокси запустить на другой машине с реальным IP? Просто в battle.net.dll есть вот такой кусок кода: PHP код:
================================================== ===================================== 14 Kosss Да кстати. Возможно клиент банально проверил на локальный адрес. Проверю и сообщу. |
Я тут сидел, думал чего-то и пришел к выводу что вся проблема в том, что клиент не невозможно заставить работать через прокси, так как он его минует, в данном случае надо использовать Поставщик многоуровневых услуг (LSP) - тобиш заставить трафик от клиента (в любом случае) ходить через DLL которая и будет выполнять роль прокси. Но это только предположение.
http://www.komodia.com/index.php?page=lsp.html Это я начитался на wowcore.ru. |
http://darkblizz.org/wiki/doku.php
инфа по старкрафту II и bnet2.0 там же ссылка на врапер http://github.com/kow/Starcraft-2-Battle.Net-Wrapper ссылчка там есть Цитата:
http://filebeam.com/f81c1f89a3bbc2ae1d053c1b6baee5bb хотя всё это есть и тут http://github.com/kow/Starcraft-2-Ba...b0bd3bcff62742 |
хм... надо попробовать, вот что значит знание английского, я там неделю назад, читал (как мог) но так и *грубо* и не понял, и ушел искать дальше...
|
вот ещё полезная ссылка
http://darkblizz.org/wiki/doku.php?id=bnet2_protcol |
Цитата:
лично я пользуюсь http://www.proxifier.com/ |
как не странно я но я тоже решил как то попробовать через него (был случай когда отключили интернет и сидеть пришлось через друга который поднял UserGate) только была старая версия без НАТа... приходилось почему то подключать свой инет (подключаться он подключался только всегда писал что интернета нету. мол заплатите) чтоб battle.net мог авторизовать меня =\
|
Лазил по google нашел вот это: http://code.google.com/p/starcrack/
Больше всего насторожило http://code.google.com/p/starcrack/s...BattleNetWorld и http://code.google.com/p/starcrack/s...azy/bnetserver это что же получается - отревирсили BNet2 протокол? или только частично? |
похоже не совсем отреверсили. много затычек хардкодных. но судя по всему уже что то работает. и посмотрев бегло такое ощущение, что тут обычный вов...
|
Цитата:
|
Там достаточно информации чтобы полностью реализовать батлнет авторизацию для WoW. Но потребуется лоадер/модификация клиентских файлов для успешной авторизации.
|
что не есть приемлимо...
|
Цитата:
|
Изменение клиентский файлов почему? очевидно вроде, это уже прямое нарушение лицензии
|
Потому что по другому это невозможно сделать :)
P.S. Ну разве что хостить сервер на том же ип что и у близов, либо использовать проксификаторы и т.д. которые будут редиректить трафик на нужный сервер, чтобы клиент думал что подключается у близовскому IP... |
наверное нужен лоадер, типа как наш снифер-инжектор. Deamon?
|
Потому что потому :). А если серьезно - то очевидное очевидно. Близзы в BN2 используют подключаемые модули, которые загружаются с сервера. Основная доля криптографии, по которой происходит авторизация клиента, происходит в них.
1) Password.dll - сие есть кладезь криптографии. 2) Thumbprint.dll - а сие есть причина, по которой не удается подсунуть клиенту другой сервер(!!!). Именно в этой dll-ке происходит проверка на ip адресс. Если она оканчивается неудачей... ну вообщем вы поняли. Эти модули, как и модули вардена, подписаны цифровой подписью RSA-2048. Поэтому как и в вардене для использования самописных модулей необходмо сделать одно из двух: а) Разложить N длиной 2048 бит на простые множители. Как вы понимаете, вероятность успешности сего действия есть число бесконечно малое. б) Поменять в клиенте RSA ключ проверки на свой. Что есть уже более реальное действие, нежели первое Added: Вариант с подменой ip обсуждался в ирке. 1) Можно настроить маршрутизатор во внутренней сети так, чтобы по arp запросу на близовский ip выдавался мак локального маршрутизатора, и тот посылал пакеты на локальный WoW сервер. Тогда маршрут траффика будет идти куда надо и как надо. Но все, кто находится в пределах этой подсети - не смогут подключится к оффу. 2) Можно поплясать с бубном. Для каждой подсети поставить дополнительный компутер, а юзером раздать батники, которые будут по началу игры добавлять в статическую arp таблицу пару (ip близзов)\(мак доп. сервера) и по окончанию удалять. Это частично решает вопрос дискриминации игроков с оффа, но все же требует некоторых административных затрат. |
клиент по ип конектится или по домену? если по домену можно подменять через windows/system32/drivers/etc/host.
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
1) Сервер при конекте клинета указывает ему идентификатор dll'ки, которую следует использовать. Если нужной dll'ки в кеше клиента не обнаруживается - клиент загружает загружает её с сервера 2) Dll подписана RSA-2048. Клиент проверяет эту подпись, поэтому подсунуть измененную dll c разбегу не получится. Чтобы изменить dll-ку нужно одно из двух:
<Фанфары> |
Цитата:
|
Starcraft II beta также использует Battle.net авторизацию?
Ломаные SC2 уже есть - может в них есть что посмотреть? |
Цитата:
|
Цитата:
толкового ниче нету демон все нам разжевал и так что да каг подключить бы биашу сюда бы но ему же давно совсем неинтеренсо а криптограция это его юзюминка была:mda: |
Цитата:
|
А что мешает подменять адрес к которому идет подключение в момент вызова функций апи винсокетов например хукнув/перехватив тем или иным способом connect/WSAConnect ?
|
Цитата:
ЗЫ: Близзы старую систему аутификации ещё не снесли? |
Цитата:
Просто ясно одно: без лоадера для клиента WoW в BN2 не обойтись. Цитата:
|
Я думаю не снесут для совместимсоти со старыми клиентами :)
|
Цитата:
|
Цитата:
|
Цитата:
|
Под старыми клиентами я имел ввиду клиент версий 1.x и 2.x. Ведь залогинившись на логон-сервер по старому протоколу - они будут качать wow-paptch.mpq, в котором будет давлоадер апдейта.
Конечно, эту проблему они могут полностью отдать Лаунчеру, но всё же..... |
Не, вроде бы все равно не прокатывает...
Вход на старый логон сервер - загрузка патчей, после всех апдейтов - вход уже на BN сервер. вот, кстати, примером: _http://80.239.148.130/update/PatchSequenceFile.txt |
А от того, что клиенты старых версий коннектятся по старой системе авторизации, наличие кода для старой системы в новых версиях клиента не зависит...
|
Текущее время: 01:32. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS