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 !
bot.php
cmdadmin.php
cmdcrypt.php
cmdmd5.php
gametiger.php
logs.php
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
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("é", "é", $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, " </b>"));
$servername = str_replace("<font color=666666><b>", "", $servername);
$servername = str_replace(" </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, " </td>"));
$maps = str_replace("</td><td>", "", $maps);
$maps = str_replace(" </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