İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Cause IRC Güvenlik Botu

ReksNet

0
İyinet Üyesi
Katılım
11 Temmuz 2005
Mesajlar
415
Reaction score
0
Türkiye'nin en iyi mIRC Coderi olarak gösterilen DefauLt un yazmış olduğu NoMercy botunun bir benzerini artık tüm irc serverlarına kiralıyoruz. Cause botu ile IRC'de güvenlikde bir devrim açıyoruz. Cause botu serverda admin oper olmasada tüm serverin güvenliğini sağlamaktadır. Şu anda Cause botunu Birçok büyük IRC serveri kullanmaktadır.

Ayrıntılı bilgi için: http://www.reksnet.com/ircsecurity.php
 

Raiden

0
İyinet Üyesi
Katılım
13 Ocak 2005
Mesajlar
339
Reaction score
0
Ben bu hizmeti PHP ve mysql e (dogru duydunuz web uzerinden calistiracağınız php dosyası ile) bedavaya isteyenlere veriyorum. kiralamak saçma olmamış mı?
 

selim61

0
İyinet Üyesi
Onaylı Üye
Katılım
10 Mayıs 2006
Mesajlar
5,299
Reaction score
11
Konum
<?=selim61?>
Raiden' Alıntı:
Ben bu hizmeti PHP ve mysql e (dogru duydunuz web uzerinden calistiracağınız php dosyası ile) bedavaya isteyenlere veriyorum. kiralamak saçma olmamış mı?
taaa 5 ay önceki konu nerden buldun :D
 

DeviLLe

0
İyinet Üyesi
Katılım
13 Kasım 2004
Mesajlar
594
Reaction score
0
olsun sonuçta birisi free yapıyor birisi $ alıyor. 5 ay bile geçse bence iyi yapmış yazmakla.
 

Die

0
İyinet Üyesi
Katılım
27 Aralık 2005
Mesajlar
240
Reaction score
0
Raiden su yazdıgını paylasabilirmisin bizimle ?
 

Raiden

0
İyinet Üyesi
Katılım
13 Ocak 2005
Mesajlar
339
Reaction score
0
tabiki

PHP:
<?
  //Caesar tarafından derlenmiştir.
 //msn: [email protected]
 //irc: irc.ttnet.net.tr
 //HunTeR e yardımlarından dolayı teşekkür ederiz.
  class CN_Bot
      {
    # Genel Tanımlamalar (Degerler CN_Bot methodu ıcınde verılmelı)
      var $localhost;  // Yerel Sunucu Adı
      var $remotehost; // Uzak Sunucu Adı (Baglanılacak sunucunun adı)
      var $port;       // Baglantı Noktası
      var $timeout;    // Baglantı Suresi (0 Sınırsız)
      var $channel;    // Kanal
      var $nick;       // Botun Nıckı
      var $closecode;  // Kapanma Kodu (kanala gırıldıgınde bot calısmayı durdurdur)
      var $logfile;    // Log dosyasının yolu ve adı

    # Baglantılar
      var $server;
      var $log;

    # Sınıf Cagrıldıgında Calıstırılacak Fonksıyon
      function CN_Bot()
         {
         define(n, "\n"); // Satır Sonu Karakterı

         $this->localhost  = 'adsluser-2866.adsl.ttnet.net.tr';
         $this->remotehost = 'irc.ttnet.net.tr';
         $this->port       = 6667;
         $this->timeout    = 0;
         $this->channel    = 'zurna';
         $this->nick       = 'PHPBot';
         $this->closecode  = 'byebye';
         $this->logfile    = 'log.txt';
         }

    # Baglantıları Kur..
      function Connect()
         {
         # Baglantı Suresını Ayarla
         set_time_limit($this->timeout);
         //set_time_limit(30);

         # Sunucu Baglantısı
         $this->server = fsockopen ($this->remotehost, $this->port, $hatano, $hatastr, $this->timeout) or
                         die('Sunucuya Bağlanamadı');

         # Log Dosyası Baglantısı
         $this->log    = fopen ($this->logfile, 'w+') or
                         die('Dosya Yaratılamadı');

         # Sırasıyla nıckı ve kullanıcı adını belırle, kanala gır ve ardından selam ver..
         fputs($this->server, 'NICK '.$this->nick.n);
         fputs($this->server, 'USER '.$this->nick.' '.$this->localhost.' '.$this->remotehost.' :'.$this->nick.n);
         fputs($this->server, 'IDENTIFY <şifre>'.n); //identify şifresi
         fputs($this->server, 'JOIN #'.$this->channel.n);
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :PHPbot v1.0... loading...'.n);
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :i am back'.n);
         return;
         }
         function op_ver($nick) {
         fputs($this->server, 'MODE #'.$this->channel.' +o $nick'.n);
         }


    # Baglantıları Kapat..
      function Disconnect($nick)
         {
         if ($nick=="Caesar") {
         fclose($this->server);
         fclose($this->log);
         exit;
         } else {
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :yava$ ol yava$'.n);
         }
         return;
         }

    # Mesaj Gonderıldıgınde...
      function PrivMsg($nick,$cmd,$arg)
         {
         # Eger mesaj kanala gonderıldıyse bu mesajı log dosyasına ekle
         if($cmd[1] == '#'.$this->channel)
         fputs($this->log, '<'.date("H:i").' '.$nick.'> '.$arg.n);

         # Eger bır gorev mesajı gonderıldıyse
         if(preg_match("'(.*?)'U",$arg,$set))
            {
            switch($set[1])
               {

               case substr($set[1],0,5)=='selam': fputs($this->server, 'PRIVMSG #'.$this->channel.' :sanada selam '.$nick.' nasılsın?'.n); break;
               }
            }

         return;
         }

    # Gorev Mesajı Gonderıldıgınde..
      function TaskMsg($nick,$mesaj)
         {
         $ymesaj=substr($mesaj,6,10000);
         $link=ereg_replace(' ','+',$ymesaj);
         $alink=trim($link);
         $oku=fopen("http://localhost/irc/sql.php?query=$alink","r");
         $yaz=fgets($oku);
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :'.$ymesaj.'-> '.$yaz.n);
         }

    # Botu Calıstır
      function Run()
         {
         $this->Connect();

         # Sonsuz dongumuzu baslatıyoruz
         while (!feof($this->server))
            {
            # Sunucudan gelen her datayı log dosyamıza aktarıyoruz (test amaclı)
            $data = fgets ($this->server,1024);
            //fputs($this->log,$data);

            # PING geldıgınde pong gonderıyoruz
            if(preg_match("'PING(.*?)'si", $data, $set))
            fputs($this->server,'PONG '.trim($set[1]).n);

            # Kodun kılıt noktası.. Sunucdan gelen datayı parcalara ayırıyoruz
            if(preg_match("':(.*?)!([^\s]*?)\s(.*?)\s:(.*?)'U", $data, $set))
               {
               $nick = trim($set[1]);
               $host = trim($set[2]);
               $cmd = explode(" ",trim($set[3]));
               $arg = trim($set[4]);

               # Ardından $cmd (yanı komuta) baglı olarak ılgılı methodu calıstırıyoruz
               switch($cmd[0])
                  {
                  case "PRIVMSG": $this->PrivMsg($nick,$cmd,$arg); break; // Mesaj Gonderıldıgınde
                  case "PART":  break; // Tamamlanmadı..
                  case "JOIN":  break; // Tamamlanmadı..
                  case "NICK":  break; // Tamamlanmadı..
                  case "QUIT":  break; // Tamamlanmadı..
                  }

               }
            }
         }
      }

 $CN_Bot = new CN_Bot();
 $CN_Bot->Run();
?>

en basit halidir. geliştirmeye aciktir.
 

DefauLt

0
İyinet Üyesi
Katılım
16 Kasım 2004
Mesajlar
284
Reaction score
0
Konum
İstanbul
Raiden' Alıntı:
tabiki

PHP:
<?
  //Caesar tarafından derlenmiştir.
  //HunTeR e yardımlarından dolayı teşekkür ederiz.
  class CN_Bot
      {
    # Genel Tanımlamalar (Degerler CN_Bot methodu ıcınde verılmelı)
      var $localhost;  // Yerel Sunucu Adı
      var $remotehost; // Uzak Sunucu Adı (Baglanılacak sunucunun adı)
      var $port;       // Baglantı Noktası
      var $timeout;    // Baglantı Suresi (0 Sınırsız)
      var $channel;    // Kanal
      var $nick;       // Botun Nıckı
      var $closecode;  // Kapanma Kodu (kanala gırıldıgınde bot calısmayı durdurdur)
      var $logfile;    // Log dosyasının yolu ve adı

    # Baglantılar
      var $server;
      var $log;

    # Sınıf Cagrıldıgında Calıstırılacak Fonksıyon
      function CN_Bot()
         {
         define(n, "\n"); // Satır Sonu Karakterı

         $this->localhost  = 'adsluser-2866.adsl.ttnet.net.tr';
         $this->remotehost = 'irc.ttnet.net.tr';
         $this->port       = 6667;
         $this->timeout    = 0;
         $this->channel    = 'zurna';
         $this->nick       = 'PHPBot';
         $this->closecode  = 'byebye';
         $this->logfile    = 'log.txt';
         }

    # Baglantıları Kur..
      function Connect()
         {
         # Baglantı Suresını Ayarla
         set_time_limit($this->timeout);
         //set_time_limit(30);

         # Sunucu Baglantısı
         $this->server = fsockopen ($this->remotehost, $this->port, $hatano, $hatastr, $this->timeout) or
                         die('Sunucuya Bağlanamadı');

         # Log Dosyası Baglantısı
         $this->log    = fopen ($this->logfile, 'w+') or
                         die('Dosya Yaratılamadı');

         # Sırasıyla nıckı ve kullanıcı adını belırle, kanala gır ve ardından selam ver..
         fputs($this->server, 'NICK '.$this->nick.n);
         fputs($this->server, 'USER '.$this->nick.' '.$this->localhost.' '.$this->remotehost.' :'.$this->nick.n);
         fputs($this->server, 'IDENTIFY <şifre>'.n); //identify şifresi
         fputs($this->server, 'JOIN #'.$this->channel.n);
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :PHPbot v1.0... loading...'.n);
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :i am back'.n);
         return;
         }
         function op_ver($nick) {
         fputs($this->server, 'MODE #'.$this->channel.' +o $nick'.n);
         }


    # Baglantıları Kapat..
      function Disconnect($nick)
         {
         if ($nick=="Caesar") {
         fclose($this->server);
         fclose($this->log);
         exit;
         } else {
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :yava$ ol yava$'.n);
         }
         return;
         }

    # Mesaj Gonderıldıgınde...
      function PrivMsg($nick,$cmd,$arg)
         {
         # Eger mesaj kanala gonderıldıyse bu mesajı log dosyasına ekle
         if($cmd[1] == '#'.$this->channel)
         fputs($this->log, '<'.date("H:i").' '.$nick.'> '.$arg.n);

         # Eger bır gorev mesajı gonderıldıyse
         if(preg_match("'(.*?)'U",$arg,$set))
            {
            switch($set[1])
               {

               case substr($set[1],0,5)=='selam': fputs($this->server, 'PRIVMSG #'.$this->channel.' :sanada selam '.$nick.' nasılsın?'.n); break;
               }
            }

         return;
         }

    # Gorev Mesajı Gonderıldıgınde..
      function TaskMsg($nick,$mesaj)
         {
         $ymesaj=substr($mesaj,6,10000);
         $link=ereg_replace(' ','+',$ymesaj);
         $alink=trim($link);
         $oku=fopen("http://localhost/irc/sql.php?query=$alink","r");
         $yaz=fgets($oku);
         fputs($this->server, 'PRIVMSG #'.$this->channel.' :'.$ymesaj.'-> '.$yaz.n);
         }

    # Botu Calıstır
      function Run()
         {
         $this->Connect();

         # Sonsuz dongumuzu baslatıyoruz
         while (!feof($this->server))
            {
            # Sunucudan gelen her datayı log dosyamıza aktarıyoruz (test amaclı)
            $data = fgets ($this->server,1024);
            //fputs($this->log,$data);

            # PING geldıgınde pong gonderıyoruz
            if(preg_match("'PING(.*?)'si", $data, $set))
            fputs($this->server,'PONG '.trim($set[1]).n);

            # Kodun kılıt noktası.. Sunucdan gelen datayı parcalara ayırıyoruz
            if(preg_match("':(.*?)!([^\s]*?)\s(.*?)\s:(.*?)'U", $data, $set))
               {
               $nick = trim($set[1]);
               $host = trim($set[2]);
               $cmd = explode(" ",trim($set[3]));
               $arg = trim($set[4]);

               # Ardından $cmd (yanı komuta) baglı olarak ılgılı methodu calıstırıyoruz
               switch($cmd[0])
                  {
                  case "PRIVMSG": $this->PrivMsg($nick,$cmd,$arg); break; // Mesaj Gonderıldıgınde
                  case "PART":  break; // Tamamlanmadı..
                  case "JOIN":  break; // Tamamlanmadı..
                  case "NICK":  break; // Tamamlanmadı..
                  case "QUIT":  break; // Tamamlanmadı..
                  }

               }
            }
         }
      }

 $CN_Bot = new CN_Bot();
 $CN_Bot->Run();
?>

en basit halidir. geliştirmeye aciktir.

Cause mu mu şimdi Yusuf :=)

Cause: 1451 satır, 61 KB, win32 paylaşımlı mirc script (dedicated: p4 3.0 gb ram, 100 mbit netdirekt)
 

Raiden

0
İyinet Üyesi
Katılım
13 Ocak 2005
Mesajlar
339
Reaction score
0
default ben en basit versiyonu nu gosterdim kullanıcılar geliştirsin şeklinde yoksa Caesar'ın şu an TTNette kullandığı bot koruma dışında ayrıca bir yapay zeka taşıyor. sorulan sorulara cevap verebiliyor ayrıca sözlük sistemi olarakta kullanılıyor.

önemli olan bunu açık kaynak olarak dağıtılması senin gibi irc adresinizi verin şu kadar paraya sokuyum denmesi degil. ayrica php ile yapilmiş olmasida cabasi senin sunucun laga girerse botta laga girecek ama bunu heryerden calistirabilirsiniz hatta localhostunuza kurdugunuz bir apache bile yeterlidir.

gerekli yorumu zaten kullanıcılar yapacaktır.
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
evet TTNet üzerinde bu şekilde bir botum mevcut velakin hala geliştirmekteyim. görmek isteyenler direk özelime gelip belirtirlerse botu sunucuya sokmaktayim. Bu arada @Default 1451 satir kod ve 61kb boyutu olmasi 1 mysql eder mi sizce?

Unutmayalim bu bot php ile uretildiği için arkasında mysql gibi bir sql database sistemi bulunmaktadir. eggdrop u bunun yerine koymayin komik olur.
 

ReksNet

0
İyinet Üyesi
Katılım
11 Temmuz 2005
Mesajlar
415
Reaction score
0
Raiden' Alıntı:
senin sunucun laga girerse botta laga girecek ama bunu heryerden calistirabilirsiniz
Bizim Windows sunucumuz ile Linux sunucularımız aynı datacenter üzerindedir.

Ceaser her güvenliğin bir geçiş noktası vardır. Senin yapabileceğin tüm güvenlikleri DefauLt geçebileceğini sende iyi biliyorsundur düşünebileceğin her güvenliği geçebilecek birisinin nasıl bir güvenlik botu yazabileceğini sen düşün.
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
ben defaultu tanimiyorum bile isminide ilk defa kullaniyorum ve görüyorum. buyrun ttnet teki güvenlik authcode duvarını geçsin. hatta bir açık size web kullanıcılarına authcode sorulmuyor. @Reksnet hep beraber izleyelim geçecek mi yoksa geçemeycek mi:)


edit: çok boş konusuyorsunuz karşinizdakini tanimadan bile neyse... en büyük sizsiniz.
edit 2: Ceaser değil Caesar dir.
 

DefauLt

0
İyinet Üyesi
Katılım
16 Kasım 2004
Mesajlar
284
Reaction score
0
Konum
İstanbul
Caesar' Alıntı:
ben defaultu tanimiyorum bile isminide ilk defa kullaniyorum ve görüyorum. buyrun ttnet teki güvenlik authcode duvarını geçsin. hatta bir açık size web kullanıcılarına authcode sorulmuyor. @Reksnet hep beraber izleyelim geçecek mi yoksa geçemeycek mi:)


edit: çok boş konusuyorsunuz karşinizdakini tanimadan bile neyse... en büyük sizsiniz.
edit 2: Ceaser değil Caesar dir.

Güzel degisken fullname falan filan biz bunlarla yıllar evvel oynardık :) Çok basit bir sistem kurmuşsunuz, kıramazsınız diyorsunuz. O zaman sen de karşındakileri iyi tanı.

Sadece /ttnetw yazın... sunucuda auth code girilmiş halde olacaksınız. Zurna kanalına otomatik girişte benden hediye :=)

Kod:
alias ttnetw {
  sockclose ttnetw
  sockopen ttnetw irc.ttnet.net.tr 80
}
on *:sockopen:ttnetw: {
  var %s sockwrite -nt $sockname
  %s POST /sohbet/ HTTP/1.1
  %s Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
  %s Referer: http://irc.ttnet.net.tr/sohbet/
  %s Accept-Language: tr
  %s Content-Type: application/x-www-form-urlencoded
  %s Accept-Encoding: gzip, deflate
  %s User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF)
  %s Host: irc.ttnet.net.tr
  %s Content-Length: 60
  %s Connection: Keep-Alive
  %s Cache-Control: no-cache
  %s
  %s nick=alsanagiris&sifre=&port=6667&kanal=%23zurna&B1=Ba%F0lan
}
on *:sockread:ttnetw: {
  sockread %s
  tokenize 32 %s
  if $1-2 == <param name="name" {
    set %fullname $gettok($3,2,34)
    sockclose $sockname
    ttnet
  }
}
alias ttnet {
  sockclose ttnet
  sockopen ttnet irc.ttnet.net.tr 6667
}
on *:sockopen:ttnet: {
  var %s sockwrite -nt $sockname
  %s NICK alsanagiris
  %s USER alsanagiris 0 0 : $+ %fullname
  %s
}
on *:sockread:ttnet: {
  sockread %s
  tokenize 32 %s
  if $4 == :VERSION {
    sockwrite -nt $sockname NOTICE IRC :VERSION PJIRC 2.2.1
    window -a @KAPAK
  }
  if TTNet IRC iyi sohbetler diler isin $1- {
    sockwrite -nt $sockname JOIN #zurna
  }
  aline @KAPAK %s
}


Bu arada, MySQL çok güvenli bir haltmış gibi konuşmuşsunuz. 3306 portuna bir kaç yüz socket açarak SQL bağlantılarını kilitleyebilirsiniz. Ben hash sistemlerimle SQL'den çok daha hızlı veri alışverişi sağlayabiliyorum.

Sidik yarışına dönmesin konu. Saygılar.
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
default u tebrik ediyoruz:) başından bu işi yaparken sock acilacağını webe tahmin etmiştik default lada konustuk bu kunuyu. kullanıcılara zorluk olmasin dige güvenlik kodu uygulaması getirilmemişti bu uygulamada getirilmiş sayılabilir.
 

DefauLt

0
İyinet Üyesi
Katılım
16 Kasım 2004
Mesajlar
284
Reaction score
0
Konum
İstanbul
TTNet kullanicilari zaten giris zorluklarina alismis kullanicilar. 2000-3000'li kitlelere hitap etmesi de beklenemez. Kirilmasi istenmiyorsa IRC'deki gibi, web'de de GD olayina gidilmeli.

Bu arada, Raiden, ben 1451 satirda onu yaziyorsam, PHP ile datalarin SQL girdi ciktilariyla beraber 10.000 satirdan asagi yazamazsin + cok hantal birsey olur. Cause'da 3-4 bin adet bu tur girdi ciktilarla birlikte oynuyorum. Yok ben heveslendim doldum tastim diyorsan yaz o turevde birsey, bedava olarak yayimla, biz de alkislayalim. PHP'den IRC'ye baglantiyi dunku cocukta yapar. Onemli olan uretebilecegin saldiri senaryolari ve yazabilecegin guvenlik filtreleri.

Yeni birseyler yapmak hos birsey, visual birseyler uretirseniz ben de elimden geldigi kadar destek veririm.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst