ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

PHP Bruteforce Password Generator
  #1  
Старый 31.12.2007, 21:05
Аватар для h0d
h0d
Новичок
Регистрация: 31.12.2007
Сообщений: 3
Провел на форуме:
2242

Репутация: 15
По умолчанию PHP Bruteforce Password Generator

pwdgen.class.php:
PHP код:
<?
/**
 * Password Generator Class

 * @author  hodik
 * @package Classes
 * @subpackage pwdgen
 * @version 1.0
 * @filesource
 */

/**
 * CPasswordGenerator

 * @package Classes
 * @subpackage pwdgen
 */ 
class CPasswordGenerator{
    
/**
     * @desc минимальная длина генерируемого пароля
     * @access private
     */
    
var $_minlen 0;
    
    
/**
     * @desc максимальная длина генерируемого пароля
     * @access private
     */    
    
var $_maxlen 0;
    
    
/**
     * @desc символы, из которых должен состоять пароль
     * @access private
     */
    
var $_alphabet "";
    
    
/**
     * @desc текущий вариант пароля
     * @access private
     */
    
var $_curPwd "";
    
    
/**
     * @desc массив с числами, соответствующими буквам алфавита
     * @access private
     */
    
var $_curPwdAr = array();

    
/**
     * @desc текущая длина пароля
     * @access private
     */
    
var $_curPwdLen 0;
    
    
/**
     * @desc вариант последнего пароля при заданной длине и алфавите
     * @access private
     */
    
var $_lastPwd "";
    
    
/**
     * @desc
     * @access private
     */
    
var $_index 0;
    
    
/**
     * @desc длина алфавита
     * @access private
     */
    
var $_alphaLen 0;

    
/**
     * @desc длина алфавита минус один, чуток ускоряет генерацию
     * @access private
     */    
    
var $_intAlphaLen 0;
    
    
/**
     * Конструктор
     * @access public
     * @param int минимальная длина пароля
     * @param int максимальная длина 
     * @param string алфавит
     * @return void
     */
    
function CPasswordGenerator($minLength$maxLength$alphabet)
    {
        
$this->_minlen      $minLength;
        
$this->_maxlen      $maxLength;
        
$this->_alphabet    $alphabet;
        
$this->_alphaLen    strlen($this->_alphabet);
        
$this->_intAlphaLen $this->_alphaLen 1;
        
        
$this->_init($this->_minlen);
    }
    
    
/**
     * Производит инициализацию
     * @access private
     * @return bool true-успешно, false-неудача
    */
    
function _init($len)
    {
        if (!
strlen($this->_alphabet)) 
        {
            
trigger_error("Alphabet is empty");
            return 
false;
        }
        if(!(
$this->_minlen <= $len && $len <= $this->_maxlen))
        {
            
//trigger_error("Password length isn't correspond for its conditions");
            
return false;
        }
        
        
//генерируем последний вариант пароля
        //и заполняем таблицу для бэктрекинга (backtracking)
        
$this->_curPwdLen $len;
        
$this->_index      0;
        
$this->_curPwdAr  = array();
        
$this->_curPwd    "";
        
$this->_lastPwd   "";
        for(
$i 0$i $len$i++)
        {
            
$this->_lastPwd       .= $this->_alphabet[$this->_alphaLen 1];
            
$this->_curPwd        .= "a"//может стоять любой символ
            
$this->_curPwdAr[$i]   = -1;
        }
        
$this->_curPwdAr[$len] = $this->_alphaLen;
        
        return 
true;
    }
    
    
/**
     * Генерирует пароль
     * @access public
     * @param &string переменная, куда будет записан пароль
     * @return bool true-пароль успешно сгенерирован, false-все варианты исчерпаны
    */
    
function getNext(&$pwd)
    {
        if(
$this->_curPwd == $this->_lastPwd)
        {
            if (!
$this->_init($this->_curPwdLen 1)) return false;
        }
        
        while(
$this->_index >= 0)
        {
            while(
$this->_curPwdAr[$this->_index] < $this->_intAlphaLen)
            {
                
$this->_curPwdAr[$this->_index] += 1;
                
$this->_curPwd[$this->_index]    = $this->_alphabet[$this->_curPwdAr[$this->_index]];
                
$this->_index++;
                
                if(
$this->_index == $this->_curPwdLen)
                {
                    
$pwd $this->_curPwd;
                    return 
true;
                }
            }
            if(
$this->_index != $this->_curPwdLen$this->_curPwdAr[$this->_index] = -1;
            
$this->_index--;
        }
    }
}
?>
пример использования:
PHP код:
<?
include("pwdgen.class.php");
//минимальная длина, максимальная длина, алфавит
$pwdgen = new CPasswordGenerator(13"abcxyz123");
while(
$pwdgen->getNext($pwd))
{
    print 
"$pwd\n";
}
?>
 
Ответить с цитированием

  #2  
Старый 31.12.2007, 21:08
Аватар для bul.666
bul.666
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме:
3986705

Репутация: 1403


Отправить сообщение для bul.666 с помощью ICQ
По умолчанию

Омг... =\ накуя стока лишних букав? Генератор пассов... Мда у людей просто пропало воображение... =\
 
Ответить с цитированием

  #3  
Старый 31.12.2007, 21:15
Аватар для h0d
h0d
Новичок
Регистрация: 31.12.2007
Сообщений: 3
Провел на форуме:
2242

Репутация: 15
По умолчанию

это для меня любимого документация=) тому, кому не нравится, пусть сразу переходят к примерам=)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ