2010-06-11 21 views
17

Dove memorizza le password salvate in Internet Explorer?Dove memorizza le password salvate da Internet Explorer?

E poiché questo è un sito di programmazione, non sto letteralmente chiedendo il luogo in cui IE memorizza le password, ma quale API utilizza per salvare le password.

In un primo momento ho pensato che Microsoft stava usando l'API standard:

che viene utilizzato per salvare dominio e credenziali di programma/sito web generici.

CredRead/CredWrite poi girarsi intorno ed impiego:

Per crittografare i dati con l'account dell'utente corrente. CredRead/CredWrite poi memorizzare i dati in qualche luogo magico, il contenuto dei quali si può vedere dal pannello di controllo:

enter image description here

Ma non vedo le password di IE in là. Quindi, ad esempio, non memorizza le password utilizzando CredRead/CredWrite.

Che API utilizza per memorizzare le password e se utilizza CryptProtectData, dove memorizza i dati protetti?


Edit: Il motivo che mi chiedo bisogno di spiegazioni (in quanto è abbastanza evidente), ma è perché potrei desiderare di utilizzare lo stesso meccanismo.

risposta

17

ho trovato la risposta. IE memorizza le password in due posizioni diverse in base al tipo di password:

  • Http-Auth:%APPDATA%\Microsoft\Credentials, in file crittografati
  • modulo basato-:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2, criptato con l'url

da very good page on NirSoft.com:

A partire da v versione 7.0 di Internet Explorer, Microsoft ha completamente modificato il modo in cui vengono salvate le password. Nelle versioni precedenti (4.0 - 6.0), tutte le password sono state salvate in una posizione speciale nel Registro denominata "Storage protetto" . Nella versione 7.0 di Internet Explorer, le password sono salvate in posizioni diverse, a seconda del tipo di password. Ogni tipo di password ha alcune limitazioni in recupero password:

  • di completamento automatico delle password: Questi le password vengono salvati nella posizione seguente nel Registro di sistema: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 I password sono criptate con l'URL dei siti Web che richiedevano le password e quindi possono essere ripristinati solo se vengono archiviati nel file di cronologia nello . Se si cancella il file di cronologia , IE PassView non sarà in grado di recuperare le password fino a si visitano nuovamente i siti Web che hanno richiesto le password . In alternativa, è possibile aggiungere un elenco di URL di siti Web che richiedono nome utente/password nel file di siti Web (vedere di seguito).

  • autenticazione HTTP password: Queste password sono memorizzati nelle credenziali file con Documents and Settings\Application Data\Microsoft\Credentials, insieme con password di accesso di computer della LAN e altre password. A causa delle limitazioni di sicurezza , IE PassView può recuperare queste password solo se si dispone dei diritti di amministratore .

Nel mio caso particolare, risponde alla domanda di dove; e ho deciso di non volerlo duplicare. Continuerò a utilizzare CredRead/CredWrite, in cui l'utente può gestire le proprie password da un sistema di interfaccia utente stabilito in Windows.

+0

Puoi recuperarli se sono su un vecchio disco fisso seduto sullo scaffale? Non voi come in TE ma in senso generale. :) – HPWD

+0

@dlackey Concettualmente è possibile, purché si conosca la vecchia password di Windows. –

0

Nessuna garanzia, ma sospetto che IE utilizzi l'API Protected Storage precedente.

+1

Hai parzialmente ragione. Internet Explorer 4-6 utilizza l'API di archiviazione protetta. IE 7-8 memorizzano le password nel registro e un file, a seconda del tipo di password. –

+1

PSAPI è stato ritirato molto tempo fa. IE6 l'ha usato per ultimo. –

1

Risposta breve: nel Vault. Da Windows 7, è stato creato un Vault per archiviare dati sensibili tra cui le credenziali di Internet Explorer. Il Vault è in realtà un servizio LocalSystem - vaultsvc.dll.

Risposta lunga: Internet Explorer consente due metodi di archiviazione delle credenziali: siti web credenziali (ad esempio: il vostro utente di Facebook e password) e dati di completamento automatico. Dalla versione 10, anziché utilizzare il Registro, è stato introdotto un nuovo termine: Windows Vault. Windows Vault è il vault di archiviazione predefinito per le informazioni del gestore delle credenziali.

È necessario verificare quale sistema operativo è in esecuzione. Se Windows 8 o versione successiva, si chiama VaultGetItemW8. Se non lo è, chiami VaultGetItemW7.

Per utilizzare il "Vault", si carica una DLL denominata "vaultcli.dll" e si accede alle sue funzioni in base alle esigenze.

Un tipico codice C++ sarà:

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

Poi si enumerare tutte le credenziali memorizzate chiamando

VaultEnumerateVaults 

Poi si va oltre i risultati.