[PHP] Mon Bot Irc que j'ai fais en 2007

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

n0way

Membre actif
Nov 21, 2010
311
0
581
Earth
C'est un honneur pour moi de partager aujourd'hui la source de mon premier bot irc en PHP que j'ai retrouvé sur un forum de hack qui à re ouvert hier, il avait gardé leur base de donnée !

Code:
!md5 <encrypte/decrypte> <text/md5>
il permet d'encrypter un texte en md5, et avant il decrypter le md5 en utilisant le site ice.breaker.free.fr (qui ne marche plus malheureusement)

!date
donne la date

!radioblog
il donnait mon radio blog à l'epoque, mais il n'est plus valide.

!about
un simple about, pour savoir qui avait fait le robot.

!info
permettait de donner le nombre d'utilisateur sur le channel.

!ip2host <ip>
Donner le host à partir de l'ip.

!host2ip <host>
donner l'ip à partir du host

!infoserv <ip servjeux>
donner les informations d'un serveurs CS, CSS etc a partir de gametiger.

!lenght <text>
donne le nombre de caractère dans une phrase.

!html <caract>
me souviens plus :/

!dec2bin <decimal>
Decimal > Binaire

!bin2dec <binaire>
Binaire > Decimal

!dec2hex <decimal>
Decimal > Hexa

!hex2dec <hexa> 
Hexa > Decimal

bot.php
Code:
<?
set_time_limit(0);

/*************
 * Variables *
 *************/

$ip = "****";
$port = 6667;
$name = "n0waybot";
$chan = "#***";

$admin1 = ":n0way!n0way@***.***.**";

/***************************
 * connection & traitement *
 ***************************/

$fp = fsockopen("$ip", $port);
fputs($fp,"user nem mOo n0way@**.fr :n0way' bot\n");
fputs($fp,"nick $name\n");
fputs($fp,"join $chan\n");

while(true) {
   while($new=fgets($fp,1024)){
      $new = str_replace("\r", "", $new);
      $new = str_replace("\n", "", $new);
      $msg = explode(" ", strtolower($new));
      $msg2 = explode(" ", $new);

      if ($msg[1] != "375" && $msg[1] != "372" && $msg[1] != "376" && $msg[1] != "001" && $msg[1] != "002" && $msg[1] != "003" && $msg[1] != "004" && $msg[1] != "005" && $msg[1] != "251" && $msg[1] != "252" && $msg[1] != "254" && $msg[1] != "255" && $msg[1] != "265" && $msg[1] != "266" && $msg[1] != "372")
      {
         echo $new."\n";
         include("logs.php");
      }
      
      if ($msg[1] == "433")
      {
         $name = $name . rand(1,10);
         fputs($fp,"NICK $name\n");
         fputs($fp,"JOIN $chan\n");
      }

      if ($msg[1] == "353")
      {
         $taille = count($msg) - 2;
         $nbrcha = $taille - 4;
      }
      if ($msg2[0] == "PING") {
         fputs($fp, "pong $ip\n");
         echo "Ping? Pong!\n";
      }

      if (eregi("version",$msg2[3]) && $msg2[2] == $name) {
         $destinataire = substr($msg2[0], 1);
         $destinataire2 = split("!", $destinataire);
         $destinataire3 = str_replace(" ", "", $destinataire2[0]);
         fputs($fp, "NOTICE $destinataire3 :\002\0034[\003VERSION\0034]\002\003 I'm a PHP BOT set by n0way\n");
      }
      
      if ($msg[3] == ":!cmd" && !$msg[4])
      {
         $destinataire = substr($msg[0], 1);
         $destinataire2 = split("!", $destinataire);
         $destinataire3 = str_replace(" ", "", $destinataire2[0]);
         fputs($fp, "NOTICE $destinataire3 :\002\0034[\003commands\0034]\002\003 !md5 <encrypte/decrypte> <text/md5>, !date , !radioblog, !about, !info, !ip2host <ip>, !host2ip <host>, !infoserv <ip servjeux>\n");
         fputs($fp, "NOTICE $destinataire3 :\002\0034[\003commands\0034]\002\003 !lenght <text>, !html <caract>, !dec2bin <decimal>, !bin2dec <binaire>, !dec2hex <decimal>, !hex2dec <hexa>\n");
      }
      
      if ($msg[3] == ":!date")
      {
         $date = date("d/m/Y");
         $heure = date("H:i");
         fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Date\0034]\002\003 Nous sommes le $date et il est $heure\n");
      }

      if ($msg[3] == ":!html" && $msg[4])
      {
         $html = htmlentities($msg[4]);
         fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003 $html\n");
      }
      if ($msg[3] == ":!ip2host" && $msg[4])
      {
         $hostbyaddr = gethostbyaddr($msg[4]);
         fputs($fp, "PRIVMSG $msg[2] :\002\0032(\002\00314Host\0032\002)\002\003 $hostbyaddr\n");
      }
      if ($msg[3] == ":!host2ip" && $msg[4])
      {
         $hostbyname = gethostbyname($msg[4]);
         fputs($fp, "PRIVMSG $msg[2] :\002\0032(\002\00314IP\0032\002)\002\003 $hostbyname\n");
      }

      include("gametiger.php");
      include("cmdcrypt.php");      
      include("cmdmd5.php");


      if ($msg[3] == ":!radioblog")
         fputs($fp, "PRIVMSG $msg[2] :mY radioblog: http://***.free.fr/radio.blog/\n");
      if ($msg[3] == ":!about" && !$msg[4])
         fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003About\0034]\002\003 n0way' PHP bot crée le 23/12/2006 (mail: n0way@***.fr)\n");
      if ($msg[3] == ":!info")
      {
         fputs($fp,"NAMES $msg[2]\n");
         fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Info\0034]\002\003 Il y a $nbrcha personnes sur $msg[2]\n");   
      }
      if ($msg[3] == ":!lenght" && $msg[4])
      {
         $var = strlen($msg[4]);
         fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Lenght\0034]\002\003 $msg[4] ($var)\n");
      }

      if ($msg[0] == $admin1 && $msg2[1] == "PRIVMSG")
      {
         include("cmdadmin.php");
      }
   }
}

?>

cmdadmin.php
Code:
<?

if ($msg[3] == ":!quit") {
   fputs($fp, "QUIT :Requested by n3m3s1s\n");
   exit;
}

if ($msg[3] == ":!join" && $msg[4])
   fputs($fp, "JOIN $msg[4]\n");

if ($msg[3] == ":!part" && $msg[4])
   fputs($fp, "PART $msg[4] :Requested by n3m3s1s\n");

if ($msg[3] == ":!hop" && $msg[4])
   fputs($fp, "PART $msg[4] :Requested by n3m3s1s\n\r JOIN $msg[4]\n");

if ($msg[3] == ":!nick" && $msg[4])
   fputs($fp, "NICK $msg[4]\n");

if ($msg[3] == ":!op")
{
   if (!$msg[4])
      fputs($fp,"MODE $msg[2] +o n3m3s1s\n");
   else
      fputs($fp,"MODE $msg[2] +o $msg[4]\n");
   }

if ($msg[3] == ":!deop")
{
   if (!$msg[4])
      fputs($fp,"MODE $msg[2] -o n3m3s1s\n");
   else
      fputs($fp,"MODE $msg[2] -o $msg[4]\n");
}

if ($msg[3] == ":!voice")
{
   if (!$msg[4])
      fputs($fp,"MODE $msg[2] +v n3m3s1s\n");
   else
      fputs($fp,"MODE $msg[2] +v $msg[4]\n");
}

if ($msg[3] == ":!devoice")
{
   if (!$msg[4])
      fputs($fp,"MODE $msg[2] -v n3m3s1s\n");
   else
      fputs($fp,"MODE $msg[2] -v $msg[4]\n");
}

?>

cmdcrypt.php
Code:
<?

if ($msg[3] == ":!dec2bin" && $msg[4])
{
   if (ctype_digit($msg[4]) != "TRUE") { fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Erreur\0034]\003\002 Il ne doit y avoir que des chiffres\n"); }
   else {
      $dec2bin = decbin($msg[4]);
      fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003 $dec2bin\n");
   }
}
if ($msg[3] == ":!bin2dec" && $msg[4])
{
   if (ctype_digit($msg[4]) != "TRUE") { fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Erreur\0034]\003\002 Il ne doit y avoir que des chiffres\n"); }
   else {
      $bin2dec = bindec($msg[4]);
      fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003 $bin2dec\n");
   }
}
if ($msg[3] == ":!dec2hex" && $msg[4])
{
   if (ctype_digit($msg[4]) != "TRUE") { fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Erreur\0034]\003\002 Il ne doit y avoir que des chiffres\n"); }
   else {
      $dec2hex = dechex($msg[4]);
      fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003 $dec2hex\n");
   }
}
if ($msg[3] == ":!hex2dec" && $msg[4])
{
   if (ctype_xdigit($msg[4]) != "TRUE") { fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Erreur\0034]\003\002 Il ne faut que des caracteres hexa.\n"); }
   else {
      $hex2dec = hexdec($msg[4]);
      fputs($fp, "PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003 $hex2dec\n");
   }
}

?>

cmdmd5.php
Code:
<?
if ($msg[3] == ":!md5") {
   if ($msg[4] == "encrypte" && $msg[5])
   {
      $md5 = md5($msg[5]);
      fputs($fp,"PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003 $md5\n");
   }
   if ($msg[4] == "decrypte" && $msg[5])
   {
      if (strlen($msg[5]) != 32) { fputs($fp,"PRIVMSG $msg[2] :\002\0034[\003Erreur\0034]\003\002 hash invalid\n"); }
      else {
         $fp2 = fopen("http://ice.breaker.free.fr/md5.php?hash=$msg[5]", "r");
         $source = fgets($fp2, 2046);
         $explode1 = explode("-", $source);
         $explode2 = explode("<", $explode1[1]);
         $result = str_replace("&eacute;", "é", $explode2[0]);
         fclose($fp2);
         if ($result == " Pas de correspondance trouvée.") { fputs($fp,"PRIVMSG $msg[2] :\002\0034[\003Erreur\0034]\003\002$result\n"); }
         else { fputs($fp,"PRIVMSG $msg[2] :\002\0034[\003Result\0034]\002\003$result\n"); }
      }
   }
}
?>

gametiger.php
Code:
<?
if ($msg[3] == ":!infoserv" && $msg[4])
{
   $gatg = fopen("http://www.gametiger.net/search?address=$msg[4]", "r");
   $lines = 1;

   while($lines <= 19)
   {
      $dirlines = fgets($gatg,1024);
      $lines++;
      if ($lines == 19)
      {
         $dirlines = $new=fgets($gatg,1024);
         $servername = substr($dirlines, strpos($dirlines, "<font color=666666><b>"), strpos($dirlines, "&nbsp;</b>"));
         $servername = str_replace("<font color=666666><b>", "", $servername);
         $servername = str_replace("&nbsp;</b></td></tr>", "", $servername);
         $servername = str_replace("\r", "", $servername);
         $servername = str_replace("\n", "", $servername);
         $servername = html_entity_decode($servername);
         

      }
   }
   while ($lines <= 24)
   {
      $dirlines = fgets($gatg,1024);
      $lines++;
      if ($lines == 24)
      {
         $maps = substr($dirlines, strpos($dirlines, "</td><td>"), strpos($dirlines, "&nbsp;</td>"));
         $maps = str_replace("</td><td>", "", $maps);
         $maps = str_replace("&nbsp;</td></tr>", "", $maps);
         $maps = str_replace("\r", "", $maps);
         $maps = str_replace("\n", "", $maps);
      }
   }
   while ($lines <= 29)
   {
      $dirlines = fgets($gatg,1024);
      $lines++;
      if ($lines == 29)
      {
         $passw = substr($dirlines, strpos($dirlines, "</td><td>"), strpos($dirlines, "</td></tr>"));
         $passw = str_replace("</td><td>", "", $passw);
         $passw = str_replace("</td></tr>", "", $passw);
         $passw = str_replace("\r", "", $passw);
         $passw = str_replace("\n", "", $passw);
         $lines++;
      }


      if ($lines == 30)
      {
         $dirlines = fgets($gatg,1024);
         $nbrp = substr($dirlines, strpos($dirlines, "valign=bottom>"), strpos($dirlines, "</td></tr>"));
         $nbrp = str_replace("valign=bottom>", "", $nbrp);
         $nbrp = str_replace("</td></tr>", "", $nbrp);
         $nbrp = str_replace("\r", "", $nbrp);
         $nbrp = str_replace("\n", "", $nbrp);
      }
   }
   fclose($gatg);
   fputs($fp, "PRIVMSG $msg[2] :\002\0032(\002\00314ServerName\0032\002)\002\003 $servername\n");
   fputs($fp, "PRIVMSG $msg[2] :\002\0032(\002\00314Maps\002\0032)\002\003 $maps \002\0032(\002\00314Players\002\0032)\002\003 $nbrp \002\0032(\002\00314Password\0032\002)\003\002 $passw\n");
}
?>

logs.php
Code:
<?
if ($msg2[2] != "AUTH" && $msg2[0] != ":Centuri.FR.Worldnet.Net" && $msg2[1] != "NOTICE" && $msg2[0] != ":[email protected]" && $msg2[1] != "NOTICE")
{
   if ($msg2[0] == PING) {
      $taille = count($msg) - 2;
      $logs = fopen("../www/bot/logs.html", "a+");
      fputs($logs, "<font color='#007700'>Ping? Pong!</font><br />\n");
      fclose($logs);
   }
   else {
      $logs = fopen("../www/bot/logs.html", "a+");
      fputs($logs,"$new<br />\n");
      fclose($logs);
   }
}
?>


Code:
\002 -> Gras
\003x -> Couleur x (exemple rouge = \0034)

J’espère que cela pourra profiter a certains.... mais je sais que une masse de source comme cela c'est pas évidant.

Amicalement,
n0way
 

ced34

Membre Banni
Feb 5, 2011
62
0
426
54
Vrement GG a toi en plus ce bot est super bien coder Vrement GG je pence que sa me servire pour coder mon bot, même si je prefere le protocole Http a irc ^^

Pourrais tu me donner
le nom du forum?
Je recherche de petite board de hack actuellement :)