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

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

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

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

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

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



FakeDetector - не установить на данных хостинг пишет ( bad load )
Что делать?
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 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);
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4507
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1229 раз.
Поблагодарили: 2088 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

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

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

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

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

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

jjey1, а, да, забыл совсем. Удалять будет только тех ботов, у которых ip'шник в нике фигурирует. Но паттерн можно изменить.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4507
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1229 раз.
Поблагодарили: 2088 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

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

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

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

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

По нику понятно это бесполезно! яб тогда поставил анти ники какие нить!
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 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);
}

Думаю, этих доменных зон вам пока хватит. Если что - всегда сможете добавить. Я мог бы предоставить вам универсальное правило, но для ников его использовать будет небезопасно.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4507
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1229 раз.
Поблагодарили: 2088 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

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

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

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

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

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

jjey1, поэтому первоначальный вариант и был только для ip-адресов. Можно ещё сделать проверку через set_task. Если в течение n сек. игрок не зашёл на сервер - удалять его. Но это тоже не безопасно, т.к. необходимо предусмотреть загрузку ресурсов, которая может длиться по-разному долго.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4507
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1229 раз.
Поблагодарили: 2088 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

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

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

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

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

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

jjey1, исходник у вас имеется - тут уж вы сами смотрите, что можно сделать. Я писал код под свои нужды, изменяйте его под ваши, как вам заблагорассудится. Если нужна будет информация по составлению паттернов, то Вы должны зарегистрироваться, чтобы видеть ссылки..
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4507
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1229 раз.
Поблагодарили: 2088 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

След.

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

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

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