Русское сообщество по скриптингу

Fake в спектаторах

Все, что касается защиты серверов от различного рода атак, эксплойтов, бэкдуров и т.д.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Fake в спектаторах

Сообщение jjey1 » 29 май 2016, 14:49

Заходят в спеки рекламные ники ( не кикнуть, не забанить ) - нету в списке



FakeDetector - не установить на данных хостинг пишет ( bad load )
Что делать?
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 156
Зарегистрирован: 08 мар 2016, 18:32
Благодарил (а): 32 раз.
Поблагодарили: 7 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Fake в спектаторах

Сообщение Subb98 » 29 май 2016, 14:55

Держи:

Код: Выделить всё
#include <amxmodx>
#include <regex>

#pragma semicolon 1

const PATH_STRLEN = 96;

new Regex:g_rIp, g_iRegexReturn, g_szLogsDir[PATH_STRLEN];

public plugin_init() {
    register_plugin("Spambot kicker", "0.1", "Subb98");
    new szError[2];
    if((g_rIp = regex_compile("(?:\s*\d+\s*\.){3}", g_iRegexReturn, szError, charsmax(szError))) < REGEX_OK) {
        regex_free(g_rIp);
        set_fail_state("Regex compile error");
    }
    get_localinfo("amxx_logs", g_szLogsDir, charsmax(g_szLogsDir));
    add(g_szLogsDir, charsmax(g_szLogsDir), "/spambot_kicker");
    if(!dir_exists(g_szLogsDir)) {
        mkdir(g_szLogsDir);
    }
}

public client_authorized(id) {
    new szName[32];
    get_user_name(id, szName, charsmax(szName));
    if(regex_match_c(szName, g_rIp, g_iRegexReturn)) {
        new szAuthId[24], szIp[22], iUserId = get_user_userid(id);
        get_user_authid(id, szAuthId, charsmax(szAuthId));
        get_user_ip(id, szIp, charsmax(szIp));
        server_cmd("kick #%d ^"Advertising in name^"", iUserId);
        Logging("#%d %s <%s> [%s] has been kicked", iUserId, szName, szAuthId, szIp);
    }
}

Logging(const szMessage[], any:...) {
    new szMsg[128], szTime[32], szFile[PATH_STRLEN + 14], pFile;
    vformat(szMsg, charsmax(szMsg), szMessage, 2);
    get_time("%Y%m%d.log", szTime, charsmax(szTime));
    formatex(szFile, charsmax(szFile), "%s/%s", g_szLogsDir, szTime);
    pFile = fopen(szFile, "at");
    get_time("%Y/%m/%d - %H:%M:%S", szTime, charsmax(szTime));
    fprintf(pFile, "%s: %s^n", szTime, szMsg);
    fclose(pFile);
“Первый тост – за localhost!” ©
Аватара пользователя
Subb98
Модератор
 
Сообщения: 3833
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1135 раз.
Поблагодарили: 1887 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Fake в спектаторах

Сообщение jjey1 » 29 май 2016, 15:09

Большое спасибо буду тестить! хорошо что логи пишет!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 156
Зарегистрирован: 08 мар 2016, 18:32
Благодарил (а): 32 раз.
Поблагодарили: 7 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Fake в спектаторах

Сообщение Subb98 » 29 май 2016, 15:11

jjey1, а, да, забыл совсем. Удалять будет только тех ботов, у которых ip'шник в нике фигурирует. Но паттерн можно изменить.
“Первый тост – за localhost!” ©
Аватара пользователя
Subb98
Модератор
 
Сообщения: 3833
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1135 раз.
Поблагодарили: 1887 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Fake в спектаторах

Сообщение jjey1 » 29 май 2016, 15:21

get_user_ip(id, szIp, charsmax(szIp));

А если паттерн понятие поменять и выслеживать скажем так по тому что Игрок авторизовавшись но Неактивен ( Слот берет из max_player ) а list чистый! ( я конечно говорить могу а сделать нет )

По нику понятно это бесполезно! яб тогда поставил анти ники какие нить!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 156
Зарегистрирован: 08 мар 2016, 18:32
Благодарил (а): 32 раз.
Поблагодарили: 7 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Fake в спектаторах

Сообщение Subb98 » 29 май 2016, 15:26

Для начала, попробуйте такой вариант:

Код: Выделить всё
#include <amxmodx>
#include <regex>

#pragma semicolon 1

const PATH_STRLEN = 96;

new Regex:g_rPattern, g_iRegexReturn, g_szLogsDir[PATH_STRLEN];

public plugin_init() {
    register_plugin("Spambot kicker", "0.1", "Subb98");
    new szError[2];
    if((g_rPattern = regex_compile("((?:\s*\d+\s*\.){3})|(.ru)|(.ua)|(.su)|(.com)|(.net)|(.kz)", g_iRegexReturn, szError, charsmax(szError))) < REGEX_OK) {
        regex_free(g_rPattern);
        set_fail_state("Regex compile error");
    }
    get_localinfo("amxx_logs", g_szLogsDir, charsmax(g_szLogsDir));
    add(g_szLogsDir, charsmax(g_szLogsDir), "/spambot_kicker");
    if(!dir_exists(g_szLogsDir)) {
        mkdir(g_szLogsDir);
    }
}

public client_authorized(id) {
    new szName[32];
    get_user_name(id, szName, charsmax(szName));
    if(regex_match_c(szName, g_rPattern, g_iRegexReturn)) {
        new szAuthId[24], szIp[22], iUserId = get_user_userid(id);
        get_user_authid(id, szAuthId, charsmax(szAuthId));
        get_user_ip(id, szIp, charsmax(szIp));
        server_cmd("kick #%d ^"Advertising in name^"", iUserId);
        Logging("#%d %s <%s> [%s] has been kicked", iUserId, szName, szAuthId, szIp);
    }
}

Logging(const szMessage[], any:...) {
    new szMsg[128], szTime[32], szFile[PATH_STRLEN + 14], pFile;
    vformat(szMsg, charsmax(szMsg), szMessage, 2);
    get_time("%Y%m%d.log", szTime, charsmax(szTime));
    formatex(szFile, charsmax(szFile), "%s/%s", g_szLogsDir, szTime);
    pFile = fopen(szFile, "at");
    get_time("%Y/%m/%d - %H:%M:%S", szTime, charsmax(szTime));
    fprintf(pFile, "%s: %s^n", szTime, szMsg);
    fclose(pFile);
}

Думаю, этих доменных зон вам пока хватит. Если что - всегда сможете добавить. Я мог бы предоставить вам универсальное правило, но для ников его использовать будет небезопасно.
“Первый тост – за localhost!” ©
Аватара пользователя
Subb98
Модератор
 
Сообщения: 3833
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1135 раз.
Поблагодарили: 1887 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Fake в спектаторах

Сообщение jjey1 » 29 май 2016, 15:47

Спасибо большое! этот вариант намного лучше!
Для ников я понимаю ( будет обычных игроков выкидывать ) только проблема в том что например Strikes.ru заходят например!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 156
Зарегистрирован: 08 мар 2016, 18:32
Благодарил (а): 32 раз.
Поблагодарили: 7 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Fake в спектаторах

Сообщение Subb98 » 29 май 2016, 15:50

jjey1, поэтому первоначальный вариант и был только для ip-адресов. Можно ещё сделать проверку через set_task. Если в течение n сек. игрок не зашёл на сервер - удалять его. Но это тоже не безопасно, т.к. необходимо предусмотреть загрузку ресурсов, которая может длиться по-разному долго.
“Первый тост – за localhost!” ©
Аватара пользователя
Subb98
Модератор
 
Сообщения: 3833
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1135 раз.
Поблагодарили: 1887 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Fake в спектаторах

Сообщение jjey1 » 29 май 2016, 15:54

Да конечно неизвестно у кого какой интернет! но можно расчитать на 30 секунд дольше даже если task сделать на одну минуту столько файлы явно с ФТП не качаются у меня! Но если будет только Кик ( это не вариант ) кикнет и опять зайдет!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 156
Зарегистрирован: 08 мар 2016, 18:32
Благодарил (а): 32 раз.
Поблагодарили: 7 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Fake в спектаторах

Сообщение Subb98 » 29 май 2016, 15:57

jjey1, исходник у вас имеется - тут уж вы сами смотрите, что можно сделать. Я писал код под свои нужды, изменяйте его под ваши, как вам заблагорассудится. Если нужна будет информация по составлению паттернов, то Вы должны зарегистрироваться, чтобы видеть ссылки..
“Первый тост – за localhost!” ©
Аватара пользователя
Subb98
Модератор
 
Сообщения: 3833
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1135 раз.
Поблагодарили: 1887 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

След.

Вернуться в Безопасность и защита серверов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1