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

Нужна Помощь С Java

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

Вообщем решил я поставить анти брут по этому мануалу

Скрытый текст
Для начала немного теории.

Всем известно такое явление, как брут - перебор паролей. Брутят зачастую либо веб-составляющую проекта (личный кабинет), либо же непосредственно сам сервер. Защита последнего и будет описана, но об этом немного дальше.

 

Как же работает брут, в частности ла2 серверов? Зловредная программа () берет из списка логин+пароль и отправляет на логин сервер запрос на авторизацию, если пароль подошел к логину - осуществляется запись такой связки с файл - ваш аккаунт в руках брутера.

 

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\RequestAuthLo gin.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);

}

 

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

 

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

Офф источник postpacific.ru (Учимся искать друзья)

 

 

Все по нему сделал и в эклипсе выдает ошибку

 

 

[javac] Compiling 68 source files to C:\Games\GameServer\build\classes

[javac] C:\Games\GameServer\head-src\com\l2jfrozen\loginserver\L2LoginPacketHandler.java:80: cannot find symbol

[javac] symbol : variable LoginFailReason

[javac] location: class com.l2jfrozen.loginserver.L2LoginPacketHandler

[javac] client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);

[javac] ^

[javac] 1 error

 

 

вот код этого файла L2LoginPacketHandler.java

 

Скрытый текст
/* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation; either version 2, or (at your option)

* any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA

* 02111-1307, USA.

*

* http://www.gnu.org/copyleft/gpl.html

*/

package com.l2jfrozen.loginserver;

 

import java.nio.ByteBuffer;

 

import com.l2jfrozen.Config;

import com.l2jfrozen.loginserver.L2LoginClient.LoginClientState;

import com.l2jfrozen.loginserver.network.clientpackets.AuthGameGuard;

import com.l2jfrozen.loginserver.network.clientpackets.RequestAuthLogin;

import com.l2jfrozen.loginserver.network.clientpackets.RequestServerList;

import com.l2jfrozen.loginserver.network.clientpackets.RequestServerLogin;

import com.l2jfrozen.logs.Log;

import com.l2jfrozen.netcore.IPacketHandler;

import com.l2jfrozen.netcore.ReceivablePacket;

import com.l2jfrozen.util.PacketsFloodProtector;

 

/**

* Handler for packets received by Login Server

*

* @author ProGramMoS

*/

 

public final class L2LoginPacketHandler implements IPacketHandler<L2LoginClient>

{

/**

* @see com.l2jserver.mmocore.network.IPacketHandler#handlePacket(java.nio.ByteBuffer,

* com.l2jserver.mmocore.interfaces.MMOClient)

*/

@Override

public ReceivablePacket<L2LoginClient> handlePacket(ByteBuffer buf, L2LoginClient client)

{

int opcode = buf.get() & 0xFF;

 

if(!PacketsFloodProtector.tryPerformAction(opcode, -1, client)){

return null;

}

 

ReceivablePacket<L2LoginClient> packet = null;

LoginClientState state = client.getState();

 

if(Config.DEBUG_PACKETS){

Log.add("Packet: " + Integer.toHexString(opcode) + " on State: " + state.name() + " Client: " + client.toString(), "LoginPacketsLog");

}

 

switch(state)

{

case CONNECTED:

if(opcode == 0x07)

{

packet = new AuthGameGuard();

}

else

{

debugOpcode(opcode, state);

}

break;

case AUTHED_GG:

if(opcode == 0x00)

{

packet = new RequestAuthLogin();

}

else

{

client.close(LoginFailReason.REASON_USER_OR_PASS_WRONG);

}

break;

case AUTHED_LOGIN:

if(opcode == 0x05)

{

packet = new RequestServerList();

}

else if(opcode == 0x02)

{

packet = new RequestServerLogin();

}

else

{

debugOpcode(opcode, state);

}

break;

}

 

state = null;

 

return packet;

}

 

private void debugOpcode(int opcode, LoginClientState state)

{

System.out.println("Unknown Opcode: " + opcode + " for state: " + state.name());

}

}

 

 

 

ПОМОГИТЕ !!!!!!

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


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

если бы был смысл ставить данный анти-брут я бы тебе помог ! но от него нету толку ибо нынешние антибруты исследуют пакеты до самого чара...

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


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

Авто бан на 10-30 минут при 5-15 не удачных попыток войти на акаунт.

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


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

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

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

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

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

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

Войти

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

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

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

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

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