Расшифровка Пароля Из Базы Данных
Приветствую!
Как мы все знаем при регистрации все пароли шифруются по какомe-то алгоритму и записываются в базу данных l2db, таблицу user_auth, ячейку password. Тип столбца password - binary(32).
Собственно вопрос: Если у меня есть доступ к базе данных каким образом можно расшифровать эти пароли?
У этого хеша имя имеется? Ну там blowfish или md5?
Насколько я знаю какой-то свой алгоритм.
Самый простой способ узнать - скачать любой скрипт регистрации и посмотреть как пароль приводится к виду, записываемому в базу.
P.S blowfish как раз алгоритм шифрования, он обратим.
$key = array();
$dst = array();
$i = 0;
$nBytes = strlen($str);
while ($i < $nBytes){
$i++;
$key[$i] = ord(substr($str, $i - 1, 1));
$dst[$i] = $key[$i];
}
$rslt = $key[1] + $key[2]*256 + $key[3]*65536 + $key[4]*16777216;
$one = $rslt * 213119 + 2529077;
$one = $one - intval($one/ 4294967296) * 4294967296;
$rslt = $key[5] + $key[6]*256 + $key[7]*65536 + $key[8]*16777216;
$two = $rslt * 213247 + 2529089;
$two = $two - intval($two/ 4294967296) * 4294967296;
$rslt = $key[9] + $key[10]*256 + $key[11]*65536 + $key[12]*16777216;
$three = $rslt * 213203 + 2529589;
$three = $three - intval($three/ 4294967296) * 4294967296;
$rslt = $key[13] + $key[14]*256 + $key[15]*65536 + $key[16]*16777216;
$four = $rslt * 213821 + 2529997;
$four = $four - intval($four/ 4294967296) * 4294967296;
$key[4] = intval($one/16777216);
$key[3] = intval(($one - $key[4] * 16777216) / 65535);
$key[2] = intval(($one - $key[4] * 16777216 - $key[3] * 65536) / 256);
$key[1] = intval(($one - $key[4] * 16777216 - $key[3] * 65536 - $key[2] * 256));
$key[8] = intval($two/16777216);
$key[7] = intval(($two - $key[8] * 16777216) / 65535);
$key[6] = intval(($two - $key[8] * 16777216 - $key[7] * 65536) / 256);
$key[5] = intval(($two - $key[8] * 16777216 - $key[7] * 65536 - $key[6] * 256));
$key[12] = intval($three/16777216);
$key[11] = intval(($three - $key[12] * 16777216) / 65535);
$key[10] = intval(($three - $key[12] * 16777216 - $key[11] * 65536) / 256);
$key[9] = intval(($three - $key[12] * 16777216 - $key[11] * 65536 - $key[10] * 256));
$key[16] = intval($four/16777216);
$key[15] = intval(($four - $key[16] * 16777216) / 65535);
$key[14] = intval(($four - $key[16] * 16777216 - $key[15] * 65536) / 256);
$key[13] = intval(($four - $key[16] * 16777216 - $key[15] * 65536 - $key[14] * 256));
$dst[1] = $dst[1] ^ $key[1];
$i=1;
while ($i<16){
$i++;
$dst[$i] = $dst[$i] ^ $dst[$i-1] ^ $key[$i];
}
$i=0;
while ($i<16){
$i++;
if ($dst[$i] == 0)
{
$dst[$i] = 102;
}
}
$encrypt = "0x";
$i=0;
while ($i<16){
$i++;
if ($dst[$i] < 16){
$encrypt = $encrypt . "0" . dechex($dst[$i]);
}else{
$encrypt = $encrypt . dechex($dst[$i]);
}
}
return $encrypt;
}
Попробую найти ответ на форумах программистов.
Спасибо за ответы.
Если н найдет, то оно и к лучшему мейби...
Reborn my home.
Icq: 6104443
L2J Client full editor, designer.
Chronikus: Если н найдет, то оно и к лучшему мейби...
Cогласен... мало ли кто сюда "случайно" попадет...
На сайте есть админка, по которой можно етот пароль заменить на другой, пока что ет единственный способ можно изменить пасс, а рассшифровка хрен его знает)))
написал один умный админ) ну все админы немного читеры ;)
Расшифровываем хэши
Итак вам в руки каким-либо образом попала база одного из серверов.
Смотрим и ничё не понимаем. Видим примерно следующее:
2 [email protected] 0 e88a10000d355195e2e7228724b29d7e pJQyF
3 [email protected] 1078248493 2b7062a2badf5da2be52d9c107ce78f7 {V3NO
5 [email protected] 1078256517 aa21438827c25c98c2c9737f0c42aad9 ]MD$A
11 [email protected] 1078794630 377d769f3fda84bd950257cd75b4f518 Fs]*2
оО. Что это? А это упёртая с форума база логинов и паролей.
Но где же логины и пароли?! Попробуем разобраться.
Судя по верхней строчке шифрование паролей производилось с солью.
Этот метод разработал какой-то умный дядька. Это нам знать вообще необязательно,
достаточно знать принцип:
берется Хэш от пароля, потом перется хэш от соли, значения складываются и от полученного опять берётся хэш.
Вот такая ж.... штука.
Раскодировать это понятное дело невозможно.
Значит по словарику берём возможные пароли, кодируем по этому принципу и сверяем результат.
Этим и займёмся.
Приводим с помощью подручных средств файл с паролями в следующий вид:
3:[email protected]:1078248493:2b7062a2badf5da2be52d9c107ce78f7:{V3NO
5:[email protected]:1078256517:aa21438827c25c98c2c9737f0c42aad9:]MD$A
11:[email protected]:1078794630:377d769f3fda84bd950257cd75b4f518:Fs]*2
Открываем программку PasswordPro и грузим туда списочек.
Теперь делаем пробный заезд и включаем "Предварительную атаку"
И через 5-10 секунд имеем пасс "220044" от аккаунта под номером 3.
Дальше не долго думая включаем перебор шестизначных цифр и через 20 секунд уже владеем пассом "030487" от номера "5".
Дальнейшее на ваше усмотрение, все варианты атак - дело вашей фантазии.
Пробуйте, экспериментируйте.
Очень рекомендую пройтись по маске дат рождения. Золотое дно.
Такс... Дальше идём на форум который наметили жертвой, регимся, открываем пункт информации о пользователях и тыркаем в любого.
Бла-бла-бла... ага. В адресной строке видим его ID. Подставляем туда например "3". Enter. Так... Юзер "Trew" бла-бла-бла.
Выходим собой и заходим Юзер "Trew" - pass "220044". Вуаля.
Еще у нас мыло юзверя, не факт что пасс подойдёт, но попробовать стоит.
Если подходит, ретрив делаем пасса.
Вот примерный план действий имея базу акк-хэш форума.
Имея пасс-хэш сервера всё гораздо интереснее =)
ВАЖНОЕ ДОПОЛНЕНИЕ:
Если форумная база, то скорее всего это MD5 с солью.
Если база ява-сервера, то MySQL5.
Брутят обычно это md5 берётся словарь у меня он 6 гигов весит собирался 2 года,и брутится некоторые могут не брутится всё зависит от словаря.
Зачем ломать голову если пароли надо сравнивать
1.создаем форму ввода пароля
2.делам функцию сравнения пароля(где берется пароль из формы кодируется в бинарный и сравнивается из базы)
Все а там что надо то иделается.
СПАСИБА)
сравниваются два хэша хэш из базы и хэш из словоря и ищется первое правильное совпадение. И совершенно не важно пароль это пользователя или нет, главное что хэш совпадает, а значит он валидный. Вот поэтому пароли и должны быть не "словарными". Иначе они подбираются мгновенно.




