YuraAAA1 13 Опубликовано 2 мая, 2014 Уважаемые форумчане. Подскажите пожалуйста, как профиксить дабл логин? Или хотя бы натолкните на правильный путь. http://www.youtube.com/watch?v=S0XTdqi-SeU&feature=youtu.be https://code.google.com/p/silentium-free/source/detail?r=6 этот фикс не подходит Фикс EnterWorld тоже не катит, так как нет двойного входа в игру. Почему-то не выкидывает клиент из игры. Сборка от Silentium (Acis based). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 2 мая, 2014 Вообще бы сервер авторизации переписать/заменить. Он не должен позволять добраться до сервер-листа с одного аккаунта. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Wrapper 15 Опубликовано 2 мая, 2014 http://trac.l2jserver.com/changeset/6477/ жду спасибку 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mefestofel163 1333 Опубликовано 2 мая, 2014 http://trac.l2jserve...changeset/6477/ жду спасибку Это не полный фикс - и не спасет вас) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lovely 307 Опубликовано 2 мая, 2014 (изменено) http://trac.l2jserve...changeset/6477/ жду спасибку У силентиума так же. Изменено 2 мая, 2014 пользователем Lovely Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 2 мая, 2014 Это не полный фикс - и не спасет вас) Что ты вообще понимаешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
YuraAAA1 13 Опубликовано 2 мая, 2014 проморгал putIfAbsent. Вроде перестал баг работать, спасибо Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 2 мая, 2014 проморгал putIfAbsent. Вроде перестал баг работать, спасибо этот фикс уже давно обошли. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
YuraAAA1 13 Опубликовано 2 мая, 2014 этот фикс уже давно обошли. Есть где-то нормальный фикс? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mefestofel163 1333 Опубликовано 2 мая, 2014 Что ты вообще понимаешь? Думаю , чутка больше чем ты) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexD 36 Опубликовано 2 мая, 2014 Есть где-то нормальный фикс? в общем доступе ? нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 2 мая, 2014 Думаю , чутка больше чем ты) Смеемся с твоих постов всем подъездом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
YuraAAA1 13 Опубликовано 2 мая, 2014 Как я понимаю, чисто в теории. AuthLogin.java:runImpl() Если: 1. В этом методе запросить accountsInGameServer из LoginServerThread. 2. Обернуть следующий код в syncronized блок. 3. Обойти коллекцию. Если имя аккаунта совпадает - closeNow(). Поможет ли это? Сильно ли увеличится нагрузка (за счёт synchronized). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Eanseen 139 Опубликовано 12 мая, 2014 (изменено) Одно время тоже был этот баг на сурсах GodWorld, даже с проверками в логин сервере баг можно воспроизвести. Когда воспроизводят баг то на игровом сервере подключено 2 клиента на 1го чара. При этом первый - клиент это сама игра Lineage 2, второй клиент это l2phx. Конкретной реализации не даю, только навожу на мысль. Самое банальное решение это капча в игре, l2phx не распознает изображение и следовательно при грамотной реализации капчи до ее ввода нельзя ничего сделать, даже отправить любые пакеты кроме проверочного кода капчи. Далее в EnterWorld проверяем чара на онлайн, т.к. при входе первым клиентом чар получает статус онлайн. Хотя опять же в большинстве сборок это сделано очень криво. А теперь более грамотное решение, при входе персонажа в игру записывать аккаунт и ип например в HashMap<String, String>, при выходе соотв. удалять. Далее делаем проверку при входе персонажа на наличие аккаунта и ип в HashMap. НО! Проверку делаем не в EnterWorld а при получении пакетов в L2GamePacketHandler, в блоке IN_GAME. Выглядит это примерно так case IN_GAME: if(clients.get(client.getAccountName()) != null) { if(!clients.get(client.getAccountName()).equalsIgnoreCase(client.getConnectionAddress().getHostAddress())) { break; } } P.s. Выше описанное не претендует на 100% решение проблемы, возможно есть способы обойти и это. Изменено 12 мая, 2014 пользователем DragonWind 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GoGLiKK 100 Опубликовано 16 мая, 2014 (изменено) у меня в AuthLogin.java // Exploit Prevention if (LoginServerThread.getInstance().getAccountInGameServer(_loginName)) { _log.warning("Double login attempt by account " + _loginName); getConnection().close(); return; } Изменено 16 мая, 2014 пользователем avoegio Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты