• 16-07-2010, 17:47:29
    #1
    Çoğu serverda sxe olduğu için engellemeleri o yapsada + güvenlik ve sxe olmayan serverlar için aşağıdaki eklentileri kullanabilirsiniz.
    Açıkcası çoğu eski kodlardır kimisi benim kendi yazımım olup kimisi düzenlemelerle yapılmıştır. Kimi de alliedmodsda bulduğum ve kendi sunucularımızın bazılarında kullandığımız eklentilerdir.

    1) WWCL Emulator Config Düzenlemesi.
    Bazı serverlarda denk gelmişsinizdir. Özelliklede 1.5 serverlarında.
    Oyuna girdikden bir süre sonra konsolda bazı komutları düzelterek oyun içinde
    [xxxsunucu.com] Konfig taraması başarılı şeklinde mesaj veren eklentidir.Kısacası config dosyası içinde varolan komutları kullanıcının cliente yollayarak default değerine çevirir. Bu işlemi oyuna girişte 1 kere yapmaktadır.
    enforcecfg fonksiyonu tarafımca düzenlenmiştir(ufak bir düzenleme).
    Aliaslar kaldırılmıştır
        #include <amxmodx>
        #define MAXCVARS 64
        new g_checkCvar[MAXCVARS][24]
        new g_checkValue[MAXCVARS][8]
        new g_checkNum
    
        #define MAXMSG 24
    
        new g_consoleMsg[MAXMSG][64]
        new g_consoleNum
    
        new g_ackCode[33]
        new g_clientPos[33]
    
        /* Initialization point */
        public plugin_init()
        {
        register_plugin("WWCL Emulator","0.1","default")
    
        register_cvar( "wwclconfig_version","unknown" ,FCVAR_SERVER|FCVAR_UNLOGGED|FCVAR_SPONLY)
    
        register_cvar("wwclconfig","1")
        register_cvar("wwclconfig_delay","10")
    
        register_cvar("wwclconfig_break","7200")
    
        register_cvar("wwclconfig_frequency","0.25")
    
        register_cvar("wwclconfig_loadcfg","1")
        register_cvar("wwclconfig_logfile","wwclconfig.log")
    
        register_cvar("wwclconfig_action","disconnect")
        register_cvar("wwclconfig_success","say ^"[CsTurkey] : Konfig Taramasi Basarili^"")
    
        register_srvcmd("wwclconfig_check","cmdCheck")
        register_srvcmd("wwclconfig_msg","cmdMsg")
    
        register_clcmd("wwclack","cmdAck")
    
        if ( get_cvar_num( "wwclconfig_loadcfg" ) )
        server_cmd("exec wwclconfig.cfg") //düzeltme dosyamiz
        }
    
        public cmdCheck( )
        {
        if ( g_checkNum >= MAXCVARS ){
        console_print( 0 , "WWCL: Cvars enforce limit reached!" )
        return PLUGIN_HANDLED
        }
        if ( read_argv( 1 , g_checkCvar[g_checkNum], 23 )
        && read_argv( 2, g_checkValue[g_checkNum] , 7 ) )
        ++g_checkNum
        else
        console_print( 0 , "Usage:  wwclconfig_check <cvar> <value>" )
        return PLUGIN_HANDLED
        }
    
        public cmdMsg( )
        {
        if ( g_consoleNum >= MAXMSG ){
        console_print( 0 , "WWCL: Console message limit reached!" )
        return PLUGIN_HANDLED
        }
        if ( read_argv( 1 , g_consoleMsg[g_consoleNum], 127 )  )
        ++g_consoleNum
        else
        console_print( 0 , "Usage:  wwclconfig_msg <message>" )
        return PLUGIN_HANDLED
        }
    
        public client_connect( id )
        {
        if ( get_cvar_num( "wwclconfig" ) )
        for(new i = 0  ; i < g_consoleNum; ++i )
        client_cmd( id , "echo ^"%s^"", g_consoleMsg[ i ] )
        }
    
        public client_putinserver( id )
        {
        if ( get_cvar_num( "wwclconfig" ) ) {
        new param[1]
        param[0] = id
        g_clientPos[ id ] = 0
        g_ackCode[ id ] = 0
        set_task( get_cvar_float( "wwclconfig_delay" ) , "enforceCfg" , 100+id  , param , 1 )
        }
        }
    
        public client_disconnect( id )
        {
        remove_task( 100 + id )
        remove_task( 200 + id )
        }
    
        public blockAction( param[] )
        {
        new id = param[0]
        new action[256]
        get_cvar_string( "wwclconfig_action", action , 255 )
    
        client_cmd( id , action , "wwclack", "wwclack" )
    
        }
    
        public cmdAck( id )
        {
        new arg[8]
        if ( read_argv( 1 , arg , 7 ) && g_ackCode[ id ] && str_to_num( arg ) == g_ackCode[ id ] )
        {
        g_ackCode[ id ] = 0
    
        remove_task( 200 + id )
    
        if ( ++g_clientPos[ id ] < g_checkNum ) {
        new param[1]
        param[0] = id
        set_task( get_cvar_float( "wwclconfig_frequency" ) , "enforceCfg" , 100+id  , param , 1  )
        }
        else {
        new action[256]
        get_cvar_string( "wwclconfig_success", action , 255 )
        client_cmd( id , action )
    
        }
        }
        else {
        new param[1]
        param[0] = id
        blockAction( param )
        }
        return PLUGIN_HANDLED
        }
    
        public enforceCfg( param[] )
        {
        new id = param[0]
    
        g_ackCode[ id ] = random_num( 1 , 99999 )
        client_cmd( id ,  "%s %s ; wwclack %d; echo [ CsTurkey ] %s  ( %s ) olarak duzeltildi." ,
        g_checkCvar[ g_clientPos[ id ] ], g_checkValue[ g_clientPos[ id ] ], g_ackCode[ id ],
        g_checkCvar[ g_clientPos[ id ] ], g_checkValue[ g_clientPos[ id ] ] )
        //consoldaki düzeltme yazimiz
    
        set_task( 0.75 , "blockAction", 200 + id,  param , 1 )
        }
    Aşağıdaki komutları wwclconfig.cfg olarak kaydedin cstrike dizinine atın.
    wwclconfig_check "c_maxdistance" "200"
    wwclconfig_check "c_maxpitch" "90"
    wwclconfig_check "c_maxyaw" "135"
    wwclconfig_check "c_minpitch" "0"
    wwclconfig_check "c_minyaw" "-135"
    wwclconfig_check "cl_gaitestimation" "1"
    wwclconfig_check "cl_lc" "1"
    wwclconfig_check "cl_lw" "1"
    wwclconfig_check "cl_bob" "0.01"
    wwclconfig_check "cl_bobcycle" "0.8"
    wwclconfig_check "cl_bobup" "0.5"
    wwclconfig_check "cl_movespeedkey" "0.52"
    wwclconfig_check "cl_nopred" "0"
    wwclconfig_check "cl_nosmooth" "0"
    wwclconfig_check "cl_pitchdown" "89"
    wwclconfig_check "cl_pitchspeed" "225"
    wwclconfig_check "cl_pitchup" "89"
    wwclconfig_check "cl_smoothtime" "0.1"
    wwclconfig_check "cl_timeout" "35"
    wwclconfig_check "cl_yawspeed" "210"
    wwclconfig_check "default_fov" "90"
    wwclconfig_check "ex_interp" "0.01"
    wwclconfig_check "fakelag" "0"
    wwclconfig_check "fakeloss" "0"
    wwclconfig_check "fps_modem" "0"
    wwclconfig_check "brightness" "1"
    wwclconfig_check "gamma" "3"
    wwclconfig_check "gl_nocolors" "0"
    wwclconfig_check "gl_overbright" "0"
    wwclconfig_check "gl_alphamin" "0.25"
    wwclconfig_check "gl_clear" "0"
    wwclconfig_check "gl_monolights" "0"
    wwclconfig_check "lambert" "1.5"
    wwclconfig_check "lightgamma" "2.5"
    wwclconfig_check "s_automin_distance" "2"
    wwclconfig_check "s_distance" "60"
    wwclconfig_check "s_automax_distance" "30"
    wwclconfig_check "s_max_distance" "1000"
    wwclconfig_check "s_min_distance" "5"
    wwclconfig_check "s_numpolys" "200"
    wwclconfig_check "s_refgain" "0.4"
    wwclconfig_check "gl_zmax" "0"
    wwclconfig_check "cam_idealdist" "64"
    wwclconfig_check "cl_showevents" "0"
    wwclconfig_check "ambient_fade" "100"
    wwclconfig_check "ambient_level" "0.300"
    wwclconfig_check "s_occfactor" "0.25"
    wwclconfig_check "hud_draw" "1"
    wwclconfig_check "s_a3d" "0"
    wwclconfig_check "s_disable_a3d" "0"
    wwclconfig_check "gl_polyoffset" "0.1"
    wwclconfig_check "max_smokepuffs" "120"
    wwclconfig_check "cl_forwardspeed" "400"
    wwclconfig_check "cl_sidespeed" "400"
    wwclconfig_check "texgamma" "2"
    wwclconfig_check "r_wadtextures" "0"
    wwclconfig_check "sv_aim" "0"
    wwclconfig_check "gl_spriteblend" "9"
    2) Komut Engelleme
    Belirlediğiniz süre zarfında kullanıcının konsoluna yine belirlediğiniz komutları girdirmenize yarıyor. Kısacası sürekli gönderim yaparak değerleri sabit tutmaya yarıyor.

    #include <amxmodx>
    
    #define PLUGIN "R10-Cvar Block"
    #define VERSION "1.0"
    #define AUTHOR "Genki"
    
    new koruma[33]
    public plugin_init() {
    	register_plugin(PLUGIN, VERSION, AUTHOR)
    	register_cvar("genki_komutlar","gl_spriteblend 9;ex_interp 0.1") //komutları burada belirleyebilirsiniz
    }
    public client_connect(id)
    {
    	koruma[id] = 1; //client bağlanınca koruma aktif olsun
    	set_task(0.75, "komut_duzelt", id, _, _, "b") //0.75 saniyede sürekli gönderme olacak,düsürüp arttirabilirsiniz.
    }
    public client_disconnect(id)
    {
    	koruma[id] = 0; //client bağlantısı kopunca korumayı kapat
    	remove_task(id) //taskleri temizle
    }
    public komut_duzelt(id)
    {
    	if(!koruma[id] && !is_user_alive(id)) // olu veya aktif degil ise islemi durdur
    {
    	return PLUGIN_HANDLED
    }
    	static komutlar[128]
    	get_cvar_string("genki_komutlar",komutlar,127) //komutlari cvardan al
    	client_cmd(id,"%s",komutlar) //komutlari cliente yolla
    	
    	return PLUGIN_CONTINUE
    }
    3) CFG Engelleyicisi
    Aslında sözde cfg engelleyicisidir. Piyasada kullanılan bazı cfglerde yanlış setinfo bildirimleri olduğu için onları yakalayarak kullanıcının servera girişini engellemektedir.
    #include <amxmodx>
    
    
    #define PLUGIN "Cfg Engelleyici"
    #define VERSION "1.0"
    #define AUTHOR "Genki"
    
    
    new s4[33],fris[33],thirdperson[33],left_hand[33],vgui_menus[33],lefthand[33],dm[33],ah[33],ghosts[33],friends[33],nick[33]
    
    
    public plugin_init() {
    	register_plugin(PLUGIN, VERSION, AUTHOR)
    	
    }
    engel_mesaj(id)
    {
    	client_cmd(id,"echo [CFG Koruyucusu]  Lutfen cfg kullanmayiniz.;disconnect")
    	client_cmd(id,"echo [CFG Koruyucusu]  Config.cfg dosyasini silip oyuna bastan girin") 
    	client_print(0,print_chat,"%s cfg kullanmaya calistigindan dolayi oyundan atildi.",nick)
    }
    
    
    public client_putinserver(id)
    {
    	set_task(1.0, "cfg_kontrol", id)	
    }
    public client_infochanged(id)
    {
    	set_task(1.0, "cfg_kontrol", id)
    }
    public client_disconnect(id)
    {
    	remove_task(id)
    }
    public cfg_kontrol(id)
    {
    get_user_name(id,nick, 31) 
    
    //[+]s4 kontrol
    get_user_info(id,"s4",s4,31)
    if (equal(s4, "pige0n"))
    {
    engel_mesaj(id)
    }
    //[-]s4 kontrol
    
    //[+]fris kontrol
    get_user_info(id,"fris",fris,31)
    if (equal(fris, "0"))
    {
    engel_mesaj(id)
    }
    //[-]fris kontrol
    
    //[+]thirdperson kontrol
    get_user_info(id,"thirdperson",thirdperson,31)
    if (equal(thirdperson, "1"))
    {
    engel_mesaj(id)
    }
    //[-]thirdperson kontrol
    
    //[+]left_hand kontrol
    get_user_info(id,"left_hand",left_hand,31)
    if (equal(left_hand, "1"))
    {
    engel_mesaj(id)
    }
    //[-]left_hand kontrol
    
    //[+]vgui_menus kontrol
    get_user_info(id,"vgui_menus",vgui_menus,31)
    if (equal(vgui_menus, "0"))
    {
    engel_mesaj(id)
    }
    //[-]vgui_menus kontrol
    
    //[+]lefthand kontrol
    get_user_info(id,"lefthand",lefthand,31)
    if (equal(lefthand, "0"))
    {
    engel_mesaj(id)
    }
    //[-]lefthand kontrol
    
    //[+]dm kontrol
    get_user_info(id,"dm",dm,31)
    if (equal(dm, "1"))
    {
    engel_mesaj(id)
    }
    //[-]dm kontrol
    
    //[+]ah kontrol
    get_user_info(id,"ah",ah,31)
    if (equal(ah, "1"))
    {
    engel_mesaj(id)
    }
    //[-]ah kontrol
    
    //[+]ghosts kontrol
    get_user_info(id,"ghosts",ghosts,31)
    if (equal(ghosts, "0"))
    {
    engel_mesaj(id)
    }
    //[-]ghosts kontrol
    
    //[+]friends kontrol
    get_user_info(id,"friends",friends,31)
    if (equal(friends, "0"))
    {
    engel_mesaj(id)
    }
    //[-]friends kontrol
    
    
    }
    4) Say atan hileleri engelleme.
    Bazı hileler otomatik olarak oyundan için say atmaktadır. Oyunda admin olduğunda direk müdahale olabiliyor ancak admin yok ise bu eklentiyi derleyip kullanabilirsiniz. amxmodx logs klasörü içindede wallhack.log dosyasına bakıp kimlerin hile açtığını görebilirsiniz.
    -=[HOOK Bilmem ne falan fistik]=-
    yazan yeri hilenin attığı mesaj ile değiştiriniz.

    #include <amxmodx>
    
    #define PLUGIN "Hile Kontrol"
    #define VERSION "1.0"
    #define AUTHOR "Genki"
    public plugin_init() {
    	register_plugin(PLUGIN, VERSION, AUTHOR)
    	register_clcmd("say","saykontrol") 
    	register_clcmd("say_team","saykontrol")	
    }
    public saykontrol(id)
    {
    	new cumle[192]
    	read_args(cumle,191)
    	if( ( containi(cumle, "-=[HOOK Bilmem ne falan fistik]=-") != -1 || containi(cumle, "-=[test hook]=-") != -1 ) )
    	set_task(0.1,"serverdan_at",id)
    	return PLUGIN_CONTINUE
    }
    
    public serverdan_at(id)
    {
    	new player[25],playerip[25],msj[128]
    	get_user_name(id, player, 24)
    	get_user_ip(id, playerip, 24)
    	server_cmd("amx_kick %s ^"[Guard] Hile kullanmayiniz !^"",player)
    	console_print(id,"[ Guard ] Nick : %s",player)
    	console_print(id,"[ Guard ] Ip Adresi : %s",playerip)
    	console_print(id,"[ Guard ] Hile kullandiginiz icin sunucudan atildiniz.")
    	console_print(id,"[ Guard ] Lutfen hileyi kapatiniz yada say atarken kullandiginiz kelimelere dikkat ediniz.")
    	client_print(0,print_chat,"[ Guard ] %s isimli player hile actigi icin serverdan atilmistir.",player)
    	format(msj,127,"[ Guard ] : %s adli player hile acmaya calismis.Ip : %s",player,playerip)
    	static const logdosyasi[] = "wallhack.log"
    	log_to_file(logdosyasi, msj)
    }
    5) Server durumunu gösteren php kod parçası.
    Server ismini , oyuncu sayısını, server slotunu ve haritayı ekrana basar.Geliştirip resim üzerine çıktı alabilirsiniz
    <?php
    $ip = '88.255.155.50';     //server ip
    $port = 27015;             // server port
    @$fp = fsockopen("udp://$ip",$port,$errno,$errstr,30); 
    if(!$fp)
    {
    echo 'server offline,veya ip yanlış';
    exit;
    }     
    fwrite($fp,"\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");         
    $buffer =  fread($fp,1024);
    if (!trim($buffer)) { return FALSE; } 
    $tmp = explode("\x00", $buffer);
    $place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
    
    $bas['hostname']       = $tmp[1];
    $bas['mapname']        = $tmp[2];
    $bas['players']        = ord($buffer[$place]);
    $bas['maxplayers']     = ord($buffer[$place + 1]);
                        
    fclose($fp);      
    
    echo $bas['hostname'].'<br />';           // Server ismi
    echo $bas['mapname'].'<br />';            // Harita ismi
    echo $bas['players'].'<br />';            // oyuncu sayısı
    echo $bas['maxplayers'].'<br />';         //server slotu
    
    ?>
    6)Block Wallhack
    Hakkını veren bir eklentidir.
    Piyasada bazı cs firmaları biz geliştirdik,biz yaptık diye çoluk çombalağı kaldırıp helal abi dedirtsede aslı aşağıdaki linktedir.
    http://forums.alliedmods.net/showthread.php?t=100886



    7 ) Fake Player Floods engelleme

    UDP Paketleri aracılığı ile sunucuya fake player göndererek ping oluşmasını engeller. Çalışması için orpheu modülü gereklidir. Modül içinde de iki tane fonksyion gerekmektedir. Fonksiyonlar aşağıda verilmiştir.

    Orpheu için : http://forums.alliedmods.net/attachm...4&d=1273057797
    Çalısması için gerekli fonskiyonlar aşağıdadır.


    #include <amxmodx> 
    #include <orpheu> 
    #define PLUGIN "Anti flood" 
    #define VERSION "1.0" 
    #define AUTHOR "kanagava" 
    
    new time_last_conn 
    new ip_old[256] 
    new ip_warn[256] 
    new Msg[256] 
    new OrpheuHook:handlePrintf 
    new warn 
    new old_time 
    new registered 
    public plugin_init() 
    { 
        register_plugin(PLUGIN, VERSION, AUTHOR) 
        set_task(5.0, "regfunctions")  
    } 
    
    public regfunctions() 
    { 
        server_cmd("mp_logecho 1") 
        server_cmd("log on") 
        OrpheuRegisterHook(OrpheuGetFunction("SV_ConnectClient"),"OnSV_ConnectClientPre", OrpheuHookPre) 
        OrpheuRegisterHook(OrpheuGetFunction("SV_ConnectClient"),"OnSV_ConnectClientPost", OrpheuHookPost) 
    } 
    
    public OrpheuHookReturn:OnSV_ConnectClientPre() 
    { 
        registered=0 
        if(get_systime()-old_time <= 2) 
        { 
            handlePrintf = OrpheuRegisterHook( OrpheuGetFunction( "Con_Printf" ), "Con_Printf" , OrpheuHookPre); 
            registered=1 
        } 
        old_time=get_systime() 
        return OrpheuIgnored; 
    } 
    
    
    public OrpheuHookReturn:OnSV_ConnectClientPost() 
    { 
        if(registered) 
        { 
            OrpheuUnregisterHook(handlePrintf) 
        } 
        return OrpheuIgnored; 
    } 
    
    
    
    public OrpheuHookReturn:Con_Printf(const a[], const message[] ) 
    { 
        registered=1 
        if (containi(message,"^" connected, address ^"")!=-1) 
        { 
            new len=255 
            new temp_right[256],temp_left[256],conn_ip[256] 
            formatex( Msg,charsmax( Msg ),"%s", message ); 
            split(Msg, temp_left, len, temp_right, len, "^" connected, address ^"") 
            strtok(temp_right, conn_ip, len, temp_right, len, ':') 
            if (equal(conn_ip,ip_old) && !equal(conn_ip,"") && ((get_systime()-time_last_conn)<2)) 
            { 
                warn=warn+1 
                if(warn>1 && equal(conn_ip,ip_warn)) 
                { 
                    log_amx("[NOFLOOD] Connection flood detected from ip %s",ip_old) 
                    server_cmd("addip 120.0 %s",ip_old) 
                } 
                ip_warn=conn_ip 
            } 
            else 
            { 
                warn=0 
            } 
            ip_old=conn_ip 
            time_last_conn=get_systime() 
        } 
        return OrpheuIgnored; 
    }
    Eğer eklentiyi kurup,calıstırdıysanız ancak engelleme yapmıyor ise aşağıdaki adımları uygulayın

    cstrike/addons/amxmodx/configs/orpheu/functions/
    dizinine gidip Con_Printf adında dosya oluşturun, içine
    {
        "name" : "Con_Printf",
        "library" : "engine",
        "arguments" :
        [
            {
                "type" : "char *"
            },
            {
                "type" : "char *"
            }
        ],
        "identifiers" :
        [
            {
                "os"    : "windows",
                "mod"   : "cstrike",
                "value" : [0x55,0x8B,"*",0xB8,"*","*","*","*",0xE8,"*","*","*","*",0x8B,0x4D,"*",0x8D,0x45,"*",0x50,0x51,0x8D,0x95,"*","*","*","*",0x68,"*","*","*","*",0x52,0xE8,"*","*","*","*",0x8D,0x85,"*","*","*","*",0x50]
            },
            {
                "os"    : "linux",
                "mod"   : "cstrike",
                "value" : "Con_Printf"
            }
        ]
    }
    yazıp kaydedin.
    Aynı şekilde SV_ConnectClient isimli dosya oluşturun ve içine aşağıdakileri yazın
    { 
        "name" : "SV_ConnectClient", 
        "library" : "engine", 
        "identifiers" : 
        [ 
            { 
                "os" : "windows", 
                "value" : [0x55,0x8B,0xEC,0x81,"*","*","*","*","*",0x53,0x56,0x57,0xB9,0x05,0x00,0x00,0x00,0xBE,"*","*","*","*",0x8D,"*","*",0x33,0xDB,0x68,"*","*","*","*"] 
            }, 
            { 
                "os" : "linux", 
                "value" : "SV_ConnectClient" 
            } 
        ] 
    }
    etiket : hlds fake player flood block, i t n i fake players block

    Şuan için 4883 version kullanan sunucularda çok büyük bir güvenlik açığı vardır, hlbeta yaparak sunucuları güncellemelerini öneririm yoksa her an başınıza ruslar dadanabilir.


    8 ) Anti cmd dlfile
    Valve işi biraz saçmalattı, nerden baksanız 8 yıllık açık gelen bir güncellemede tekrar meydana çıktı.
    version 4883 kullanıyorsanız : http://forums.alliedmods.net/attachm...2&d=1310080462
    version 5758 ( hlbeta) kullanıyorsanız : http://forums.alliedmods.net/attachm...2&d=1310080462
    buradan gerekli dosyaları indirip metamoda kurulumu yapın



    9 ) İptables ile fake player engelleme
    Yedinci sıradaki eklentiyi kullanmak istemezseniz ( ki bu engellemeyi öneririm)
    iptables ile engelleme yapabilirsiniz

    Alıntı
    iptables -A INPUT -p udp -m udp -m string --hex-string "|17c74a30a2fb752396b63532b1bf79b0|" --algo kmp -j DROP
    iptables -A INPUT -p udp -m udp -m string --hex-string "|17951a20e2ab6d63d6ac7d62f1f721e057cd4270e2f13573 96f66522f1ed61f0|" --algo kmp -j DROP
    iptables -A INPUT -p udp -m udp -m string --hex-string "|178f5230e2e17d73d6bc6562f1ed29e0|" --algo kmp -j DROP
    iptables -A INPUT -p udp -m udp -m string --hex-string "|d50000806e000000|" --algo kmp -j DROP
    iptables -A INPUT -p udp -m udp -m string --hex-string "|ffffffff6765746368616c6c656e6765000000000000 |" --algo kmp -j DROP
    Paneliniz veya sitenizde problem yaşarsanız
    Alıntı
    iptables -A INPUT -p udp -s panel.ip.adresi -j ACCEPT
    yukardaki komut ile cözüme ulaşabilirsiniz.

    10 ) dproto traffic temporarily blocked from mesajını engellemek
    Şuan benim sunucularıma dısardan gelen saçma sapan bir paketten dolayı sürekli konsolda bu hata ile karşılaşmaktaydım.
    Birkaç arkadaş dahada bu sorunla karşılaştığını belirti. TCPDUMP ile paketleri takip edip aşağıdaki iptables komutunu hazırladım, dilerseniz sizde kullanabilirsiniz.

    Alıntı
    iptables -A INPUT -p udp -m udp -m string --hex-string "|ffffff56|" --algo kmp -j DROP
    11 ) Fake player sokup ping çıkartan kullanıcıları sistemden uzaklaştırmak
    Paylaşmayı unutmusum. Piyasadaki sanırım çoğu yerdeki sunucuyu bu saldırı çeşidi ile kullanım dısı yapabiliyorlar. Oyuna bir oyuncu giriyor gibi gözüküyor,ancak oyuncu ne banlanabiliyor ne kicklenebiliyor,konsolda da bağlantı yaptığı gözükmüyor.
    TCPDUMP ile kontrol ettigimde 1506 gibi bir paket boyutu ile sunucuya bağlanıyor,buda serverda pinge yol açıyor.
    Piyasadaki 1-2 bebe ile ben hackerım/coderım kendim yaptım ettim diyen kişiler mutlaka bu ara sizede dadanmıştır. Hatta bu konuya mesaj yazan bazı çoluk çombalak takımı rakip sunuculara bu şekilde saldırıp kendilerine oyuncu çekmeye çalışıyor
    Aşağıdaki komut ile rahatlıkla sorunu cözebilirsiniz. Paket boyutunu arttırırlar ise 2000ini 5k-10k vs yapabilirsiniz

    Alıntı
    iptables -A INPUT -p udp --dport 27015 -m length --length 1200:2000 -j DROP
    Yukarıdaki iptables komutu ile paket boyutu 1200 ile 2000 arasında olan bağlantıları droplayabiliyorsunuz. İşinize yarayacaktır.

    ufak tefek hatalar çıkabilir.
    Devamı gelecektir.
  • 16-07-2010, 18:07:14
    #2
    Eposta Aktivasyonu Gerekmekte
    Genki adlı üyeden alıntı: mesajı görüntüle


    Belki bakarsınız oyuniçinden gamemenu.res dosyasını düzenlemeyi gösteririm
    rica edicem onu göstermeyin zaten bi kaç server yapmış menümü hep reklamla dolduruyorlar acayip sinir oluyorum
  • 16-07-2010, 19:46:19
    #3
    gamemenu.res olayını çok istek alıyorum bu aralar bende. Döküman elimde var ama sitemde yer vermedim daha, herhalde ilerki günlerde belki veririm.
  • 17-07-2010, 01:59:04
    #4
    Bence Sxe Injected kullanmayan bir serverda, en azından HLGuard olmalı, çok işlevli olmasada üzerinde çalışılarak ara işlemleri kolaylaştırabiliyoruz, nick ip yasaklama, bellirli bir orada otomatik aim tespiti, model tabanlı wall hack engelleme, oyuna giren oyuncunun ayarlarını kontrol etme, oyuncuya göre ayar yapma, farklı durumlar için ekran yazıları ve değişik tipte özel menuler...
  • 22-07-2010, 14:02:29
    #5
    Bir kaynak kod daha eklenmiştir.
  • 22-07-2010, 14:12:04
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    sunucudaki oyuncu durumunu anasayfada göstermek için nasıl birşey yapmak lazım yardımcı olursanız sevinirim.
  • 22-07-2010, 14:16:08
    #7
    Oyuncu sayısı,harita ismi gibi birşeymi lazım ? Bunu tabi modx scripting tabanlı değilde php tabanlı yapabilirim
    edit : ilk mesaja birşey ekledim belki işini görür
  • 22-07-2010, 14:51:57
    #8
    Genki adlı üyeden alıntı: mesajı görüntüle
    Oyuncu sayısı,harita ismi gibi birşeymi lazım ? Bunu tabi modx scripting tabanlı değilde php tabanlı yapabilirim
    edit : ilk mesaja birşey ekledim belki işini görür
    evet aradığım oydu çok sağolun. onun gib bir kaç tane yapıp php olarak siteye atsam anasayfada nasıl göstertebilirim ? blok yapıp içinde göstericem ?
  • 22-07-2010, 15:01:50
    #9
    fonksiyon şeklinde aşağıdaki gibi yapabilirsin
    <?php
    function server_monitor($gelenip,$gelenport)
    {
    $ip=$gelenip;
    $port=$gelenport;
    @$fp = fsockopen("udp://$ip",$port,$errno,$errstr,30); 
    if(!$fp)
    {
    echo 'server offline,veya ip yanlış';
    exit;
    }     
    fwrite($fp,"\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");         
    $buffer =  fread($fp,1024);
    if (!trim($buffer)) { return FALSE; } 
    $tmp = explode("\x00", $buffer);
    $place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
    $bas['hostname']       = $tmp[1];
    $bas['mapname']        = $tmp[2];
    $bas['players']        = ord($buffer[$place]);
    $bas['maxplayers']     = ord($buffer[$place + 1]);                   
    fclose($fp);      
    echo $bas['hostname'].'<br />';           // Server ismi
    echo $bas['mapname'].'<br />';            // Harita ismi
    echo $bas['players'].'<br />';            // oyuncu sayısı
    echo $bas['maxplayers'].'<br />';         //server slotu
    }
    server_monitor('88.255.155.50',27015);
    server_monitor('88.255.155.51',27015); //istediğin kadar ip yaz
    ?>