Где Internet Explorer хранит сохраненные пароли?
Где Internet Explorer хранит сохраненные пароли?
И поскольку это сайт программирования, я не спрашиваю буквально о месте, где IE хранит пароли, , а о том, какой API IE использует для сохранения паролей.
Сначала я предположил, что Microsoft использует стандартный API:
который используется для сохранения домена и общих учетных данных программы/веб-сайта.
CredRead
/CredWrite
затем развернитесь и используйте:
для шифрования данных с текущей учетной записью пользователя. CredRead
/CredWrite
затем сохраняют данные в каком-то волшебном месте, содержимое которого вы можете увидеть из панели управления:
![enter image description here]()
Но я не вижу там пароли IE. Поэтому IE не хранит пароли с использованием CredRead
/CredWrite
.
Какой API использует IE для хранения паролей, и если он использует CryptProtectData
, где он затем сохраняет защищенные данные?
Изменить: Причина, по которой я спрашиваю, не нуждается в объяснении (так как оно довольно очевидно), но это потому, что я мог бы использовать тот же механизм.
Ответы
Ответ 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.