asp.net mvc — расшифровка пароля aspnet_membership через переполнение стека

Я потратил лучшую половину дня, пытаясь выяснить, какая у меня проблема, и, похоже, я зашел в тупик.

У меня есть приложение ASP (нет доступа к реальному коду, только база данных), в котором пароли пользователей хранятся в столбце aspnet_membership> Password, в нем также есть соль.

У меня также есть копия файла ключа компьютера, который, как я понимаю, содержит ключи, необходимые для расшифровки пароля?

 <machineKey validationKey="**validation key**" decryptionKey="**decryption key**" validation="SHA1" decryption="AES"/>

Я пробовал несколько разных способов сделать это, с открытым ssl, с разными библиотеками и т. д. Однако мне кажется, что мне не хватает знаний, когда дело доходит до этого. Я сейчас пытаюсь использовать https://github.com/phpseclib/phpseclib библиотека для расшифровки пароля:

$cipher = new AES(); // could use AES::MODE_CBC
// keys are null-padded to the closest valid size
// longer than the longest key and it's truncated
//$cipher->setKeyLength(128);
$cipher->setKey(**decrypt key**);
// the IV defaults to all-NULLs if not explicitly defined
$cipher->setIV($salt);

echo $cipher->decrypt($password);

Однако, как бы я ни пытался это сделать, я получаю либо случайное возвращение, либо ложное. У меня очень ограниченный объем информации о версии AES, запущенной в приложении ASP, или любая другая информация о шифровании. Любая помощь будет оценена!

1

Решение

Привет Этот MachineKey не имеет ничего общего с Salt, соль генерируется кодом во время выполнения с использованием предоставленного пароля.

.NET Framework с использованием Rfc2898DeriveBytes для шифрования
Что-то вроде этого

using (Rfc2898DeriveBytes rfc2898DeriveByte = new Rfc2898DeriveBytes(password, 16, 1000))
{
salt = rfc2898DeriveByte.Salt;
bytes = rfc2898DeriveByte.GetBytes(32);
}
-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector