Код защиты

Url

Donnik

Путешественник
Постоялец
12 Фев 2019
94
3
23
27
Даров сем.В файлике некоторых файлах FTGuard- GameGuardReply.class(java) есть такие коды:
public class GameGuardReply extends L2GameClientPacket
{
private static final Logger _log = LoggerFactory.getLogger(GameGuardReply.class);
private int _dx;
private final byte[] _reply = new byte[8];
private static final byte[] VALID = { 78, 45, 28, 54, 75, 87, 41, 37, 110, 45, 1, 11, 102, 76, -5, 11 };
А именно private static final byte[] VALID = { 78, 45, 28, 54, 75, 87, 41, 37, 110, 45, 1, 11, 102, 76, -5, 11 }; что помогает установить защиту клиент стороны.
А в некоторых других файлах FTGuard- GameGuardReply.class(java) эти коды отсутсвуют и в место них такие коды:
package ftGuard.network.l2.c2s;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.logging.Level;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import l2ft.gameserver.network.l2.GameClient;
import l2ft.gameserver.network.l2.c2s.L2GameClientPacket;
public class GameGuardReply extends L2GameClientPacket
{
private static final Logger _log = LoggerFactory.getLogger(GameGuardReply.class);
private int _dx;
@Override
protected void readImpl()
{
_dx = readC();
}
@Override
protected void runImpl()
{
GameClient client = getClient();
if (_dx == 104)
client.setGameGuardOk(true);
else
client.setGameGuardOk(false);
}
@Override
public String getType()
{
return "[C] CB GameGuardReply";
}
}


Вопрос в том,что откуда найти коды (это private static final byte[] VALID = { 78, 45, 28, 54, 75, 87, 41, 37, 110, 45, 1, 11, 102, 76, -5, 11 };) который отправил в втором файле.(
package ftGuard.network.l2.c2s;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.logging.Level;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import l2ft.gameserver.network.l2.GameClient;
import l2ft.gameserver.network.l2.c2s.L2GameClientPacket;
public class GameGuardReply extends L2GameClientPacket
{
private static final Logger _log = LoggerFactory.getLogger(GameGuardReply.class);
private int _dx;
@Override
protected void readImpl()
{
_dx = readC();
}
@Override
protected void runImpl()
{
GameClient client = getClient();
if (_dx == 104)
client.setGameGuardOk(true);
else
client.setGameGuardOk(false);
}
@Override
public String getType()
{
return "[C] CB GameGuardReply";
}
} )
 

PrizraKZN

Путешественник
Постоялец
21 Июл 2017
115
40
63
36
Вобщето это проверка кеу он проверяет то или иной кеу в серверный и клиент если кеу не совпадает то кик с сервера то и есть не зайдеш у все по разному эти кеу есть в длл-ке так что смотрим если они одинаковые что все ок если нет ставим свой
 

Donnik

Путешественник
Постоялец
12 Фев 2019
94
3
23
27
Вобщето это проверка кеу он проверяет то или иной кеу в серверный и клиент если кеу не совпадает то кик с сервера то и есть не зайдеш у все по разному эти кеу есть в длл-ке так что смотрим если они одинаковые что все ок если нет ставим свой
Дело в этом! Как узнать текущие кеи своего сервера чтобы пропускал на сервер??
 

PrizraKZN

Путешественник
Постоялец
21 Июл 2017
115
40
63
36
Дело в этом! Как узнать текущие кеи своего сервера чтобы пропускал на сервер??

Код:
public class Guard
{
    private static final Logger _log = LoggerFactory.getLogger(Guard.class);
    private static byte[] _key = new byte[16];

    public static void Init()
    {
        GuardConfig.load();
        if(isProtectionOn())
        {
            _log.info("**********[ GameGuard: Loading.........]**********");
            _log.info("**********[ GameGuard: Loading Done....]**********");
            _log.info("**********[ GameGuard: Protection ON...]**********");
            HWIDBan.getInstance();
            HWIDManager.getInstance();
            //GuardManager.getInstance();
            AdminCommandHandler.getInstance().registerAdminCommandHandler(new HWIDAdminBan());
        }
    }

    public static boolean isProtectionOn()
    {
        if(GuardConfig.ALLOW_GUARD_SYSTEM)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public static String getHwid(String hwid)
    {
        if((hwid.isEmpty()) || (hwid == null) || (hwid == " "))
        {
            return "NoClientPatch!!!";
        }
        return Util.asHwidString(hwid);
    }

    public static byte[] getKey(byte[] key)
    {
        byte[] bfkey = {
            110,
            36,
            2,
            15,
            -5,
            17,
            24,
            23,
            18,
            45,
            1,
            21,
            122,
            16,
            -5,
            12
        };
        try
        {
            BlowfishEngine bf = new BlowfishEngine();
            bf.init(true, bfkey);
            bf.processBlock(key, 0, _key, 0);
            bf.processBlock(key, 8, _key, 8);
        }
        catch(IOException e)
        {
            _log.info("Bad key!!!");
        }
        return _key;
    }
}
думаю поимеш где он находится
byte[] bfkey = {
110,
36,
2,
15,
-5,
17,
24,
23,
18,
45,
1,
21,
122,
16,
-5,
12
};
 

PrizraKZN

Путешественник
Постоялец
21 Июл 2017
115
40
63
36
а вот клиент
Код:
void decodeKey(unsigned char *buf)
{
    unsigned char bfkey[16] =  {78, 78, 28, 34, 21, 41, 75, 45, 54, 45, 1, 11, 56, 76, -5, 11}; //STATIC KEY
    unsigned char tmp[24];
    Blowfish_CTX ctx;

    memcpy(tmp, buf, 16);

    Blowfish_Init(&ctx, bfkey, 16);
    Blowfish_Decrypt(&ctx, tmp, 16);

    memcpy(buf, tmp, 16);
}