Вчера я задал вопрос о безопасном хешировании, что заставило меня задуматься о том, как на самом деле можно взломать пароль, созданный с помощью специального алгоритма хеширования.Мой текущий (очень небезопасный) сценарий пароля использует итерацию sha1 для пароля, а затем итерацию для хэша, сгенерированного тем, с добавлением трехзначной соли.
$hash = sha1($pass1);
//creates a 3 character sequence
function createSalt()
{
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
}
$salt = createSalt();
$hash = sha1($salt . $hash);
Теперь я, будучи администратором этого сервера и имея полный доступ к исходному коду и таблице паролей, а также инструменты администрирования, могу просто сбросить пароль пользователя на любой, какой я захочу, но радилучше понять безопасность, мне любопытно, как поступить так, как хакер.У меня есть программа под названием cain & abel, которая применяет грубую силу к определенному алгоритму хеширования, но как мне сделать что-то вроде взятия каждого пароля, его преобразования, объединения его в (известную) соль и повторного преобразования этого кода?Кажется, это было бы очень просто сделать, но я никогда не программировал на языке, подобном C ++, и я предполагаю, что это то, что необходимо.
РЕДАКТИРОВАТЬ:
Я должен указать следующее:
Это атака грубой силы в автономном режиме.
У меня есть база данных, полная хэшей и их соответствующих солей.
Соли для каждого пользователя, но я хочу атаковать только пароль одного пользователя за раз.
В частности, я спрашиваю, как перебор пароля с помощью пользовательской серии алгоритмов хеширования,такой как тот, который я показал выше:
псевдокод:
$hash = sha1( 'password' );
$salt = '3Sf';
$hash = sha1( $salt.$hash);
Я предполагаю, что любой метод, который будет использован для этого, также может быть использован для перебора пароля, хешированного с помощью известного алгоритма, такого какas:
$hash = sha1( 'password' );
$salt = '3Sf';
for($i; $i<1000; $i++){
$hash = sha1( $salt.$hash);
}
Так что я специально не спрашиваю, чтобы КОД выполнял первое, я спрашиваю, каким способом я могу запустить программу грубой силы против настроенного алгоритма хеширования, подобного 2, которые я перечислилвыше.
ПРИМЕЧАНИЕ. Я никоим образом не утверждаю, что могу столкнуться с этой ситуацией, но я хотел бы знать, как это делается.