views:

126

answers:

2

Where does Internet Explorer store saved passwords?

And since this is a programming site, i'm not literally asking for the location where IE stores passwords, but which API ie uses to save passwords.

At first i assumed that Microsoft was using the standard api:

which is used to save domain and generic program/web-site credentials.

CredRead/CredWrite then turn around around and use:

to encrypt data with the current user's account. CredRead/CredWrite then store the data in some magical location, contents of which you can see from the Control Panel:

alt text

But i don't see IE passwords in there. So ie doesn't store passwords using CredRead/CredWrite.

What api does IE use to store passwords, and if it uses CryptProtectData, where does it then store the protected data?


Edit: The reason i ask needs no explanation (since it's pretty obvious), but it's because i might want to use the same mechanism.

A: 

No guarantee, but I suspect IE uses the older Protected Storage API.

Jerry Coffin
You're partially right. Internet Explorer 4-6 uses the Protected Storage API. IE 7-8 store passwords in the registry, and a file, depending on the password type.
Ian Boyd
PSAPI was deprecated a long time ago. IE6 used it last.
jeffamaphone
+5  A: 

i found the answer. IE stores passwords in two different locations based on the password type:

  • Http-Auth: %APPDATA%\Microsoft\Credentials, in encrypted files
  • Form-based: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2, encrypted with the url

From a very good page on NirSoft.com:

Starting from version 7.0 of Internet Explorer, Microsoft completely changed the way that passwords are saved. In previous versions (4.0 - 6.0), all passwords were saved in a special location in the Registry known as the "Protected Storage". In version 7.0 of Internet Explorer, passwords are saved in different locations, depending on the type of password. Each type of passwords has some limitations in password recovery:

  • AutoComplete Passwords: These passwords are saved in the following location in the Registry: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 The passwords are encrypted with the URL of the Web sites that asked for the passwords, and thus they can only be recovered if the URLs are stored in the history file. If you clear the history file, IE PassView won't be able to recover the passwords until you visit again the Web sites that asked for the passwords. Alternatively, you can add a list of URLs of Web sites that requires user name/password into the Web sites file (see below).

  • HTTP Authentication Passwords: These passwords are stored in the Credentials file under Documents and Settings\Application Data\Microsoft\Credentials, together with login passwords of LAN computers and other passwords. Due to security limitations, IE PassView can recover these passwords only if you have administrator rights.

In my particular case it answers the question of where; and i decided i don't want to duplicate that. i'll continue to use CredRead/CredWrite, where the user can manage their passwords from withing an established UI system in Windows.

Ian Boyd