10.03.2010, 19:02 | #1 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
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 код:
Вот тут есть описание протокола для старых игр, опкоды под каждую свои... |
10.03.2010, 19:04 | #2 | ||||
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
================================================== =====================================
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 20 D0 A1 D0 BC D0 B5 D1 80 D1 82 D0 B8 80 00 00 01 00 00 00 0C 00 40 A0 C4 9C 00 42 02 1A 07 00 0D 00 17 D0 AF D1 81 D0 B5 D0 BD D0 B5 D0 B2 D1 8B D0 B9 20 D0 BB D0 B5 D1 81 80 00 00 01 00 00 00 0C 00 43 C8 00 00 00 42 02 1A 07 02 0B 00 17 D0 A1 D1 82 D1 80 D0 B0 D0 B6 20 D0 A1 D0 BC D0 B5 D1 80 D1 82 D0 B8 80 00 00 01 00 00 00 0C 00 43 C8 00 00 00 42 02 1A 07 02 09 00 13 D0 9A D0 BE D1 80 D0 BE D0 BB D1 8C 2D D0 BB D0 B8 D1 87 80 00 00 01 00 00 00 0C 00 40 CC ED 91 00 42 02 1A 07 03 0C 00 10 D0 A1 D0 B5 D0 B4 D0 BE D0 B3 D1 80 D0 B8 D0 B2 80 00 00 01 00 00 00 0C 00 40 99 A9 FC 00 42 02 1A 07 01 0D 00 08 D0 93 D1 80 D0 BE D0 BC 80 00 00 01 00 00 00 0C 00 43 C8 00 00 00 42 02 1A 07 00 0E 00 1D D0 9F D0 B8 D1 80 D0 B0 D1 82 D1 81 D0 BA D0 B0 D1 8F 20 D0 B1 D1 83 D1 85 D1 82 D0 B0 80 00 00 01 00 00 00 0C 00 40 B2 5E 35 00 42 02 1A 07 00 0F 00 17 D0 92 D0 B5 D1 87 D0 BD D0 B0 D1 8F 20 D0 9F D0 B5 D1 81 D0 BD D1 8F 80 00 00 00 00 00 00 0C 00 43 C8 00 ... 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 Да кстати. Возможно клиент банально проверил на локальный адрес. Проверю и сообщу. |
||||
11.03.2010, 07:16 | #3 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Я тут сидел, думал чего-то и пришел к выводу что вся проблема в том, что клиент не невозможно заставить работать через прокси, так как он его минует, в данном случае надо использовать Поставщик многоуровневых услуг (LSP) - тобиш заставить трафик от клиента (в любом случае) ходить через DLL которая и будет выполнять роль прокси. Но это только предположение.
http://www.komodia.com/index.php?page=lsp.html Это я начитался на wowcore.ru. |
11.03.2010, 08:51 | #4 | |
MaNGOS Dev
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
|
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 Последний раз редактировалось Dereka; 11.03.2010 в 08:56. |
|
2 пользователя(ей) сказали cпасибо: | Konctantin (11.03.2010) |
11.03.2010, 09:26 | #5 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
хм... надо попробовать, вот что значит знание английского, я там неделю назад, читал (как мог) но так и *грубо* и не понял, и ушел искать дальше...
|
13.03.2010, 13:59 | #6 |
MaNGOS Dev
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
|
вот ещё полезная ссылка
http://darkblizz.org/wiki/doku.php?id=bnet2_protcol |
Пользователь сказал cпасибо: | Konctantin (13.03.2010) |
14.03.2010, 00:01 | #7 | |
Новичок
Регистрация: 10.03.2010
Сообщений: 13
Сказал(а) спасибо: 6
Поблагодарили 2 раз(а) в 1 сообщении
|
Цитата:
лично я пользуюсь http://www.proxifier.com/ |
|
2 пользователя(ей) сказали cпасибо: | Neverdie (14.03.2010) |
15.03.2010, 06:40 | #8 |
Ученый
Регистрация: 03.03.2010
Адрес: Сибирь, 58°14′00″ с. ш. 92°29′00″ в. д.
Сообщений: 288
Сказал(а) спасибо: 79
Поблагодарили 37 раз(а) в 14 сообщениях
Записей в дневнике: 18
|
как не странно я но я тоже решил как то попробовать через него (был случай когда отключили интернет и сидеть пришлось через друга который поднял UserGate) только была старая версия без НАТа... приходилось почему то подключать свой инет (подключаться он подключался только всегда писал что интернета нету. мол заплатите) чтоб battle.net мог авторизовать меня =\
|
06.04.2010, 10:22 | #9 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Лазил по 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 протокол? или только частично? |
07.04.2010, 10:24 | #10 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
похоже не совсем отреверсили. много затычек хардкодных. но судя по всему уже что то работает. и посмотрев бегло такое ощущение, что тут обычный вов...
|
07.04.2010, 11:01 | #12 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Там достаточно информации чтобы полностью реализовать батлнет авторизацию для WoW. Но потребуется лоадер/модификация клиентских файлов для успешной авторизации.
|
07.04.2010, 13:54 | #13 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
что не есть приемлимо...
|
07.04.2010, 13:56 | #14 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
07.04.2010, 13:57 | #15 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
Изменение клиентский файлов почему? очевидно вроде, это уже прямое нарушение лицензии
|
07.04.2010, 14:05 | #16 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Потому что по другому это невозможно сделать
P.S. Ну разве что хостить сервер на том же ип что и у близов, либо использовать проксификаторы и т.д. которые будут редиректить трафик на нужный сервер, чтобы клиент думал что подключается у близовскому IP... Последний раз редактировалось TOM_RUS; 07.04.2010 в 14:09. |
07.04.2010, 14:09 | #17 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
наверное нужен лоадер, типа как наш снифер-инжектор. Deamon?
|
07.04.2010, 14:12 | #18 |
WowCore Dev
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
|
Потому что потому . А если серьезно - то очевидное очевидно. Близзы в BN2 используют подключаемые модули, которые загружаются с сервера. Основная доля криптографии, по которой происходит авторизация клиента, происходит в них.
1) Password.dll - сие есть кладезь криптографии. 2) Thumbprint.dll - а сие есть причина, по которой не удается подсунуть клиенту другой сервер(!!!). Именно в этой dll-ке происходит проверка на ip адресс. Если она оканчивается неудачей... ну вообщем вы поняли. Эти модули, как и модули вардена, подписаны цифровой подписью RSA-2048. Поэтому как и в вардене для использования самописных модулей необходмо сделать одно из двух: а) Разложить N длиной 2048 бит на простые множители. Как вы понимаете, вероятность успешности сего действия есть число бесконечно малое. б) Поменять в клиенте RSA ключ проверки на свой. Что есть уже более реальное действие, нежели первое Added: Вариант с подменой ip обсуждался в ирке. 1) Можно настроить маршрутизатор во внутренней сети так, чтобы по arp запросу на близовский ip выдавался мак локального маршрутизатора, и тот посылал пакеты на локальный WoW сервер. Тогда маршрут траффика будет идти куда надо и как надо. Но все, кто находится в пределах этой подсети - не смогут подключится к оффу. 2) Можно поплясать с бубном. Для каждой подсети поставить дополнительный компутер, а юзером раздать батники, которые будут по началу игры добавлять в статическую arp таблицу пару (ip близзов)\(мак доп. сервера) и по окончанию удалять. Это частично решает вопрос дискриминации игроков с оффа, но все же требует некоторых административных затрат. Последний раз редактировалось Deamon; 07.04.2010 в 14:29. |
07.04.2010, 14:25 | #19 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
клиент по ип конектится или по домену? если по домену можно подменять через windows/system32/drivers/etc/host.
|
07.04.2010, 14:27 | #20 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
07.04.2010, 14:39 | #21 |
WowCore Dev
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
|
|
07.04.2010, 14:43 | #23 |
WowCore Dev
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
|
|
Пользователь сказал cпасибо: | Konctantin (07.04.2010) |
07.04.2010, 14:51 | #24 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
|
07.04.2010, 15:02 | #25 | |
WowCore Dev
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
|
Цитата:
1) Сервер при конекте клинета указывает ему идентификатор dll'ки, которую следует использовать. Если нужной dll'ки в кеше клиента не обнаруживается - клиент загружает загружает её с сервера 2) Dll подписана RSA-2048. Клиент проверяет эту подпись, поэтому подсунуть измененную dll c разбегу не получится. Чтобы изменить dll-ку нужно одно из двух:
<Фанфары> Последний раз редактировалось Deamon; 07.04.2010 в 15:04. |
|
4 пользователя(ей) сказали cпасибо: |
07.04.2010, 15:03 | #26 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
3 пользователя(ей) сказали cпасибо: | Deamon (07.04.2010), Konctantin (07.04.2010) |
07.04.2010, 17:14 | #27 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Starcraft II beta также использует Battle.net авторизацию?
Ломаные SC2 уже есть - может в них есть что посмотреть?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
07.04.2010, 18:37 | #29 | |
Kobold Dev
|
Цитата:
толкового ниче нету демон все нам разжевал и так что да каг подключить бы биашу сюда бы но ему же давно совсем неинтеренсо а криптограция это его юзюминка была
__________________
Вообще-то я не специалист по этим гравицаппам... |
|
08.04.2010, 02:22 | #30 |
Гость
Сообщений: n/a
|
|
08.04.2010, 09:02 | #31 |
Гость
Сообщений: n/a
|
А что мешает подменять адрес к которому идет подключение в момент вызова функций апи винсокетов например хукнув/перехватив тем или иным способом connect/WSAConnect ?
|
08.04.2010, 14:17 | #32 | |
Пользователь
Регистрация: 06.03.2010
Адрес: Россия->Цимлянск
Сообщений: 49
Сказал(а) спасибо: 34
Поблагодарили 4 раз(а) в 4 сообщениях
|
Цитата:
ЗЫ: Близзы старую систему аутификации ещё не снесли?
__________________
Богатство языка определяет широту его мысли |
|
08.04.2010, 14:42 | #33 | |
WowCore Dev
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
|
Цитата:
Просто ясно одно: без лоадера для клиента WoW в BN2 не обойтись. Почти все считают, что её снесут в Катаклизме |
|
09.04.2010, 02:33 | #34 |
Гость
Сообщений: n/a
|
Я думаю не снесут для совместимсоти со старыми клиентами
|
09.04.2010, 06:51 | #35 |
Гость
Сообщений: n/a
|
Ну это смотря какие костыли. Инжектировать код в рантайме прямо в исполняемую секцию процесса да, не хорошо. Хотя без этого иногда не обойтись. А вот подключить к процессу свою dll и подменить в IAT адрес функции на себя это совершенно другое. Первое в windows происходит повсеместно и разными способами. Взять тот же fraps. Который кстати ни один античит не трогает. Второе то, что по сути делает лоадер ос. Тем более я так понимаю сейчас без 'костылей' никак.
|
Пользователь сказал cпасибо: | Deamon (09.04.2010) |
09.04.2010, 13:33 | #36 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Апдейт старых клиентов для изменения системы аутентификации - дело элементарное. Вспомни переход на ВотЛК - в старом клиенте ТВС тогда появился порт Штормвинда, а клиент остался старым.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
09.04.2010, 13:59 | #37 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
09.04.2010, 15:25 | #38 |
Гость
Сообщений: n/a
|
Под старыми клиентами я имел ввиду клиент версий 1.x и 2.x. Ведь залогинившись на логон-сервер по старому протоколу - они будут качать wow-paptch.mpq, в котором будет давлоадер апдейта.
Конечно, эту проблему они могут полностью отдать Лаунчеру, но всё же..... |
Пользователь сказал cпасибо: | Deamon (09.04.2010) |
09.04.2010, 16:11 | #39 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Не, вроде бы все равно не прокатывает...
Вход на старый логон сервер - загрузка патчей, после всех апдейтов - вход уже на BN сервер. вот, кстати, примером: _http://80.239.148.130/update/PatchSequenceFile.txt
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
09.04.2010, 17:08 | #40 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
А от того, что клиенты старых версий коннектятся по старой системе авторизации, наличие кода для старой системы в новых версиях клиента не зависит...
|