Где Internet Explorer хранит сохраненные пароли? - PullRequest
18 голосов
/ 11 июня 2010

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

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

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

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

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

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

enter image description here

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

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


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

Ответы [ 3 ]

17 голосов
/ 11 июня 2010

я нашел ответ. 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 пароли зашифрованы с URL веб-сайтов, которые просили пароли, и, следовательно, они могут быть только восстанавливается, если URL-адреса хранятся в файл истории. Если вы очистите файл истории, IE PassView не будет возможность восстановить пароли до Вы снова посещаете веб-сайты, которые попросил пароли. Кроме того, вы можете добавить список URL-адреса веб-сайтов, которые требуют пользователя имя / пароль в файле веб-сайтов (увидеть ниже).

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

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

2 голосов
/ 30 января 2017

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

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

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

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

Типичный код C ++ будет:

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

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

0 голосов
/ 11 июня 2010

Нет гарантии, но я подозреваю, что IE использует более старую Защищенную систему хранения API.

...