Perl.Многопоточность.Большие обьемы. Code: use POSIX ":sys_wait_h"; use IO::Handle; # Количество процессов и кол-во задач на процесс my $max_proc = 30; my $max_per_proc = 30; # Записываем строку запуска скрипта. Ниже будет видно зачем это. my $exe = $0; # Нихт зомби $SIG{CHLD} = sub { while ((my $pid = waitpid(-1, WNOHANG)) > 0) {} }; # Создаём пайпы для обмена данными родитель-чайлд и чайлд-ридер, снимаем буферизацию pipe(PARENT_RDR, CHILD_WTR); pipe(CHILD_RDR, PARENT_WTR); CHILD_WTR->autoflush(1); PARENT_WTR->autoflush(1); # Записываем PID главного процесса, форкаем процесс-ридер my $master_pid = $$; my $reader_pid = fork(); die "Can't fork: $!" unless defined($reader_pid); # Пошёл основной процесс. if($reader_pid){ open(F, $ARGV[0]) or die "Can't open file: $!\n"; my %children; while(<F>){ chomp; s/\r//; my $line = $_; $line = sprintf("%-128s", $line); syswrite(CHILD_WTR,$line,128); # Читаем из файла и пишем в пайп точное количество данных. # Это необходимо для того, чтобы задания правильно читались чайлдами. # Если использовать простые print/<>/read/write то чайлды будут читать огрызки заданий. # см. ниже =) $0 = "$exe"; # Проверяем количество чайлдов и добавляем их, если нужно, до $max_proc while(checkChildren(\%children) < $max_proc){ my $pid = fork(); die "Can't fork: $!" unless defined($pid); if ($pid){ $children{$pid} = 1; } else { close(CHILD_RDR); close(CHILD_WTR); # Вот собссно и сам чайлд processChild(); exit; } } } # Файл кончился. Теперь пишем в пайп сигнал о выходе для всех чайлдов. while(checkChildren(\%children)){ syswrite(CHILD_WTR,sprintf("%-128s", 'EXIT'),128); } # Убиваем ридера. kill(2,$reader_pid); close(F); }else{ # Здесь происходит запуск ридера close(PARENT_RDR); close(PARENT_WTR); readerProcess(); exit; } sub processChild { # см. ещё чуть ниже =) $0 = "$exe - CHILD"; my $work = $max_per_proc; while($work){ my $bytes = sysread(PARENT_RDR, my $line, 128); $line=~s/.*?\x00//; $line=~s/\s+?$//; $line=~s/\s+//g; exit if $line eq 'EXIT'; next unless $line; # Получили задание. Оно будет гарантированно целым за счёт sysread/syswrite # Ну вот и добрались до странной конструкции =) # С её помощью при просмотре списка процессов мы увидим какой процесс чем занимается. # На работу системы не влияет, но категорически удобно =) $0 = "$exe - CHILD - $line"; my $result; # Здесь обрабатываем нашу задачу и пишем в пайп ридеру # ... # ... $result = sprintf("%-128s", $result); syswrite(PARENT_WTR,$result,128); $0 = "$exe - CHILD"; # ну это, думаю, понятно =) $work--; } } sub readerProcess { # Это процесс ридера $SIG{INT} = sub { exit; }; open(F,">result.txt"); select F; $|=1; my $count; my $work = 1; # Читаем данные из пайпа, пишем в файл while($work){ $count++; # Ридер рассказывает скока он уже обработал $0 = "$exe - READER - reading... ".$count; my $bytes = sysread(CHILD_RDR, my $data, 128); $data=~s/.*?\x00//; $data=~s/\s+?$//; $data=~s/\s+//g; last if $data eq 'EXIT'; # Пишем print F "$data\n"; # Можно проверить не сдох ли родительский процесс. # Если вдруг он загнулся (а такое может случиться), то выйти. last unless kill(0, $master_pid); } close(F); } sub checkChildren { my $hash = shift; for my $pid(keys %{$hash}){ if(!kill(0, $pid)){ delete ${$hash}{$pid}; } } return scalar keys %{$hash}; } Варианты распараллеливания: 1.На каждую задачу выделяется один процесс. Вариант хорош тем, что каждое задание изолировано в отдельном процессе - не будет проблем с утечкой памяти и прочими заморочками (особенно когда юзаются сторонние модули). 2.Родить необходимое количество процессов и выдавать им задания. 3.Оптимальный вариант- принцип работы Апача. Основной процесс запускает заданное количество дочерних. Каждый дочерний выполняет установленное количество задач и умирает.
Сижу в маил агенте ищу девушку... лазию по мирам и просто бесит когда тебе пишут мол доступ ограничен.... вот теперь доступ не ограничен! хехе Code: <html> <head> <title>Мой мир@Mail.ru - Доступ не ограничен</title> </head> <body> <form onsubmit="show_big_image(linkz.value);return false;"> Ссылка на фотку, которую хочешь посмотреть:<br><input type=text id=linkz style='width:100%'> </form> <img src='' alt="тут будет фотка" id=srcimg> <script language="javascript"> function show_big_image(str) { //---------------------------------------------------------------------- // (c)oded by Gar|k - достало меня видеть этот доступ ограничен гргргр // // exp link: http://my.mail.ru/mail/gar.i.k/photo/52.html?mode= //---------------------------------------------------------------------- var re=/http\:\/\/(?:.*)\/(.*\/.*)\/.*\/(.*?).html(?:.*)/; srcimg.src=str.replace(re,"http://content.foto.my.mail.ru/$1/_myphoto/i-$2.jpg"); } </script> </body> </html> Если лень копипастить заходи сюда
Простой хостинг картинок. Очень быстро работает PHP: <style>*{overflow-x: hidden; overflow-y: hidden;} table{text-align:center;}form{width:500px;margin-top:90px;padding:5px;background-color:#fff;border:1px solid #ccc;}</style> <CENTER> <FORM method="POST" action="index.php" enctype="multipart/form-data"> <TABLE align="center"> <TR> <TD></TD> <TD><B>Бесплатный хостинг картинок</B></TD> <TD></TD> </TR> <TR> <TD>Choose a file to upload: </TD> <TD><input name="uploadedfile" type="file" /></TD> <TD><INPUT TYPE="submit" value="Upload File"></TD> </TR> </TABLE> <?php $upload=$_FILES["uploadedfile"]; $max_size=600000; // Byte $serv="http://".$_SERVER["HTTP_HOST"]."/img/"; $dir=$_SERVER["DOCUMENT_ROOT"]; $dir=$dir."/img/uploaded/"; $allow=array("image/png","image/jpeg","image/gif","image/bmp"); if($upload){ //name $type=$upload["type"]; $name=$upload["name"]; $tmp =$upload["tmp_name"]; $size=$upload["size"]; if($size==$max_size or $size<$max_size and $tmp){ if(in_array($type,$allow)){ $get=get($type); $l=md5(microtime()*time()); $link=$l[0].$l[1].$l[2].$l[3].$l[4].$l[5].$l[6].$l[7]; $dir=$dir.$link.$get; $md5=md5(file_get_contents($tmp)); $scan=scan($md5); if($scan){ $link=$scan; $get=""; }else{ copy($tmp,$dir); } $link=$serv."uploaded/".$link.$get; }else{ $error="Такое разрешение - запрещено :-("; } }else{ $error="Слишком большой размер или отсутствует файл..."; } if($error){echo "<B>Ошибка:</B><font color=red>$error</font><BR>\n";}else{ echo "<B>Успешно:</B> <font color=green>$link</font><BR>"."<A HREF=\"$link\">$link</A><BR>\n". "<INPUT TYPE=\"text\" NAME=\"msg\" size=\"55\" value=\"$link\" style=\"text-align:center;background:#2B2F34;color: #DDDDDD;font-family:Tahoma, sans-serif;size:2;border:none;\"><BR>\n". "<INPUT TYPE=\"text\" NAME=\"msg\" size=\"55\" value=\"[img]".$link."[/img]\" style=\"text-align:center;background:#2B2F34;color: #DDDDDD;font-family:Tahoma, sans-serif;size:2;border:none;\"><BR>\n";} } ?> </FORM> </CENTER> <?php function scan($md5){ global $dir; $dirs=scandir("uploaded/"); foreach($dirs as $v){ if($v!=="." and $v!==".."){ $md=md5(file_get_contents("uploaded/$v")); if($md==$md5){return $v;} //echo $v."<br>"; } } } function get($type){ global $allow; foreach($allow as $v){ if($type==$v){ list($t,$ext)=explode("/",$v); return ".".$ext; } } } ?>
IPB: Code: #!/usr/bin/perl use LWP::UserAgent; print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (A, ">>nicknames.txt"); $count = 0; while ($count <= $page) { $url=$adr."index.php?act=members&st=".$count ++."0"; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"http:.*index.*?showuser=.*\">(.*)[^Просмотреть .*]<\/a>/g; print A join "\n", @nicknames;} phpBB: Code: #!/usr/bin/perl use LWP::UserAgent; print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 500 > ); $page=<STDIN>; chomp($page); open (A, ">>nicknames.txt"); $count = 0; while ($count <= $page) { $url=$adr."memberlist.php?start=".$count."0"; $count ++,$count ++,$count ++,$count ++,$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\".*?mode=viewprofile.*\" class=\"gen\">(.*)<\/a>/g; print A join "\n", @nicknames;}
Ретрекер демоноида, для забаненых украинцев: http://mrthe.name/2009/04/retracker-demonoid/ да, я пиарю свой блог.
Forums Nicknames Grabber #============================ #Forums nicknames grabber #C0ded by ph1l1ster #ICQ: 612-672 #============================ Граббер неймов с форумов: Code: 1 - vBulletin 2 - phpBB 3 - IPB 4 - SMF 5 - MyBB 6 - Woltlab Burning Board 7 - PunBB 8 - XMBForum 9 - FUDforum 10 - Ikonboard граббит по дефолтным настройкам, не настроен на хаки типа html страниц. если неграббится: проверьте url, http://site.ru/forum/ (полный путь до форума, со всеми слэшами) Enter numbers of page witch users - это колличество страниц с именами. (для непонятливых) Сохраняет всё в тхт. Code: #!/usr/bin/perl use LWP::UserAgent; system('cls'); print qq( #============================# # Forums nicknames grabber # # C0ded by ph1l1ster # # ICQ: 612-672 # #============================#\n Forum for parsing?\n\n1 - vBulletin\n2 - phpBB\n3 - IPB 4 - SMF\n5 - MyBB\n6 - Woltlab Burning Board\n7 - PunBB 8 - XMBForum\n9 - FUDforum\n10 - Ikonboard\n\n> ); $do = <STDIN>;chomp($do); #vbulletin if ($do == 1){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (VB, ">>vbulletin_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."memberlist.php?do=getall&order=asc&sort=username&page=".$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"member.*?u=.*\">(.*)<\/a>/g; print VB join "\n", @nicknames;}} #phpbb if ($do == 2){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 500 > ); $page=<STDIN>; chomp($page); open (PHPBB, ">>phpbb_nicknames.txt"); $count = 0; while ($count <= $page) { $url=$adr."memberlist.php?start=".$count."0"; $count ++,$count ++,$count ++,$count ++,$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\".*?mode=viewprofile.*\" class=\"gen\">(.*)<\/a>/g; print PHPBB join "\n", @nicknames;}} #ipb if ($do == 3){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (IPB, ">>ipb_nicknames.txt"); $count = 0; while ($count <= $page) { $url=$adr."index.php?act=members&st=".$count ++."0"; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"http:.*index.*?showuser=.*\">(.*)[^Просмотреть .*]<\/a>/g; print IPB join "\n", @nicknames;}} #smf if ($do == 4){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 500 > ); $page=<STDIN>; chomp($page); open (SMF, ">>smf_nicknames.txt"); $count = 0; while ($count <= $page) { $url=$adr."index.php?action=mlist;start=".$count."0"; $count ++,$count ++,$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"http:.*index.*?action=profile.*\" title=\".*\">(.*)<\/a>/g; print SMF join "\n", @nicknames;}} #mybb if ($do == 5){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (MYBB, ">>mybb_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."memberlist.php?page=".$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"member.*?action=profile.*\">(.*)<\/a>/g; print MYBB join "\n", @nicknames;}} #Woltlab Burning Board if ($do == 6){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (WBB, ">>wmm_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."index.php?page=MembersList&pageNo=".$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"http.*index.*?page=User.*\" title=\".*\">(.*)<\/a><\/p><p class=\"/g; print WBB join "\n", @nicknames;}} #PunBB if ($do == 7){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (PUNBB, ">>punbb_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."userlist.php?p=".$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"profile.*?id=.*\">(.*)<\/a><\/td>/g; print PUNBB join "\n", @nicknames;}} #XMB if ($do == 8){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (XMB, ">>xmb_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."misc.php?action=list&page=".$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"member.*?action=viewpro.*member=.*\">(.*)<\/a>/g; print join "\n", @nicknames;}} if ($do == 9){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (XMB, ">>xmb_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."index.php?t=finduser&&&start=".$count."0"; $count ++,$count ++,$count ++,$count ++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"index.*usrinfo.*id=.*\">(.*)<\/a><\/td>/g; print join "\n", @nicknames;}} #Ikonboard if ($do == 10){ system('cls'); print qq( Enter adress: e.g. - http://forum.site.ru/ > ); $adr=<STDIN>; chomp($adr); print qq( Enter numbers of page witch users: e.g. - 294 > ); $page=<STDIN>; chomp($page); open (IKB, ">>ikb_nicknames.txt"); $count = 1; while ($count <= $page) { $url=$adr."memberlist.cgi?page=".$count++; $client = LWP::UserAgent->new( ) or die; $answer = $client->get($url); @nicknames=$answer->content =~ /<a href=\"profile.*action=show.*member=.*\"><b>(.*)<\/b><\/a>/g; print IKB join "\n", @nicknames;}}
php криптор от KALLISTO v1.2 PHP: <pre><? // 2:52 27.07.2007 ####################################### ####################################### ######## PHPCrypt ####### public ######## Ver. 1.2 ####### ####################################### ####################################### ######## KALLISTO ####### ######## 98009800 ####### ####################################### ####################################### $jsCrypt = 0; // 1 - on, 0 - off ява крипт $input = "1.php"; // файл который надо криптануть $output = "index.php"; // выходяший криптованный файл ################################# /// $f=join("", file($input)); $key = rand(1,100); $find = 0; $start_pos = strpos($f, "<?php"); if($start_pos === false ) { $start_pos = strpos($f, "<?"); if($start_pos !== false ) { $find=1; $f= substr($f, $start_pos+2, strlen($f)); } } else { $find=1; $f= substr($f, $start_pos+5, strlen($f)); } if($find==0) exit("Крипт скрипта неполучится."); $start_pos = strrpos($f, "?>"); if(is_int($start_pos))$f=substR($f, 0, $start_pos); $new = '';$len=strlen($f); for($i=0;$i<$len;$i++) { $new .= chr(ord($f[$i]) ^ $key); } $new = str_replace("<?", "[t1]", $new); $new = str_replace("'", "[t3]", $new); $jsPre=''; $jsAfter=''; if($jsCrypt == 1) { $jsPre=" function jsCrypt(\$buffer) { \$return = \$buffer; \$new = ''; for(\$i=0;\$i<strlen(\$buffer);\$i++) { \$tmp = ord(\$buffer[\$i]); if(\$tmp<100) \$tmp = \"0\".\$tmp; if(\$tmp<10) \$tmp = \"0\".\$tmp; \$new .= \$tmp; } \$return = \"<script> var len = \".strlen(\$buffer).\"; var str = '\$new'; var tmp = ''; for(i=0;i<len;i++) { // String.fromCharCode(str.substr(i*3, 3) ) document.write( String.fromCharCode(str.substr(i*3, 3) ) ); } </script>\"; return \$return; } ob_start(\"jsCrypt\");"; $jsAfter="ob_end_flush();"; } $code = "<? $jsPre \$key=$key; \$res ='$new'; \$str=str_replace(\"[t1]\", \"<?\", \$res); \$str=str_replace(\"[t3]\", \"'\", \$str); \$len=strlen(\$str); \$ev=''; for(\$i=0;\$i<\$len;\$i++) \$ev .= chr(ord(\$str[\$i]) ^ \$key); eval(\$ev); $jsAfter; ?>"; @fwrite( fopen($output, "w"), $code) or die("Не удалось создать файлик..."); ?> </pre>
Скрипт для рассылки по контакт листу mail.ru agent. Особо не тестил, ибо нет аккаунтов. http://kaimi.ru/wp-content/uploads/2009/04/mrim.rar
gmail регер с ручным вводом капчи PHP: <?php $password = "vv12345"; set_time_limit(300); function generateCode($length=6) { $chars = "abcdefghijklmnopqrstuvwxyz"; $code = ""; $clen = strlen($chars) - 1; while (strlen($code) < $length) { $code .= $chars[mt_rand(0,$clen)]; } return $code; } function generateDigits($length=6) { $chars = "0123456789"; $code = ""; $clen = strlen($chars) - 1; while (strlen($code) < $length) { $code .= $chars[mt_rand(0,$clen)]; } return $code; } $proxies; $proxiesFile = fopen("proxies.txt","r+"); while(!feof($proxiesFile)){ $proxy = fgets($proxiesFile,4096); $delimPos = strpos($proxy, ":"); $ip = substr($proxy, 0, $delimPos); $port = substr($proxy, $delimPos+1, strlen($proxy)); $proxies[]= array($ip,$port); } $lastURL=""; function getPageWithProxy($URL,$data,$referer,$badString,$proxyType='') { global $lastURL; global $proxies; $proxyArrSize = count($proxies); $cp = curl_init($URL); $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.0; us; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.666"; curl_setopt($cp, CURLOPT_USERAGENT, $useragent); curl_setopt($cp, CURLOPT_RETURNTRANSFER,1); curl_setopt($cp, CURLOPT_CONNECTTIMEOUT,3); curl_setopt($cp, CURLOPT_FOLLOWLOCATION,1); curl_setopt($cp, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cp, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($cp, CURLOPT_VERBOSE, 1); $cookieFilename = "cookies.txt"; if(substr(PHP_OS, 0, 3) == 'WIN' && strpos($cookieFilename,"/")===FALSE){ $cookieFilename = str_replace('\\','/', getcwd().'/'.$cookieFilename); } curl_setopt($cp, CURLOPT_COOKIEJAR, $cookieFilename); curl_setopt($cp, CURLOPT_COOKIEFILE, $cookieFilename); if($data!=""){ curl_setopt($cp, CURLOPT_POST, 1); curl_setopt($cp, CURLOPT_POSTFIELDS,$data); } if($referer!=""){ curl_setopt($cp, CURLOPT_REFERER, $referer); } if($proxyType=="socks4"){ curl_setopt($cp,CURLOPT_PROXYTYPE,4); } $success = false; for($i=0; $i<2*$proxyArrSize; $i++){ $num = rand(0,$proxyArrSize-1); $ip = $proxies[$num][0]; $port = $proxies[$num][1]; curl_setopt($cp, CURLOPT_PROXY, "$ip".":"."$port"); $code = curl_exec($cp); $lastURL = curl_getinfo($cp,CURLINFO_EFFECTIVE_URL); if(curl_errno($cp)==0 && curl_getinfo($cp,CURLINFO_HTTP_CODE)==200){ $badPos = 0; if($badString != ""){ $badPos = strpos($code, $badString); } if($badPos==0){ $success = true; break; } } } curl_close($cp); if ($success == true){ return $code; }else{ return false; } } if(!isset($_POST["go"])){ $code = getPageWithProxy("http://gmail.com","","","","socks4"); $code = getPageWithProxy("http://mail.google.com/mail/signup","",$lastURL,"","socks4"); $doc = new DOMDocument(); $doc->loadHTML($code); function getInputByName($domDocument,$name){ $inputList = $domDocument->getElementsByTagName("input"); for($c=0; $c<$inputList->length; $c++){ $atts = $inputList->item($c)->attributes; if($atts->getNamedItem("name")->nodeValue==$name){ return $atts->getNamedItem("value")->nodeValue; break; }; } } $captchaURL = getInputByName($doc,"newaccounturl"); $continue = getInputByName($doc,"continue"); $data = "continue=".urlencode($continue)."&"; $data = $data."service=mail&type=2&t=null&"; $data = $data."dsh=".getInputByName($doc,"dsh")."&"; $data = $data."edk=gmail.com&p=&"; $data = $data."Passwd=$password&PasswdAgain=$password&PersistentCookie=no&"; $data = $data."rmShown=1&smhhk=1&&smhck=1&nshk=1&selection=What+is+your+primary+frequent+flyer+number&"; $data = $data."ownquestion=&IdentityAnswer=".generateDigits(rand(2,3))."&SecondaryEmail=&hl=en&loc=US&"; $data = $data."newaccounttoken=".getInputByName($doc,"newaccounttoken")."&"; $data = $data."newaccounturl=".urlencode($captchaURL)."&"; $data = $data."newaccounttoken_audio=".getInputByName($doc,"newaccounttoken_audio")."&"; $data = $data."newaccounturl_audio=".urlencode(getInputByName($doc,"newaccounturl_audio"))."&"; $data = $data."program_policy_url=".urlencode(getInputByName($doc,"program_policy_url"))."&"; $data = $data."privacy_policy_url=".urlencode(getInputByName($doc,"privacy_policy_url"))."&"; $data = $data."requested_tos_location=US&requested_tos_language=en&"; $data = $data."served_tos_location=US&served_tos_language=en&"; $data = $data."submitbutton=".urlencode(getInputByName($doc,"submitbutton")); ?> <html> <head/> <body> <form method="post" action="gmreger.php"> <input type="hidden" name="continue" value="<?php echo $continue ?>" /> <input type="hidden" name="data" value="<?php echo $data ?>" /> <input type="hidden" name="lastURL" value="<?php echo $lastURL ?>" /> <table> <tr> <td> Enter keyword: </td> <td> <input name="keyword" value=""></input> </td> </tr> <tr> <td> </td> <td> <img alt="captcha" src="<?php echo $captchaURL ?>" /> </td> </tr> <tr> <td> Enter captcha: </td> <td> <input name="captcha"></input> </td> </tr> <tr> <td> </td> <td> <input type="submit" name="go" width="150" value="go"/> </td> </tr> </table> </form> </body> </html> <?php }else{ $words = preg_split('/ /',$_POST["keyword"]); $firstname = $words[0]; $lastname; $login = substr($firstname,0,9); if(count($words)>1){ $lastname = $words[1]; $login = $login . substr($lastname,0,4); }else{ $lastname = $words[0]; $login = $login . substr($lastname,1,7); } $login = strtolower($login . generateCode(2).generateDigits(2)); $data = "FirstName=".$firstname."&LastName=".$lastname."&"; $data = $data."UsernameSelector=header&Email=".$login."&"; $data = $data."newaccountcaptcha=".$_POST["captcha"]."&"; $data = $data.$_POST["data"]; $regURL = "https://www.google.com/accounts/CreateAccount?service=mail&".urlencode($_POST["continue"])."&type=2"; echo getPageWithProxy($regURL,$data,$_POST["lastURL"],"","socks4"); } ?>
Небольшая функция для расшифровки простых обфускаций, например как тут или тут PHP: function decrypt($data,$filename='',$times=1) { error_reporting(0); function bulk($str) { $str = preg_replace('~^\?\>~','',$str); return str_ireplace(array('<?php','<?','?>','eval','__FILE__'),array('','','/*','echo','$_FILE__'),$str); } $f = $data; $_FILE__=$filename; for ($i=0;$i<$times;$i++) { ob_start(); eval(bulk($f)); $f = ob_get_contents(); ob_end_clean(); } return preg_replace(array('~^\?\>~','~\<\?$~'),'',$f); } Способ применения - $data - содержимое интересующего скрипта, например file_get_contents('encrypted.php') $filename - путь до файла, некоторые защиты привязываются к __FILE__ например $count - количество раз для снятия защиты, подбирается экспериментально, например для DLE - это 1, а для RedButton VVS Edition 5 или 6.
PHP: <? $UIN = '123456789'; //Уин $PASSWORD = '0000'; //Пароль if(!isset($_POST[uin]) or !isset($_POST[text])) { if(isset($_GET[uin])){ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <title>Отправка соощений ICQG</title> </head> <body> <b>Отправка ICQ-сообщений</b> <br/> <form method="post" action="index.php"> Номер ICQ:<br> <input type="Text" name="uin" value="'.$_GET[uin].'" maxlength="9"> <br> Сообщение:<br> <input type="Text" name="text" value="" maxlength="500"> <br> <input type=submit name="send" value="Отправить"> </form> <p> </body> </html>'; }else{ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <title>Отправка сообщний ICQ</title> </head> <body> <b>Отправка ICQ-сообщений</b> <br/> <b>Ве сообщения приходят с номера 123456789!</b> <br/> <form method="post" action="index.php"> Номер ICQ:<br> <input type="Text" name="uin" value="" maxlength="9"> <br> Сообщение:<br> <input type="Text" name="text" value="" maxlength="500"> <br> <input type=submit name="send" value="Отправить"> </form> <p> </body> </html>'; }}else{ include('WebIcqLite.class.php'); $text=Encode($_POST[text],w); $icq = new WebIcqLite(); if($icq->connect($UIN, $PASSWORD)){ if(!$icq->send_message($_POST[uin], $text)) { echo $icq->error; }else{ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <title>ICQ</title> </head> <body> <b>Отправка ICQ-сообщений</b> <br/> Сообщение отправлено.<br> <a href="index.php">Отправить еще</a> </body> </html>'; } $icq->disconnect(); }else{ echo $icq->error; } } function Encode($str,$type=u) { $conv=array(); for($x=192;$x<=239;$x++) $conv[u][chr($x)]=chr(208).chr($x-48); for($x=240;$x<=255;$x++) $conv[u][chr($x)]=chr(209).chr($x-112); $conv[u][chr(168)]=chr(208).chr(129); $conv[u][chr(184)]=chr(209).chr(209); $conv[w]=array_flip($conv[u]); if($type=='w' || $type=='u') return strtr($str,$conv[$type]); else return $str; } ?> Скрипт формы отправки сообщений на icq. для работы скрипты нужен WebIcqLite.class.php и номер и пароль от аси с которой будет осуществляться отправка сообщений
"Ыыыы" или просто ОЛоло Вообщем на коленке накидал скриптик, дело было достаточно давно, но надо было трансика на вечер, инет у меня медленный вот накидал для скачки музыки с прикольного сайтика, также можно подредактировать под свои нужды. PHP: #! /usr/bin/env python # -*- coding:windows-1251 -*- #-#######################################################-## # Скачиваем музыку ## # (c) 2009 ## # Создал специально для себя, ## # так как инет медленный, а без ## # Транса, кодить не умею... ## # De-visible project ## # ndcoders.ru ## # GreetZ To login999 ## # Thanks to http://mp3.myws.ru/index.php/search?q=trance ## # Также делаем программы на заказ ## # Контакт ICQ#: 22-3333-575 ## # Мы: ndcoders.ru, devisible.ru ## #-######################################################-### import urllib import time import re import threading import urlparse import string URL_MAS = [] s = 1 def DownFile(url): f = urlparse.urlsplit(url) mp3_name = str(f.path).strip('\/') mp3_name = str(mp3_name).strip('[') mp3_name = str(mp3_name).strip(']') mp3_name = str(mp3_name).strip('\'') mp3_name = mp3_name.replace('/','1') try: print u"Начинаем закачку файла: ", mp3_name, '\n' print u"Размер файла: ", GetSizeMp3(url), "byte" infile = urllib.urlopen(url).read() except: print u"Ошибка скачивания: ", mp3_name print u", Файл закачен\n" mp3_file = open(mp3_name+str(s)+'.mp3',"wb") mp3_file.write(infile) mp3_file.close() print 'File Saved Local' def GetSizeMp3(url): size_mp3 = urllib.urlopen(url).info() mp3 = str(size_mp3) s_mp3 = str(re.findall(r'Content-Length: (.*?)\r\n',mp3))[2:-2] print s_mp3 def LoadFromFile(): with open("urls.txt",) as urls: for ur in urls: URL_MAS.append(ur[:-1]) def ServerOption(): info = urllib.urlopen('http://mp3.myws.ru').info() with open('serv_option.txt',"w") as serv: serv.write(str(info)) print ''' Author: De-visible, ICQ#: 22-3333-575 WeAre: ND_c0ders, ndcoders.ru ServerOption: mp3.myws.ru ''' print info,'\n\n' def Start_Process(): LoadFromFile() print u"Массив ссылок загружен",'\n' print u"Менеджер закачек запущен",'\n' ServerOption() s = 1 for url_mas in URL_MAS: DownFile(url_mas) time.sleep(3) s+= s print u" Все закачки завершены" threading.Thread(target = Start_Process).start() time.sleep(1000)
Индикация языка ввода будит полезна при вводе пароля, скрипт покажет язык ввода и регистр вводимых букв. вставляем это на страницу: Code: <script type="text/javascript"> $(function(){ $(':password').keyboardLayout(); }); </script> подгружаем эти файлы: jquery.keyboardLayout.js и jquery.js Code: (function() { jQuery.keyboardLayout = {}; jQuery.keyboardLayout.indicator = $('<span class="keyboardLayout" />'); jQuery.keyboardLayout.target; jQuery.keyboardLayout.layout; jQuery.keyboardLayout.show = function(layout){ this.layout = layout; this.indicator.text(layout); this.target.after(this.indicator); }; jQuery.keyboardLayout.hide = function(){ this.target = null; this.layout = null; this.indicator.remove(); }; jQuery.fn.keyboardLayout = function() { this.each(function(){ $(this).focus(function(){ jQuery.keyboardLayout.target = $(this); }); $(this).blur(function(){ jQuery.keyboardLayout.hide(); }); $(this).keypress(function(e){ var c = (e.charCode == undefined ? e.keyCode : e.charCode); var layout = jQuery.keyboardLayout.layout; if (c >= 97/*a*/ && c <= 122/*z*/ && !e.shiftKey || c >= 65/*A*/ && c <= 90/*Z*/ && e.shiftKey || (c == 91/*[*/ && !e.shiftKey || c == 93/*]*/ && !e.shiftKey || c == 123/*{*/ && e.shiftKey || c == 125/*}*/ && e.shiftKey || c == 96/*`*/ && !e.shiftKey || c == 126/*~*/ && e.shiftKey || c == 64/*@*/ && e.shiftKey || c == 35/*#*/ && e.shiftKey || c == 36/*$*/ && e.shiftKey || c == 94/*^*/ && e.shiftKey || c == 38/*&*/ && e.shiftKey || c == 59/*;*/ && !e.shiftKey || c == 39/*'*/ && !e.shiftKey || c == 44/*,*/ && !e.shiftKey || c == 60/*<*/ && e.shiftKey || c == 62/*>*/ && e.shiftKey) && layout != 'EN') { layout = 'en'; } else if (c >= 65/*A*/ && c <= 90/*Z*/ && !e.shiftKey || c >= 97/*a*/ && c <= 122/*z*/ && e.shiftKey) { layout = 'EN'; } else if (c >= 1072/*Р°*/ && c <= 1103/*СЏ*/ && !e.shiftKey || c >= 1040/*Рђ*/ && c <= 1071/*РЇ*/ && e.shiftKey || (c == 1105/*С‘*/ && !e.shiftKey || c == 1025/*РЃ*/ && e.shiftKey || c == 8470/*в„–*/ && e.shiftKey || c == 59/*;*/ && e.shiftKey || c == 44/*,*/ && e.shiftKey) && layout != 'RU') { layout = 'ru'; } else if (c >= 1040/*Рђ*/ && c <= 1071/*РЇ*/ && !e.shiftKey || c >= 1072/*Р°*/ && c <= 1103/*СЏ*/ && e.shiftKey) { layout = 'RU'; } if (layout) { jQuery.keyboardLayout.show(layout); } }); }); }; })(); Каму надо тот разберётся, кто непонял что это вот ДЕМО
кодируем в UTF-7 Щас час потратил изобретая велосипед на Си (читая RFC написал свой base64 ы), но так и не получил результата... немного полистав странички гугла... PHP: <?php echo iconv('windows-1251','UTF-7',"</title><script>alert(document.cookie);</script>"); ?> *бьюсь ап стену* З.Ы: если не в курсах зачем может понадобится UTF-7 читайте про XSS
PHP: <? # +----------------------------------------------+ # | - Generator socks5 ;) | # | - (c) 2009 Writed by shellz | # +----------------------------------------------+ // Setting: set_time_limit(0); error_reporting(0); $loop = 10; // 1 - num loops $mode = 1; // 0 - show all; 1 - show only the good $save = 0; // 0 - show on page; 1 - save in the file $file = 'socks5.txt'; // File name do { $url = "http://sockslist.net"; $get = file($url); foreach($get as $getting) { $pattern = "/<script type=\'text\/javascript\'>(.+)\(unescape\(\'.*\'\)\)<\/script>/is"; preg_match($pattern, $getting, $grab); if($grab[0] == true) { $str_beg = str_replace("<script type='text/javascript'>eval(unescape('", "", $grab[0]); $str_end = str_replace("'))</script>","", $str_beg); $js = urldecode($str_end); $arr = explode(";", $js); $version = explode("+", $arr[16]); $country = explode("</td>", $arr[16]); for($i = 0; $i < 12; $i++) { if($i > 10) { $two = explode("=", trim($arr[$i])); } else { $socks .= '$'.trim($arr[$i]).';'; } } $socks .= '$port = $'.trim($two[1]).';'; eval($socks); if(trim($version[5]) == 5) { // show only socks 5 version; $intz = $ipa.":".$port.":".trim($version[5]); } if($mode == 0) { if($save == 0) { echo $ipa.":".$port." [".gethostbyaddr($ipa)."] => ".$country[0]."<br>"; } else { file_put_contents($file, $ipa.":".$port." [".gethostbyaddr($ipa)."] => ".$country[0]."\n", FILE_APPEND); } } else { $check = file_get_contents("http://sockslist.net/cgi-bin/socks/proxytools.cgi?do=check&socks=".$intz); $patterm = "|<font color=\"\#00ab38\">works<\/font>|is"; if(preg_match($patterm, $check)) { if($save == 0){ echo $ipa.":".$port." [".gethostbyaddr($ipa)."] => ".$country[0]." - Socks5 Good! <br>"; } else { file_put_contents($file, $ipa.":".$port." [".gethostbyaddr($ipa)."] => ".$country[0]." - Socks5 Good!\n", FILE_APPEND); } } } } } $lp++; } while($lp < $loop); ?>