Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
bypass validation
#1
Приветствую всех. Покажите пример валидации байпасов или, хотя бы, намекните.
Я не волшебник... Я, пока, учусь. L2Jserver CT2.5
Ответ
#2
energy Написал:Приветствую всех. Покажите пример валидации байпасов или, хотя бы, намекните.

Это менеджер-контроллер, который считывает посланный байпас сервера и добавляет его в лист. Если от клиента приходит измененный байпас(отличный от сохраненного) -> баним, шлем на хер и т.п. (грубое описание)
Пример можете глянуть в сурсах nextgen'a. Там распространяется как на коммунити так и на обычные хтмл файлы.
Ответ
#3
Что вы подразумеваете под "валидацией"?

Может быть проверку на правильность байпасса?
Код:
\"(bypass +-?h? ?+)(.+?)\"

Или может быть кеширование байпассов? Или может быть что-то свое?
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#4
Pointer*Rage Написал:Что вы подразумеваете под "валидацией"?

Может быть проверку на правильность байпасса?
Код:
\"(bypass +-?h? ?+)(.+?)\"

Или может быть кеширование байпассов? Или может быть что-то свое?

мысли
Ответ
#5
Pointer*Rage Написал:Что вы подразумеваете под "валидацией"?

Может быть проверку на правильность байпасса?
Код:
\"(bypass +-?h? ?+)(.+?)\"

Или может быть кеширование байпассов? Или может быть что-то свое?

Рискну предположить...кеширование
Ответ
#6
Если кеширование, то вот пример, который я набросал за 5 минут
Код:
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
* @author PointerRage
*
*/
public class BypassCache {
    private final List<String> list = new ArrayList<>();
    private final Lock lock = new ReentrantLock();
    @Inject private IBypassChiper chiper;
    
    public BypassCache() {
        
    }
    
    /**
     * Дергается перед отправкой ХТМЛки игроку
     * @param bypasses
     */
    public void update(String[] bypasses) {
        lock.lock();
        try {
            list.clear();
            for(String bypass : bypasses)
                list.add(chiper.decrypt(bypass));
        } finally {
            lock.unlock();
        }
    }
    
    /**
     * Дергается когда сервер получает байпасс
     * @param bypass
     * @return
     */
    public boolean validate(String bypass) {
        lock.lock();
        try {
            return list.contains(chiper.decrypt(bypass));
        } finally {
            lock.unlock();
        }
    }
}

Для каждого инстанса игрока необходимо создавать такой обьект.

Добавлено через 7 минут
GenCloud Написал:
мысли

Можно просто ксорить единицей. Вот вам и защита энкод/декод.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#7
GenCloud Написал:Это менеджер-контроллер, который считывает посланный байпас сервера и добавляет его в лист. Если от клиента приходит измененный байпас(отличный от сохраненного) -> баним, шлем на хер и т.п. (грубое описание)
Пример можете глянуть в сурсах nextgen'a. Там распространяется как на коммунити так и на обычные хтмл файлы.

Да, похоже на то что мне надо.

Pointer*Rage Написал:Если кеширование, то вот пример, который я набросал за 5 минут
Код:
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
* @author PointerRage
*
*/
public class BypassCache {
    private final List<String> list = new ArrayList<>();
    private final Lock lock = new ReentrantLock();
    @Inject private IBypassChiper chiper;
    
    public BypassCache() {
        
    }
    
    /**
     * Дергается перед отправкой ХТМЛки игроку
     * @param bypasses
     */
    public void update(String[] bypasses) {
        lock.lock();
        try {
            list.clear();
            for(String bypass : bypasses)
                list.add(chiper.decrypt(bypass));
        } finally {
            lock.unlock();
        }
    }
    
    /**
     * Дергается когда сервер получает байпасс
     * @param bypass
     * @return
     */
    public boolean validate(String bypass) {
        lock.lock();
        try {
            return list.contains(chiper.decrypt(bypass));
        } finally {
            lock.unlock();
        }
    }
}

Для каждого инстанса игрока необходимо создавать такой обьект.

Добавлено через 7 минут


Можно просто ксорить единицей. Вот вам и защита энкод/декод.
Строчка @Inject private IBypassChiper chiper; похоже написана с использованием Spring Framework (я только начал учить и до аннотаций не дошел еще). Как интуитивно я понимаю надо создать бин класа шифровки / расшифровки?

И второй вопрос, если с игроком все понятно. Но как сервер отправляет/регистрирует байпасы я еще не понял. В смысле validate(str) я понял. Но что подается в аргумент update(str[]), в смысле из чего состоит массив я не понял.:confused:
Я не волшебник... Я, пока, учусь. L2Jserver CT2.5
Ответ
#8
energy Написал:Да, похоже на то что мне надо.


Строчка @Inject private IBypassChiper chiper; похоже написана с использованием Spring Framework (я только начал учить и до аннотаций не дошел еще). Как интуитивно я понимаю надо создать бин класа шифровки / расшифровки?

И второй вопрос, если с игроком все понятно. Но как сервер отправляет/регистрирует байпасы я еще не понял. В смысле validate(str) я понял. Но что подается в аргумент update(str[]), в смысле из чего состоит массив я не понял.:confused:

Не обязательно спринг, любой IoC фреймворк, который поддерживает JSR-330.

Байпассы отправляются сервером внутри HTM-страницы. Вам нужно взять эти все байпассы, криптануть их (если требуется) и положить в кеш. Когда приходит запрос байпасса от клиента на сервер, Вам нужно декриптануть его (если требуется) и проверить, есть ли такой в кеше.
Кеш конечно же должен очищаться при запросе новой HTM-страницы.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#9
Спасибо большое, мне дошло Smile
Я не волшебник... Я, пока, учусь. L2Jserver CT2.5
Ответ
#10
Pointer*Rage Написал:Можно просто ксорить единицей. Вот вам и защита энкод/декод.
Привет всем. Хочу дополнить вопрос.
А есть возможность того, что кто-то сможет вытянуть байпас из инстанса игрока? Или он может, зная сборку сервера, логически составить свой байпас и подменить пакет.
И как лучше ксорить строку: разбив на массив байтов или чаров?
Или вообще заюзать Base64?
В общем, есть ли смысл в лишней нагрузке на проц?
Я не волшебник... Я, пока, учусь. L2Jserver CT2.5
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Местонахождение Bypass'ов SoFace 1 1,409 04-06-2014, 12:15 AM
Последний пост: Ashe
  Кирилица и bypass Archiel 0 1,119 10-22-2013, 12:05 AM
Последний пост: Archiel
  htm bypass -h NiddHoggUA 25 6,438 10-28-2011, 03:15 PM
Последний пост: Z3oM

Перейти к форуму:


Пользователи, просматривающие эту тему: 4 Гость(ей)