Перейти к содержанию
Авторизация  
nn03

Брут

Рекомендуемые сообщения

щяс почти на всех серверах с допами подрисовывают онлайн

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Защита от Брута

 

1. Одним из вариантов защиты от брута является авторегистрация. В этом есть некая логика: абсолютно все подбирающиеся аккаунты брутеру будут выдаваться как рабочие, но на самом деле - они будут пустые, т.к. брутом будут собственно и создаваться. Минус способа - быстро заполняется база пустыми аккаунтами.

 

2. Рассмотрим вариант защиты через ядро.

 

В зависимости от некоторых обстоятельств логин-сервер возвращает 1 из 5 ответов:

AUTH_SUCCESS - авторизация успешна. Пользователю выдается сессионый ключ и возвращается пакет LoginOk(), который показывает нам окно Лицензии. После которого появляется список серверов - пакет ServerList().

INVALID_PASSWORD - пароль неверный. Срабатывает "client.close(LoginFailReason.REASON_USER_OR_PASS_ WRONG);", т.е. выдается сообщение о неверном пароле и предотвращается доступ пользователя далее.

ACCOUNT_BANNED - аккаунт забанен.

ALREADY_ON_LS - на данный аккаунт уже произведена авторизация на логин-сервере.

ALREADY_ON_GS - персонаж с данного аккаунта уже находится в игре (ну, и при попытке авторизации персонажа выкинет с игры)

 

Брут, получив от логин-сервера пакет ServerList() (список серверов), считает аккаунт сбрученным и записывает его в файл. Вот на этом мы и построим защиту.

 

Переходим в net\sf\l2j\loginserver\clientpackets\RequestAuthLogin.java (в некоторых сборках путь может незначительно отличатся в начале - net\sf\l2j\). Находим следующий код:

case INVALID_PASSWORD:

client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);

break;

и меняем на следующее:

case INVALID_PASSWORD:

client.setSessionKey(lc.assignSessionKeyToClient(_user, client));

getClient().sendPacket(new ServerList(getClient()));

break;

 

Поясню. Таким образом при неправильном вводе пароля, будет возвращаться пакет ServerList(), что для брута послужит зеленым светом, мол, пароль подошел (но на самом деле - пароль неверный).

 

После описанных выше действий появится небольшой побочный эффект. Если простой пользователь введет случайно неверный пароль - его сразу (минуя лицензию) направит на список серверов (пакет ServerList()). И при нажатии на любой сервер - ничего не произойдет, а пользователь так и не поймет что же случилось. К тому же логин сервер будет засыпаться ошибкой "Unknown opcode: ...." при каждом нажатии пользователя на сервер из списка. Сейчас мы это исправим...

 

Идем в net/sf/l2j/loginserver/L2LoginPacketHandler.java. Находим там код:

 

case AUTHED_GG:

if (opcode == 0x00)

{

packet = new RequestAuthLogin();

}

else

{

debugOpcode(opcode, state);

}

и меняем его так:

case AUTHED_GG:

if (opcode == 0x00)

{

packet = new RequestAuthLogin();

}

else

{

client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);

}

 

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

 

Вроде бы все. Среди тех способов защиты от брута, что находятся в свободном доступе - этот наиболее привлекательный.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У него ПВ а значит нету ядра.

Именно так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Без ядра, защиты от брута нормальной просто нету. + на пв есть защита от брута

Изменено пользователем Westernous

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Защита от Брута

 

1. Одним из вариантов защиты от брута является авторегистрация. В этом есть некая логика: абсолютно все подбирающиеся аккаунты брутеру будут выдаваться как рабочие, но на самом деле - они будут пустые, т.к. брутом будут собственно и создаваться. Минус способа - быстро заполняется база пустыми аккаунтами.

 

2. Рассмотрим вариант защиты через ядро.

 

В зависимости от некоторых обстоятельств логин-сервер возвращает 1 из 5 ответов:

AUTH_SUCCESS - авторизация успешна. Пользователю выдается сессионый ключ и возвращается пакет LoginOk(), который показывает нам окно Лицензии. После которого появляется список серверов - пакет ServerList().

INVALID_PASSWORD - пароль неверный. Срабатывает "client.close(LoginFailReason.REASON_USER_OR_PASS_ WRONG);", т.е. выдается сообщение о неверном пароле и предотвращается доступ пользователя далее.

ACCOUNT_BANNED - аккаунт забанен.

ALREADY_ON_LS - на данный аккаунт уже произведена авторизация на логин-сервере.

ALREADY_ON_GS - персонаж с данного аккаунта уже находится в игре (ну, и при попытке авторизации персонажа выкинет с игры)

 

Брут, получив от логин-сервера пакет ServerList() (список серверов), считает аккаунт сбрученным и записывает его в файл. Вот на этом мы и построим защиту.

 

Переходим в net\sf\l2j\loginserver\clientpackets\RequestAuthLogin.java (в некоторых сборках путь может незначительно отличатся в начале - net\sf\l2j\). Находим следующий код:

case INVALID_PASSWORD:

client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);

break;

и меняем на следующее:

case INVALID_PASSWORD:

client.setSessionKey(lc.assignSessionKeyToClient(_user, client));

getClient().sendPacket(new ServerList(getClient()));

break;

 

Поясню. Таким образом при неправильном вводе пароля, будет возвращаться пакет ServerList(), что для брута послужит зеленым светом, мол, пароль подошел (но на самом деле - пароль неверный).

 

После описанных выше действий появится небольшой побочный эффект. Если простой пользователь введет случайно неверный пароль - его сразу (минуя лицензию) направит на список серверов (пакет ServerList()). И при нажатии на любой сервер - ничего не произойдет, а пользователь так и не поймет что же случилось. К тому же логин сервер будет засыпаться ошибкой "Unknown opcode: ...." при каждом нажатии пользователя на сервер из списка. Сейчас мы это исправим...

 

Идем в net/sf/l2j/loginserver/L2LoginPacketHandler.java. Находим там код:

 

case AUTHED_GG:

if (opcode == 0x00)

{

packet = new RequestAuthLogin();

}

else

{

debugOpcode(opcode, state);

}

и меняем его так:

case AUTHED_GG:

if (opcode == 0x00)

{

packet = new RequestAuthLogin();

}

else

{

client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);

}

 

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

 

Вроде бы все. Среди тех способов защиты от брута, что находятся в свободном доступе - этот наиболее привлекательный.

 

копипастер ,гореть тебе в аду 100 лет))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

щяс почти на всех серверах с допами подрисовывают онлайн

просто можно по умному его нарисовать а можно тупока как зделал тс))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорей всего бурт через лк,кто может помоч?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поменять движок сейчас есть 2 новых или 3 движка в шаре либо на св каптчу поменять , ну а по идее если у тебя префиксы стоят , они по идее более менее спасать должны

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бла бла бла!)

 

Занимался брутом.

По этому могу сказать что выше написано можно обойти в два счёта)

И каптчи это как капля воды в Сахаре.

Рекомендую поставить рандомный префикс на аккаунт и на пароль.

Кстати он защитит но не очень хорошо, обойти его возможно. Но более трудновато)

Изменено пользователем logan22

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...