Полезные скрипты

Discussion in 'PHP' started by SMiX, 2 Nov 2006.

  1. ph1l1ster

    ph1l1ster Elder - Старейшина

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    стучи в аську :\
     
    1 person likes this.
  2. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    ph1l1ster, спасибо большое, всё работает как часы! :)
     
  3. [underwater]

    [underwater] Member

    Joined:
    29 Mar 2009
    Messages:
    78
    Likes Received:
    92
    Reputations:
    27
    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.Оптимальный вариант- принцип работы Апача. Основной процесс запускает заданное количество дочерних. Каждый дочерний выполняет установленное количество задач и умирает.
     
    1 person likes this.
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Сижу в маил агенте ищу девушку... лазию по мирам и просто бесит когда тебе пишут мол доступ ограничен.... вот теперь доступ не ограничен! хехе

    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>
    Если лень копипастить заходи сюда
     
    _________________________
    #724 Gar|k, 14 Apr 2009
    Last edited: 14 Apr 2009
    afonn likes this.
  5. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Простой хостинг картинок. Очень быстро работает :)
    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;
            }
        }
    }
    ?>
     
    1 person likes this.
  6. Taktik

    Taktik Member

    Joined:
    27 Jun 2008
    Messages:
    27
    Likes Received:
    10
    Reputations:
    5
    Можете скинуть парсер ников для phpBB или IPB?
     
  7. ph1l1ster

    ph1l1ster Elder - Старейшина

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    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;}
     
    #727 ph1l1ster, 20 Apr 2009
    Last edited: 20 Apr 2009
    1 person likes this.
  8. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    Ретрекер демоноида, для забаненых украинцев:
    http://mrthe.name/2009/04/retracker-demonoid/


    да, я пиарю свой блог.
     
  9. ph1l1ster

    ph1l1ster Elder - Старейшина

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    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;}}
     
    1 person likes this.
  10. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    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>
     
  11. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Скрипт для рассылки по контакт листу mail.ru agent. Особо не тестил, ибо нет аккаунтов.

    http://kaimi.ru/wp-content/uploads/2009/04/mrim.rar
     
    _________________________
  12. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    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($proxy0$delimPos);
           
    $port substr($proxy$delimPos+1strlen($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($cpCURLOPT_USERAGENT$useragent);
           
    curl_setopt($cpCURLOPT_RETURNTRANSFER,1);
           
    curl_setopt($cpCURLOPT_CONNECTTIMEOUT,3);
           
    curl_setopt($cpCURLOPT_FOLLOWLOCATION,1);
           
    curl_setopt($cpCURLOPT_SSL_VERIFYPEERfalse);
           
    curl_setopt($cpCURLOPT_SSL_VERIFYHOST2);
                   
    curl_setopt($cpCURLOPT_VERBOSE1);

           
    $cookieFilename "cookies.txt";
                   if(
    substr(PHP_OS03) == 'WIN' && strpos($cookieFilename,"/")===FALSE){
               
    $cookieFilename str_replace('\\','/'getcwd().'/'.$cookieFilename);
           }

           
           
    curl_setopt($cpCURLOPT_COOKIEJAR$cookieFilename);
           
    curl_setopt($cpCURLOPT_COOKIEFILE$cookieFilename);
           
           if(
    $data!=""){
                   
    curl_setopt($cpCURLOPT_POST1);
               
    curl_setopt($cpCURLOPT_POSTFIELDS,$data);
           }
           if(
    $referer!=""){
                   
    curl_setopt($cpCURLOPT_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($cpCURLOPT_PROXY"$ip".":"."$port");
               
    $code curl_exec($cp);        
                           
    $lastURL curl_getinfo($cp,CURLINFO_EFFECTIVE_URL);

               if(
    curl_errno($cp)==&&  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>
               &nbsp;
           </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>
               &nbsp;
           </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");
    }
    ?>
     
    2 people like this.
  13. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Небольшая функция для расшифровки простых обфускаций, например как тут или тут

    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.
     
    _________________________
    #733 Gifts, 21 Apr 2009
    Last edited: 21 Apr 2009
    1 person likes this.
  14. tR1Ck

    tR1Ck Member

    Joined:
    31 Oct 2008
    Messages:
    4
    Likes Received:
    7
    Reputations:
    0
    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 и номер и пароль от аси с которой будет осуществляться отправка сообщений
     
    #734 tR1Ck, 23 Apr 2009
    Last edited: 23 Apr 2009
    5 people like this.
  15. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    "Ыыыы" или просто ОЛоло

    Вообщем на коленке накидал скриптик, дело было достаточно давно, но надо было трансика на вечер, инет у меня медленный вот накидал для скачки музыки с прикольного сайтика, также можно подредактировать под свои нужды.
    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 
    = []
    1

    def DownFile
    (url):
        
    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()
        
    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)
     
    2 people like this.
  16. heretic1990

    heretic1990 Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    Индикация языка ввода будит полезна при вводе пароля, скрипт покажет язык ввода и регистр вводимых букв.

    вставляем это на страницу:

    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);
            }
          });
        });
      };
    
    })();

    Каму надо тот разберётся, кто непонял что это вот ДЕМО
     
    #736 heretic1990, 1 May 2009
    Last edited: 13 May 2009
    2 people like this.
  17. MatriX30000

    MatriX30000 Member

    Joined:
    6 Jan 2009
    Messages:
    41
    Likes Received:
    10
    Reputations:
    0
    ну и как его ставить?
     
  18. heretic1990

    heretic1990 Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    MatriX30000, free.jpg, это не картинка, это скрипт.))
    встави где нибудь его как рисунок и все
     
    1 person likes this.
  19. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    кодируем в UTF-7

    Щас час потратил изобретая велосипед на Си (читая RFC написал свой base64 ы), но так и не получил результата... немного полистав странички гугла...

    PHP:
    <?php
    echo iconv('windows-1251','UTF-7',"</title><script>alert(document.cookie);</script>");
    ?>
    *бьюсь ап стену*

    З.Ы: если не в курсах зачем может понадобится UTF-7 читайте про XSS
     
    _________________________
  20. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    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); 

    ?>