Хэш от кириллицы в разных кодировках?!

Discussion in 'Криптография, расшифровка хешей' started by -=lebed=-, 7 Nov 2008.

  1. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Вообщем возник вопрос из-за разных кодировок такого плана. Как известно хэш вычисляется от сообщения, т.е на вход подаётся набор байт на самом деле а не набор символов...
    Допустим мы имеем текст пароль он в кодировке 1251 занимает 6 байт. Вычисляем MD5 хэш, получаем: 749789e4982b0c563f6729aac100a614
    Далее мы имеем этот же текст пароль в кодировке UTF8, он уже займёт 12 байт пароль - показано как он выглядит в CP1251
    Вычисленный хэш e242f36f4f95f12966da8fa2efd59992

    Как видим хэши разные (ну это так и должно быть потому как разные байты и разное их количество) а вот пароль-то один "пароль"

    Вопрос такой: от чего будет вычисляться в PHP5 MD5 хэш если на вход подаётся пасс в кириллице в кодировке UTF8?
    от 12-ти? Либо перед вычисление произойдёт преобразование из UTF8 в CP1251 ? и будет посчитан хэш уже от 6 байтов?
     
    #1 -=lebed=-, 7 Nov 2008
    Last edited: 7 Nov 2008
    1 person likes this.
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Эта функция работает с бинарными данными, а не со строками определенных кодировок.
     
  3. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Да что ты говоришь?
    Code:
    Функция md5 в PHP — Возвращает MD5 хэш строки
    Синтаксис
    string md5 (string str [, bool raw_output])
    
    Я знаю как работает функция и даже знаю что такое "так называемые бинарные данные :D " Мне нужен ответ на мой вопрос! Ты вообще его понял?
    PHP:
    <?php
    $str 
    'apple';

    if (
    md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
        echo 
    "Would you like a green or red apple?";
        exit;
    }
    ?>
    Ты мне хочешь сказать, что результат не будет
    зависеть от того как кодирована переменная $str?
     
  4. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    Насколько я знаю, может и ошибаюсь, перед тем как выполняеться md5($string),
    $string->utf8 переводиться автоматом.
     
  5. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Вы уверены что так? Вычислите для проверки хэши от числа в HEX для UTF8 и CP1251, интересно всё же что подаётся на вход байты от 1251 или от UTF8
    И БЕРИТЕ КИРИЛИЦУ! а не латиницу!
    Вот так:
    $STR="Опля!"
    P.S. Тоже мне, сравнили лысую овцу с не постриженной... конечно хэш будет один, потому как в латинице строка в UTF8 та же самая что и в CP1251
    PHP:
    <?php 
    $str 
    'Опля!'
    echo 
    'CP-1251: '.md5($str)."\n"
    echo 
    'UTF-8: '.md5(iconv('windows-1251','utf-8',$str)); 
    ?>
    - проверьте это...

    Ну и...
    Code:
    CP-1251: 332bad7fc1f78b3558316280addda510
    UTF-8: cd025bd5b1f060a279e5785b490e05d0
    
    Так что думайте сами... иметь или не иметь... :D

    Бля, в досовской походу набил по русски, вот правильно:
    Code:
    CP-1251: 53eb707315810a6b5093bc9a79e0fbfe
    UTF-8: 42b2e98b197fd516ef29530fb37ee03f
    
    Смотрим, что даёт PasswordsPro на Опля!
    53eb707315810a6b5093bc9a79e0fbfe

    Что даёт хэшкрэкинг?
    53eb707315810a6b5093bc9a79e0fbfe

    Что passcracking.com?
    - чёт не отвечает... :(
    insidepro.com?
    - К сожелению не поддерживает...
     
    #5 -=lebed=-, 7 Nov 2008
    Last edited: 7 Nov 2008
  6. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    -=lebed=- зацепили вы меня этим вопросом... заинтересовали...будем думать....
     
  7. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    Установки php.ini
     
    1 person likes this.
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Смотрите сами, и потом не говорите что не знали!
    PHP:
    <?php  
    $str 
    'Опля!';  
    $CP1251HEX=bin2hex($str);
    $UTF8HEX=bin2hex(iconv('windows-1251','utf-8',$str));
    echo 
    'CP-1251: '.md5($str)."<br>";
    echo 
    'CP-1251 (hex): '.md5(pack("H*"$CP1251HEX))."<br>";  
    echo 
    'UTF-8: '.md5(iconv('windows-1251','utf-8',$str))."<br>"
    echo 
    'UTF-8 (hex): '.md5(pack("H*"$UTF8HEX))."<br>"
    echo 
    "БИНАРНЫЕ ДАННЫЕ <b>".$CP1251HEX."</b> И <b>".$UTF8HEX."</b> НЕ РАВНЫ ДЛЯ СТРОК КИРИЛЛИЦЫ В РАЗНЫХ КОДИРОВКАХ, ПОЭТОМУ И ХЭШИ РАЗНЫЕ!<br>";
    echo 
    'Нихрена ничего не преобразовывается на автомате (кроме латиницы, потому как коды просто совпадают)!<br>';
    echo 
    'Тайна нерасшифровывающихся хэшей раскрыта! походу это пассы в национальных UT8 с кодировкой в два байта!<br>Вообщем PasswordsPro курит в сторонке, потому как 5-значный пароль достаточно стойкий в нац. символах в кодировке UTF8!<br>';
    echo 
    iconv('utf-8','windows-1251''Нерезус Рё Р“СЂРёРёРЅР±РёСЂ Р›РђРњРћ!');
    ?>
     
    #8 -=lebed=-, 7 Nov 2008
    Last edited: 7 Nov 2008
  9. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    ничего не говорит вышестоящий мой пост?)

    p.s. echo iconv('utf-8','windows-1251', 'Нерезус и Гриинбир ЛАМО!');
    зачетная строчка...)
     
    #9 preda1or, 7 Nov 2008
    Last edited: 7 Nov 2008
  10. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Угу, как лодочку настроишь, так она и поплывёт...
    P.S. Придётся заложить ещё брут нац. символов (кириллица) в кодировке UTF8 в новом движке сервиса - ведь неизвестно как настроен php на конкретном взятом сайте!... соответсвенно хэши могут быть вычисленны от паролей как я описал в примерах выше...
     
    #10 -=lebed=-, 7 Nov 2008
    Last edited: 7 Nov 2008
  11. preda1or

    preda1or Member

    Joined:
    27 Oct 2008
    Messages:
    167
    Likes Received:
    96
    Reputations:
    6
    А что если перебирать по бинарным данным?