Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ответ 006 на задачу N 4
 
 автор: SoftTime   (06.02.2006 в 21:27)   письмо автору
 
 

Ответ 006 на задачу N 4.
С условиями задачи можно ознакомится по ссылке.

<?
// Собираем массив с md5-хешами
$required[] = "ee11cbb19052e40b07aac0ca060c23ee";
$required[] = "dd97813dd40be87559aaefed642c3fbb";
$required[] = "8dbc672497bdc46f88e864bb1121232c";
$required[] = "3e10f8c809242d3a0f94c18e7addb866"
// Этим циклом собираем в массив $symbols все английские буковки
for($i=97$i 123$i++) {
    
$symbols[] = chr($i);
}
for(
$m=0$m count($required); $m++) {
    
// Цикл первый - отвечает за перебор первого символа.
    
for($i=0$i count($symbols); $i++) {
        
$pass[1] = $symbols[$i]; // Задаём первую буковку промежуточного результата.
        
$md5pass md5($pass[1]); // Кодируем промежуточное значение в MD5.
        
if(isset($result[$m])) {break;} // Тормозим цикл, если результат найден, что бы не гонять машину попусту.
        
if($md5pass == $required[$m]) {$result[$m] = $pass[1];} // Проверяем на соответствие.
        // Цикл второй - отвечает за перебор второго символа.
        
for($n=0$n count($symbols); $n++) {
            
$pass[2] = $pass[1].$symbols[$n]; // Присоединяем к промежуточному значению следующий символ.
            
$md5pass md5($pass[2]); // Кодируем промежуточное значение в MD5.
            
if(isset($result[$m])) {break;} // Тормозим цикл, если результат найден, что бы не гонять машину попусту.
            
if($md5pass == $required[$m]) {$result[$m] = $pass[2];} // Проверяем на соответствие.
            // Цикл третий - отвечает за перебор птретьего символа.
            
for($q=0$q count($symbols); $q++) {
                
$pass[3] = $pass[2].$symbols[$q]; // Присоединяем к промежуточному значению следующий символ.
                
$md5pass md5($pass[3]); // Кодируем промежуточное значение в MD5.
                
if(isset($result[$m])) {break;} // Тормозим цикл, если результат найден, что бы не гонять машину попусту.
                
if($md5pass == $required[$m]) {$result[$m] = $pass[3];} // Проверяем на соответствие.
                // Цикл четвёртый - отвечает за перебор четвёртого символа.
                
for($p=0$p count($symbols); $p++) {
                    
$pass[4] = $pass[3].$symbols[$p]; // Присоединяем к промежуточному значению следующий символ.
                    
$md5pass md5($pass[4]); // Кодируем промежуточное значение в MD5.
                    
if($md5pass == $required[$m]) {$result[$m] = $pass[4]; break;} // Проверяем на соответствие и тормозим цикл, если результат найден, что бы не гонять машину попусту.
                
}
            }
        }
    }
    echo (
$m+1).") MD5-хеш: <b>".$required[$m]."</b> Расшифровка: <b>";
    if(isset(
$result[$m])) {
        echo 
$result[$m]."</b><br>";
    } else {
        echo 
"Не расшифровано</b><br>";
    }
}
?>


Результат:
1) MD5-хеш: ee11cbb19052e40b07aac0ca060c23ee Расшифровка: user
2) MD5-хеш: dd97813dd40be87559aaefed642c3fbb Расшифровка: igor
3) MD5-хеш: 8dbc672497bdc46f88e864bb1121232c Расшифровка: lena
4) MD5-хеш: 3e10f8c809242d3a0f94c18e7addb866 Расшифровка: atom

http://www.softtime.ru/info/task.php?id_article=74

   
 
 автор: cheops   (08.02.2006 в 23:35)   письмо автору
 
   для: SoftTime   (06.02.2006 в 21:27)
 

Не понравились вложенные циклы, но хорошо то, что пароли перебираются в куче. Очень хорошо, что символы вынесены в массив $symbols - можно легко расширить диапазон символов.

   
 
 автор: Artem S.   (08.02.2006 в 23:57)   письмо автору
 
   для: SoftTime   (06.02.2006 в 21:27)
 

С первого взгяда выглядит устрашающе. Но с задачей скрипт справляется.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования