Подтвердить что ты не робот

Где Internet Explorer хранит сохраненные пароли?

Где Internet Explorer хранит сохраненные пароли?

И поскольку это сайт программирования, я не спрашиваю буквально о месте, где IE хранит пароли, , а о том, какой API IE использует для сохранения паролей.

Сначала я предположил, что Microsoft использует стандартный API:

который используется для сохранения домена и общих учетных данных программы/веб-сайта.

CredRead/CredWrite затем развернитесь и используйте:

для шифрования данных с текущей учетной записью пользователя. CredRead/CredWrite затем сохраняют данные в каком-то волшебном месте, содержимое которого вы можете увидеть из панели управления:

enter image description here

Но я не вижу там пароли IE. Поэтому IE не хранит пароли с использованием CredRead/CredWrite.

Какой API использует IE для хранения паролей, и если он использует CryptProtectData, где он затем сохраняет защищенные данные?


Изменить: Причина, по которой я спрашиваю, не нуждается в объяснении (так как оно довольно очевидно), но это потому, что я мог бы использовать тот же механизм.

4b9b3361

Ответ 1

Я нашел ответ. IE хранит пароли в двух разных местах в зависимости от типа пароля:

  • Http-Auth: %APPDATA%\Microsoft\Credentials, в зашифрованных файлах
  • На основе форм: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2, зашифрованный с помощью URL

С очень хорошей страницы на NirSoft.com:

Начиная с версии 7.0 интернета Explorer, Microsoft полностью изменилась способ, которым пароли сохраняются. В предыдущие версии (4.0 - 6.0), все пароли были сохранены в специальном место в реестре, известное как "Защищенное хранилище". В версии 7.0 Internet Explorer, пароли сохранены в разных местах, в зависимости от типа пароля. Каждый тип паролей имеет несколько ограничения в восстановлении пароля:

  • Пароли автозаполнения: Эти пароли сохраняются в следующих расположение в реестре: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 The пароли зашифрованы с URL веб-сайтов, которые просили пароли, и, следовательно, они могут быть только восстанавливается, если URL-адреса хранятся в файл истории. Если вы очистите файл истории, IE PassView не будет возможность восстановить пароли до Вы снова посещаете веб-сайты, которые попросил пароли. Кроме того, вы можете добавить список URL-адреса веб-сайтов, которые требуют пользователя имя/пароль в файле веб-сайтов (Смотри ниже).

  • HTTP-аутентификация Пароли: Эти пароли хранятся в файле учетных данных под Documents and Settings\Application Data\Microsoft\Credentials, вместе с логином паролей компьютеров локальной сети и другие пароли. Из-за безопасности ограничения, IE PassView может восстановить эти пароли, только если у вас есть Права администратора.

В моем конкретном случае это отвечает на вопрос, где; и я решил, что не хочу дублировать это. Я продолжу использовать CredRead/CredWrite, где пользователь может управлять своими паролями из установленной системы пользовательского интерфейса в Windows.

Ответ 2

Короткий ответ: в хранилище. Начиная с Windows 7, хранилище было создано для хранения любых конфиденциальных данных среди него учетными данными Internet Explorer. Хранилище фактически является службой LocalSystem - vaultsvc.dll.

Длинный ответ: Internet Explorer позволяет использовать два метода хранения учетных данных: учетные данные веб-сайтов (например: ваш пользователь и пароль Facebook) и данные автозаполнения. Начиная с версии 10, вместо использования реестра был введен новый термин: Windows Vault. Windows Vault является хранилищем хранилища по умолчанию для информации диспетчера учетных данных.

Вам нужно проверить, какая ОС работает. Если его Windows 8 или выше, вы вызываете VaultGetItemW8. Если это не так, вы вызываете VaultGetItemW7.

Чтобы использовать "Vault", вы загружаете DLL с именем "vaultcli.dll" и получаете доступ к ее функциям по мере необходимости.

Типичным кодом С++ будет:

hVaultLib = LoadLibrary(L"vaultcli.dll");

if (hVaultLib != NULL) 
{
    pVaultEnumerateItems = (VaultEnumerateItems)GetProcAddress(hVaultLib, "VaultEnumerateItems");
    pVaultEnumerateVaults = (VaultEnumerateVaults)GetProcAddress(hVaultLib, "VaultEnumerateVaults");
    pVaultFree = (VaultFree)GetProcAddress(hVaultLib, "VaultFree");
    pVaultGetItemW7 = (VaultGetItemW7)GetProcAddress(hVaultLib, "VaultGetItem");
    pVaultGetItemW8 = (VaultGetItemW8)GetProcAddress(hVaultLib, "VaultGetItem");
    pVaultOpenVault = (VaultOpenVault)GetProcAddress(hVaultLib, "VaultOpenVault");
    pVaultCloseVault = (VaultCloseVault)GetProcAddress(hVaultLib, "VaultCloseVault");

    bStatus = (pVaultEnumerateVaults != NULL)
        && (pVaultFree != NULL)
        && (pVaultGetItemW7 != NULL)
        && (pVaultGetItemW8 != NULL)
        && (pVaultOpenVault != NULL)
        && (pVaultCloseVault != NULL)
        && (pVaultEnumerateItems != NULL);
}

Затем вы перечисляете все сохраненные учетные данные, вызывая

VaultEnumerateVaults

Затем вы переходите к результатам.

Ответ 3

Нет гарантии, но я подозреваю, что IE использует более старый Protected Storage API.