web-dev-qa-db-fra.com

Où Internet Explorer stocke-t-il les mots de passe enregistrés?

Où Internet Explorer stocke-t-il les mots de passe enregistrés?

Et puisque c'est un site de programmation, je ne demande pas littéralement l'emplacement où IE stocke les mots de passe, mais quelle API ie utilise pour enregistrer les mots de passe .

Au début, je supposais que Microsoft utilisait l'API standard:

qui est utilisé pour enregistrer le domaine et les informations d'identification génériques du programme/site Web.

CredRead/CredWrite puis retournez-vous et utilisez:

pour crypter les données avec le compte de l'utilisateur actuel. CredRead/CredWrite puis stockez les données dans un emplacement magique, dont vous pouvez voir le contenu depuis le panneau de configuration:

enter image description here

Mais je ne vois pas IE mots de passe là-dedans. Donc c'est-à-dire ne stocke pas les mots de passe en utilisant CredRead/CredWrite.

Quelle API utilise IE pour stocker les mots de passe et s'il utilise CryptProtectData, où stocke-t-il ensuite les données protégées?


Edit: La raison pour laquelle je demande n'a pas besoin d'explication (car c'est assez évident), mais c'est parce que je pourrais vouloir utiliser le même mécanisme.

18
Ian Boyd

j'ai trouvé la réponse. IE stocke les mots de passe dans deux emplacements différents en fonction du type de mot de passe:

  • Http-Auth: %APPDATA%\Microsoft\Credentials, dans des fichiers cryptés
  • Basé sur un formulaire: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2, chiffré avec l'url

À partir d'un très bonne page sur NirSoft.com :

À partir de la version 7.0 d'Internet Explorer, Microsoft a complètement changé la façon dont les mots de passe sont enregistrés. Dans les versions précédentes (4.0 - 6.0), tous les mots de passe étaient enregistrés dans un emplacement spécial dans le Registre appelé "Stockage protégé". Dans la version 7.0 d'Internet Explorer, les mots de passe sont enregistrés à différents emplacements, selon le type de mot de passe. Chaque type de mot de passe a certaines limites dans la récupération de mot de passe:

  • Mots de passe de saisie semi-automatique: Ces mots de passe sont enregistrés à l'emplacement suivant dans le Registre: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 Les mots de passe sont cryptés avec l'URL des sites Web qui ont demandé les mots de passe et ne peuvent donc être récupérés que si les URL sont stockées dans le fichier historique. Si vous effacez le fichier d'historique, IE PassView ne pourra pas récupérer les mots de passe tant que vous ne visiterez pas à nouveau les sites Web qui ont demandé les mots de passe. Vous pouvez également ajouter une liste d'URL de Sites Web qui nécessitent un nom d'utilisateur/mot de passe dans le fichier des sites Web (voir ci-dessous).

  • Mots de passe d'authentification HTTP: Ces mots de passe sont stockés dans le fichier d'informations d'identification sous Documents and Settings\Application Data\Microsoft\Credentials, ainsi que les mots de passe de connexion des ordinateurs LAN et d'autres mots de passe. En raison de limitations de sécurité, IE PassView ne peut récupérer ces mots de passe que si vous disposez des droits d'administrateur.

Dans mon cas particulier, il répond à la question de savoir où; et j'ai décidé de ne pas reproduire ça. je vais continuer à utiliser CredRead/CredWrite, où l'utilisateur peut gérer ses mots de passe à partir d'un système d'interface utilisateur établi dans Windows.

17
Ian Boyd

Réponse courte: dans le coffre-fort. Depuis Windows 7, un coffre-fort a été créé pour stocker toutes les données sensibles parmi les informations d'identification d'Internet Explorer. Le coffre-fort est en fait un service LocalSystem - vaultsvc.dll.

Réponse longue: Internet Explorer permet deux méthodes de stockage des informations d'identification: les informations d'identification des sites Web (par exemple: votre utilisateur Facebook et votre mot de passe) et les données de saisie semi-automatique. Depuis la version 10, au lieu d'utiliser le Registre, un nouveau terme a été introduit: Windows Vault. Windows Vault est le coffre de stockage par défaut pour les informations du gestionnaire d'informations d'identification.

Vous devez vérifier quel système d'exploitation est en cours d'exécution. Si c'est Windows 8 ou supérieur, vous appelez VaultGetItemW8. Si ce n'est pas le cas, vous appelez VaultGetItemW7.

Pour utiliser le "Vault", vous chargez un DLL nommé "vaultcli.dll" et accédez à ses fonctions si nécessaire.

Un code C++ typique sera:

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);
}

Ensuite, vous énumérez toutes les informations d'identification stockées en appelant

VaultEnumerateVaults

Ensuite, vous passez en revue les résultats.

2
Michael Haephrati

Aucune garantie, mais je soupçonne IE utilise l'ancienne API Stockage protégé .

0
Jerry Coffin