Blacklist - Antiproxy Sistema

Pluginai, kuriuos tikrintojai įvertino neigiamai ir jie laukia atnaujinimo.
Tetusis

Blacklist - Antiproxy Sistema

Post by Tetusis »

Sis pluginas padeda isvengti nepageidaujamu zaideju, arba tiesiog apsisaugoti nuo proxy, kai nebelieka nieko, pvz: jus uzbaninate zaideja, sis grysta su kitokiu ip, jus vel ji uzbaninate ir t.t tesiasi, esme tame, kad pluginas sugeneruoja kiekvienam zaidejui unikalu id, nesvarbu jis butu steam'as ar naudotusi non-steam, ta id galime panaudoti blacklistinant zaideja, si sistema veikia panasiai kaip amxx bans, bet naudojames fvault - https://forums.alliedmods.net/showthread.php?t=76453. Slowhackingas? mes graziai tai apeiname nors ir juo naudodamiesi sukuriame cfg i kuri issaugome id su writecfg komanda esamo config'o nustatymu kopija i kintamojo nurodyta direktorija(g_CFG) ir ji uzkrauname noredami patikrinti ar id nera duomenu bazeje, jei nera automatiskai sukuriame, jei yra patikriname - uzkrauname cfg su esanciu id is g_CFG direktorijos, veliau uzkrauname config.cfg kuris nebuvo liestas bei istriname konsole su komanda clear taip pat panaikiname setinfo id, nes jau zaidejas yra patikrintas ir zaidejas nepajaucia, kad kazkas katik ivyko, kai zaidejas su sugeneruotu id prisijungia i serveri ir jei pasitvirtina, kad zaidejas jau yra sarase t.y patikriname blacklist.txt faila esanti serverio moddir/addons/amxmodx/data/file_vault/ pereiname prie veiksmo funkcijos nubaustiZaideja, sugeneruotas id yra irasomas i duomenubaze.txt kuris yra serverio moddir/addons/amxmodx/data/file_vault/.Tokio plugino dar nera, mdb bans veikia panasiu principu ir yra closed source, id tiesiog irasomas ir gali betkada dingti, taip pat nera failsafe ka as asmeniskai igyvendinau, pluginas ateityje bus pleciamas, klaidos taisomos, multilang, sql palaikymas, kolkas vienintelis metodas issaugoti informacija yra setinfo, taip pat bus gilinamasi i orpheu, hlsdk noredami surasti dar saugesni metoda.Credits:Tetusis ideja, kodas, logika, testavimas.Ernis - Shake'it kodas, pataisymai ir pagalba testavime.Idomi kiekvieno nuomone, plugino aprasymas laikui begant bus keiciamas, jugi dabar 02:49  :zzz:

Code: Select all

#include <amxmodx>#include <amxmisc>#include <fvault>  #define BUFFER_LENGTH 8 #define DATE_LENGTH 18#define NAME_LENGTH 32#define IP_LENGTH   16#define REASON_LENGTH 16#define DATA_LENGTH (REASON_LENGTH +  NAME_LENGTH + DATE_LENGTH + IP_LENGTH )   //reiketu didint data buffer, jeigu reikia ilgesniu reason.#define maxItems 6  #define ADMINAS ADMIN_CVAR new g_Chars[maxItems] = { '1', '2', '3', '4', '5', '6' }new g_Ids[33][BUFFER_LENGTH] new g_PlayerInfos[33][DATA_LENGTH] /// galetu buti naudojama id uzkrovimui, kad nereiktu daug kartu to var kurti///new g_ID[BUFFER_LENGTH] // Slowhackstatic const g_DB[] = "duomenubaze"static const g_DB_BLACKLIST[] = "blacklist"static const g_CFG[] = "resource/UI/gunmenu" static const MAX_TRIES = 4  /// gal reiktu daugiau/maziau kartu ?new g_tries[33]         /// bandymu patikrinti ar uzsikrove id skaicius  static const clearTaskID = 20100;static const Float:clearTaskTime = 0.5; static const loadCFGTaskID = 20300;static const Float:loadCFGTaskTime = 0.5; static const punishTaskID = 20400;static const Float:punishTaskTime = 1.0; public plugin_init() {    register_plugin("Blacklist - Antiproxy Sistema", "0.2 alpha", " Ernis - Shake'it")        register_concmd("bl", "blacklistID", ADMINAS, "Blacklistinam zaidejo id")    register_concmd("infoid", "infoID" , ADMINAS, "Informacija apie zaideju id")} public client_connect(id) {    g_Ids[id][0]=0;    g_tries[id]=0;     /// ivykdome vartotojo cfg, kuris turetu nustatyti musu paslepta id.    ivykdyti_vartotojo_cfg(id)         set_task(loadCFGTaskTime, "uzkrautiID", id+loadCFGTaskID);} public uzkrautiID(id){    id-=loadCFGTaskID;        new str[BUFFER_LENGTH];    get_user_info(id,"id",str, BUFFER_LENGTH-1);    str[BUFFER_LENGTH-1]=0;        /// ar jau turi priskirta id?     if(strlen(str)>1)    {         copy( g_Ids[id], BUFFER_LENGTH, str );                if(tikrinamID(id)) /// jeigu ne blacklisted, irasom prisijungima        {            fvault_save(id);        }                isvalyti_set_info(id+clearTaskID); /// naudojimas task nebutinas, todel kvieciame tiesiogiai.    }    else if(g_tries[id]<MAX_TRIES)    {        g_tries[id]++;        set_task(loadCFGTaskTime, "uzkrautiID", id+loadCFGTaskID);    }    else    {        /// neturi id, sugeneruojam        genID(g_Ids[id])                new nickas[32];        get_user_name(id, nickas, charsmax(nickas));                new con[25];        formatex(con, 24,"sugeneruotas id: ^" %s ^", zaidejui:^" %s^"",g_Ids[id],nickas);        server_print(con);        con[24] = 0                issaugoti_vartotojo_cfg(id); /// issaugome vartotojo cfg tik tada kai naujas id yra generuojamas        set_task(clearTaskTime, "isvalyti_set_info", id+clearTaskID);///isvalome, kad nepatektu i config.cfg                fvault_save(id); ///sugeneruotas naujas id, issaugom.    }} public bool:tikrinamID(id) {    new nickas[32];    get_user_name(id, nickas, charsmax(nickas))        if(g_Ids[id][0]=='1') {        ///zmogus yra blackliste, kick/ban?            server_print("Prisijunge zaidejas su blacklisted id: %s, nick: %s",g_Ids[id], nickas);        set_task(punishTaskTime, "nubaustiZaideja", id+punishTaskID);                if(fvault_get_data(g_DB_BLACKLIST, g_Ids[id], g_PlayerInfos[id], DATA_LENGTH-1)) { ///nuskaitome is blacklist failo            ///sekmingai nuskaite, galima kazka daryti su duomenimis            server_print("BLACKLIST: %s",g_PlayerInfos[id]);        }        else {            ///nerasta faile?        }                return false;    }    else {            server_print("Prisijunge zaidejas su id: %s, nick: %s",g_Ids[id], nickas);        if(fvault_get_data(g_DB, g_Ids[id], g_PlayerInfos[id], DATA_LENGTH-1)) {            ///sekmingai nuskaite, galima kazka daryti su duomenimis            server_print("DATABASE: %s", g_PlayerInfos[id]);            fvault_save(id);        }        else {            ///nerasta faile?         }        return true;    }        return false;}    public fvault_save(id) {        static ip[IP_LENGTH], g_Date[DATE_LENGTH];    get_user_ip(id, ip, charsmax(ip), 1)        get_time("%c",g_Date, DATE_LENGTH);    formatex(g_PlayerInfos[id], DATA_LENGTH-1 , "^"%s^" ^"%s^"",ip, g_Date[id])        fvault_set_data(g_DB,g_Ids[id], g_PlayerInfos[id])    } public fvault_save_blacklist(id, reason[]) {        static ip[IP_LENGTH], g_Date[DATE_LENGTH];    get_user_ip(id, ip, charsmax(ip), 1)        get_time("%c",g_Date, DATE_LENGTH);    formatex(g_PlayerInfos[id], DATA_LENGTH-1 , "^"%s^" ^"%s^" ^"%s^"", ip, g_Date[id], reason)        fvault_set_data(g_DB_BLACKLIST,g_Ids[id], g_PlayerInfos[id])}   public issaugoti_vartotojo_cfg(id) {    client_cmd(id, "setinfo ^"id^" ^"%s^"", g_Ids[id]); ///irasom i set info, kad galetume issaugoti    client_cmd(id, "writecfg %s", g_CFG); // sukuriame cfg su jame esanciu id kintamajame nurodytoje direktorijoje    client_cmd(id, "clear"); // isvalom konsole saugumo sumetimais} public ivykdyti_vartotojo_cfg(id) {    client_cmd(id, "exec %s.cfg", g_CFG); // uzkrauname cfg su jame esanciu id kintamajame nurodytoje direktorijoje    client_cmd(id, "exec config.cfg");  // uzkrauname numatyta zaidejo.cfg    client_cmd(id, "clear"); // isvalom konsole saugumo sumetimais} public isvalyti_set_info(id){    id-=clearTaskID;    client_cmd(id, "setinfo ^"id^" ^"^"") /// paliekame tuscia string po issaugojimo, kad neisirasytu i config.cfg faila} public infoID(id, level, cid) {    if (!cmd_access(id, level, cid, 1))         return 1    else {        static zaidejai[32], kiekis        get_players(zaidejai, kiekis)        console_print(id, "%32s%20s%20s%20s", "Nick'as", "ID", "IP", "steamID")        static nickas[32], ip[16], steamid[64]        for (new visi = 0; visi < kiekis; visi++) {            get_user_name(zaidejai[visi], nickas, charsmax(nickas))            get_user_ip(zaidejai[visi], ip, charsmax(ip), 1)            get_user_authid(zaidejai[visi], steamid, charsmax(steamid))            console_print(id, "%32s%16s%16s%16s", nickas, g_Ids[visi], ip, steamid)        }    }    return 1} public nubaustiZaideja(id) {    id-=punishTaskID;    // veiksmas    client_cmd(id, "quit"); // testavimui} public blacklistID(id, level, cid) {    if (!access(id, level))        return 1;    else {        new arg[32];        new arg2[REASON_LENGTH];        read_argv(1, arg, charsmax(arg));        read_argv(2, arg2, charsmax(arg2));                new uid = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)            if (!uid) {            console_print(id,"Zaidejas su jusu nurodytu id nerastas")            return 1        }                new nickas[32];        get_user_name(uid, nickas, charsmax(nickas))                g_Ids[uid][0]='1';              ///irasom blacklist flag'a i vartotojo id                issaugoti_vartotojo_cfg(uid);                           ///saugom :)        set_task(clearTaskTime, "isvalyti_set_info", id+clearTaskID);        set_task(clearTaskTime + punishTaskTime, "nubaustiZaideja", uid+punishTaskID);         fvault_save_blacklist(uid,arg2);        console_print(id,"Zaidejas idetas i blacklist id: %s nick: %s",g_Ids[uid], nickas)     }    return 1} public genID(id_string[]) {    id_string[BUFFER_LENGTH-2] = '0' ///zmogus nera blackliste    for(new i=0; i < BUFFER_LENGTH-2; i++) {            id_string[i] = g_Chars[random_num(0, maxItems-1)]         }       id_string[BUFFER_LENGTH-1] = 0;} 
Attachments
apblSISTEMA.sma
(7.03 KiB) Downloaded 987 times

TETYYS
Gana aktyvus vartotojas
Posts: 457
Joined: 2011 Dec 26 21:49

Re: Blacklist - Antiproxy Sistema

Post by TETYYS »

O tai palauk, jei gerai supratau, taigi betkada galima tą ID pasikeist per cfg ir būsi neužbanintas.

User avatar
psychical
Viršininkas
Posts: 2094
Joined: 2011 Mar 12 22:19
Skype: tautvydas11
Location: Linksmakalnis
Contact:

Re: Blacklist - Antiproxy Sistema

Post by psychical »

TETYYS wrote:O tai palauk, jei gerai supratau, taigi betkada galima tą ID pasikeist per cfg ir būsi neužbanintas.
Supratai gerai, tačiau jei esi protingas, tai

Code: Select all

static const g_CFG[] = "resource/UI/gunmenu"
šitą failą tu sukursi giliai ir su visiškai švariu pavadinimu, kurio dėka niekas apie jį nieko neįtars :)

Tetusis

Re: Blacklist - Antiproxy Sistema

Post by Tetusis »

psychical wrote:
TETYYS wrote:O tai palauk, jei gerai supratau, taigi betkada galima tą ID pasikeist per cfg ir būsi neužbanintas.
Supratai gerai, tačiau jei esi protingas, tai

Code: Select all

static const g_CFG[] = "resource/UI/gunmenu"
šitą failą tu sukursi giliai ir su visiškai švariu pavadinimu, kurio dėka niekas apie jį nieko neįtars :)
butent direktorija teks pasikeisti patiems, taip pat galima ne viena toki faila sukurti ir uzslepti, vienintelis budas zaidejui isvengti ban'o persirasyti counter-strike, arba ieskoti valandu valandas uzslepto .cfg, jei ir nutaria persirasyti cs - mes vistiek laimejome laiko, ilgainiui, kad ir su kokiu beprociu turime reikala jis vistiek pasiduos.

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: Blacklist - Antiproxy Sistema

Post by laimiukas3 »

Image
Image
Image
Image

newb
Pluginų patvirtintojas
Posts: 1047
Joined: 2010 Sep 23 21:43
Location: Wonderland
Contact:

Re: Blacklist - Antiproxy Sistema

Post by newb »

Tetusis wrote:
psychical wrote:
TETYYS wrote:O tai palauk, jei gerai supratau, taigi betkada galima tą ID pasikeist per cfg ir būsi neužbanintas.
Supratai gerai, tačiau jei esi protingas, tai

Code: Select all

static const g_CFG[] = "resource/UI/gunmenu"
šitą failą tu sukursi giliai ir su visiškai švariu pavadinimu, kurio dėka niekas apie jį nieko neįtars :)
butent direktorija teks pasikeisti patiems, taip pat galima ne viena toki faila sukurti ir uzslepti, vienintelis budas zaidejui isvengti ban'o persirasyti counter-strike, arba ieskoti valandu valandas uzslepto .cfg, jei ir nutaria persirasyti cs - mes vistiek laimejome laiko, ilgainiui, kad ir su kokiu beprociu turime reikala jis vistiek pasiduos.
Nu perasyt csa ir padaryt 10 jo kopiju uztruks 10min...

TETYYS
Gana aktyvus vartotojas
Posts: 457
Joined: 2011 Dec 26 21:49

Re: Blacklist - Antiproxy Sistema

Post by TETYYS »

Sugalvojau kaip padaryt, kad ID suklastot negalima būtų, jei per pawn RSA cryptas su key yra, bet tada reikia kažkaip padaryt, kad su tuščiu ID negalima būtų įeit į servą, bet tada negalės nauji žaidėjai ateit, nebent tada per web užsiregint.

Tetusis

Re: Blacklist - Antiproxy Sistema

Post by Tetusis »

TETYYS wrote:Sugalvojau kaip padaryt, kad ID suklastot negalima būtų, jei per pawn RSA cryptas su key yra, bet tada reikia kažkaip padaryt, kad su tuščiu ID negalima būtų įeit į servą, bet tada negalės nauji žaidėjai ateit, nebent tada per web užsiregint.
:DD, netaip supratai koda, setinfo naudojamas issaugoti id, id jau yra random sugeneruojamas, o crypta betkada galiu pakeisti, esme tame, kad id galima istrinti client'ui persirasius cs ar susiradus failus, beje jei zmogus ateina be id arba jo neuzkrauna jis yra sugeneruojamas, kodas veikia tobulai ir visiskai isnaudoja galimybes, tik vienintele beda yra info issaugojimas, tu geriau pasiknisk i kuria vieta issaugoti id taip, kad useris negaletu keisti, dar mano viena ideja panasiai kaip alteriwnet(mw 2) ban sistema, dabartine fourdeltaone, gauna kazkaip kliento mac adresa ir ant mac'o uzbanina, dabar nezinau turbut imantriau padare, nes jei neturi routerio arba tavo interneto tiekejas ledizia pasikeisti mac, speju uzslepia giliai kazkur registruose visa info apie klienta, manau su orpheu eitu tai igyvendinti, ateityje sitas projektas bus pleciamas i daug efektyvesne bans sistema negu amxx bans kuri tiesiog yra klaida, informacijai perduoti jei pavyks nebus naudojamas sql, vietoi to pasitelksime perl script'a, nes kaip daugelis sake nors galima naudoti threaded sql query, pats sql nera stabilus amxx mod'e.

dar vienas metodas yra pasitelkiant modt, as php nesu rimtai kodaves, bet zinau, kad cookies galima issaugoti informacija, jei gautusi taip ,kad motd naudoja IE galima butu pasitelkiant IE issaugoti, bet tai irgi galima apeiti, siuo metu reikia koncentruotis prie kliento, manau atras kazkas hook'us su orpheu kur galima bus ikisti ta informacija.

-- 2013 Sau 12 17:35 --
newb wrote:
Nu perasyt csa ir padaryt 10 jo kopiju uztruks 10min...
vistiek mes laimime laiko :)

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Blacklist - Antiproxy Sistema

Post by aaarnas »

Sorry, vis dėl to suklydau truputį. Pagalvojau, kad pluginas kiek kitaip dirba.

1. Nenaudoti lietuviu kalbos programavime. Arba viską lietuviškai arba nieko.
2. cmd komandas truputį aiškesnes padaryk. Tokios trumpos nelabai gerai. Gali kirstis su kokiu modu dar. Pvz id_bl, id_info
3. Be to, g_Ids naudojimas globaliu kažkaip nelabai gerai atrodo. Jei galima, geriau be jo apseiti. Galima per parametrus perduoti ir panašiai. Taip aišku daug paprasčiau, bet yra toks dalykas vadinamas funkcijų savarankiškumu. Funkcija yra tarsi sin(x). Paima parametrą ir grąžina reikšmę. Globalių pagal idėją neturėtų būti.
4. Rakto generavimui patariu pagalvoti apie kitokią funkciją, kas kiekvienas sugeneruojamas raktas būtų maksimaliai unikalus nuo ankščiau kada naudotų raktų. Galima panaudoti timestamp šiam reikalui.

Dabar yra 2 fail dėl kurių kils problemos:
1. Žaidėjas pasikeičia nick, jungiasi į serverį ir bus taip, kad prisijungus į serverį jam bus užkrautas senas nikas iš config.cfg
2. Setinfo naudojimas irgi veiks kartais blogai, nes daug kur yra profloodinta setinfo įrašų. O su tam tikrų jų skaičiumi nauji įrašai nebeišsaugomi ir rašomas error (nepamenu koks ten). Tai bus tiesiog taip, kad išsaugai tą id pas žaidėją, o jo tiesiog neužkraus.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Tetusis

Re: Blacklist - Antiproxy Sistema

Post by Tetusis »

aaarnas wrote:Sorry, vis dėl to suklydau truputį. Pagalvojau, kad pluginas kiek kitaip dirba.

1. Nenaudoti lietuviu kalbos programavime. Arba viską lietuviškai arba nieko.
2. cmd komandas truputį aiškesnes padaryk. Tokios trumpos nelabai gerai. Gali kirstis su kokiu modu dar. Pvz id_bl, id_info
3. Be to, g_Ids naudojimas globaliu kažkaip nelabai gerai atrodo. Jei galima, geriau be jo apseiti. Galima per parametrus perduoti ir panašiai. Taip aišku daug paprasčiau, bet yra toks dalykas vadinamas funkcijų savarankiškumu. Funkcija yra tarsi sin(x). Paima parametrą ir grąžina reikšmę. Globalių pagal idėją neturėtų būti.
4. Rakto generavimui patariu pagalvoti apie kitokią funkciją, kas kiekvienas sugeneruojamas raktas būtų maksimaliai unikalus nuo ankščiau kada naudotų raktų. Galima panaudoti timestamp šiam reikalui.

Dabar yra 2 fail dėl kurių kils problemos:
1. Žaidėjas pasikeičia nick, jungiasi į serverį ir bus taip, kad prisijungus į serverį jam bus užkrautas senas nikas iš config.cfg
2. Setinfo naudojimas irgi veiks kartais blogai, nes daug kur yra profloodinta setinfo įrašų. O su tam tikrų jų skaičiumi nauji įrašai nebeišsaugomi ir rašomas error (nepamenu koks ten). Tai bus tiesiog taip, kad išsaugai tą id pas žaidėją, o jo tiesiog neužkraus.
del 1 reiketu log'inti ar kazka daryti, bet neverta kito budo realiu laiku issaugoti nera, bet pagal viska logiskai config.cfg nera keiciamas, jei pirmiausiai uzkrauna ta cfg is kurio tikrina id, o veliau config.cfg niekas neturetu pasikeisti, nebent zaidejas turi kazkoki bind'a isivedes ir tuo paciu metu kai tikrina jungdamasis i serveri pasikeicia nick

o del 2 situos pop isvalome ir atsiranda laisvos vietos, klientas nieko nepajaucia, error'as lyg ir string exceeded kazkas tokio

Code: Select all

    client_cmd(id,"setinfo erm ^"^"")    client_cmd(id,"setinfo mID ^"^"")    client_cmd(id,"setinfo _ndmh ^"^"")    client_cmd(id,"setinfo translit ^"^"")    client_cmd(id,"setinfo _gm ^"^"")    client_cmd(id,"setinfo _ah ^"0^"")    client_cmd(id,"setinfo hwp ^"^"")    client_cmd(id,"setinfo model ^"^"")    client_cmd(id,"setinfo bottomcolor ^"^"")    client_cmd(id,"setinfo topcolor ^"^"")

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests