17

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

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

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

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

CredRead/CredWrite затем оборачивается вокруг и использования:

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

enter image description here

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

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


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

ответ

17

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

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

От very good page on NirSoft.com:

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

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

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

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

+0

Можете ли вы получить их, если они находятся на старом жестком диске, сидящем на полке? Не вы, как у вас, а вы в общем смысле. :) – HPWD

+0

@dlackey Концептуально это возможно, если вы знаете свой старый пароль Windows. –

0

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

+1

Вы частично правы. В Internet Explorer 4-6 используется API защищенного хранилища. IE 7-8 хранит пароли в реестре и файл, в зависимости от типа пароля. –

+1

PSAPI давно устарел. IE6 использовал его последним. –

1

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

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

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

Чтобы использовать «хранилище», вы загружаете 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 

Тогда вы идете по результатам.

Смежные вопросы