Onde é que o Internet Explorer guarda senhas gravadas?

Onde é que a Loja do Internet Explorer guardou as senhas?

e como este é um site de programação, não estou literalmente a pedir o local onde o IE armazena senhas, mas que API ie usa para salvar senhas .

inicialmente, assumi que a Microsoft estava a usar a api normal:

que é usado para salvar o domínio e programa Genérico / sítio web credencial.

CredRead/CredWrite em seguida, vire - se e use:

para cifrar os dados com a conta do utilizador actual. CredRead/CredWrite em seguida, armazenar os dados em algum local mágico, cujo conteúdo você pode ver a partir do Painel De Controle:

enter image description here

Mas não vejo palavras-passe aí. Então o ie não guarda senhas usando CredRead/CredWrite.

O que a api faz IE usar para guardar as senhas e, se usar CryptProtectData, onde guarda então os dados protegidos?


Edit: a razão pela qual eu pergunto não precisa de explicação (uma vez que é bastante óbvio), mas é porque eu posso querer usar o mesmo mecanismo.

Author: Ian Boyd, 2010-06-11

3 answers

Encontrei a resposta. O IE guarda senhas em dois locais diferentes, com base no tipo de senha:
  • Http-Auth: %APPDATA%\Microsoft\Credentials, em ficheiros encriptados
  • À Base de formulários: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2, encriptado com o url

De uma página muito boa sobre NirSoft.com:

A partir da versão 7.0 da Internet Explorer, a Microsoft mudou completamente a forma como as senhas são guardadas. Em versões anteriores (4.0-6.0), todas senha foram salvos em um especial localização no Registo conhecido como "Armazenamento Protegido". Na versão 7.0 de Internet Explorer, senhas são gravado em locais diferentes, dependendo do tipo de senha. Cada tipo de senhas tem algumas limitações na recuperação de senha:
  • Completar Automaticamente As Senhas: Estas as senhas são gravadas no seguinte localização no Registo: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 a as senhas são encriptadas com o URL dos sites que pediram pela passwords, e assim eles só podem ser recuperado se os URLs são armazenados em o ficheiro de história. Se você limpar o ficheiro de histórico, IE PassView não será capaz de recuperar as senhas até você visita novamente os sites que pedi as senhas. Alternativamente, você pode adicionar uma lista de URLs de sites Web que requerem o utilizador nome/senha no ficheiro de páginas Web (abaixar).

  • Autenticação de HTTP Senhas: {[12] } estas senhas são guardadas em o ficheiro de credenciais em Documents and Settings\Application Data\Microsoft\Credentials, juntos com senhas de login dos computadores LAN e outras senhas. Devido à segurança limitações, IE PassView pode recuperar estas senhas só se tiver administrador.

No meu caso específico, responde à questão de onde, e decidi que não quero duplicar isso. vou continuar a usar CredRead/CredWrite, onde o usuário pode gerenciar suas senhas de dentro de um sistema UI estabelecido no Windows.
 17
Author: Ian Boyd, 2010-12-28 15:07:05

Resposta Curta: no cofre. Desde o Windows 7, um cofre foi criado para armazenar quaisquer dados sensíveis entre ele as credenciais do Internet Explorer. O cofre é, de facto, um sistema local - vaultsvc.dll.

Resposta longa: O Internet Explorer permite dois métodos de armazenamento de credenciais: credenciais de sites (por exemplo: seu usuário do Facebook e senha) e dados autocompletados. Desde a versão 10, em vez de usar o Registro um novo termo foi introduzido: Windows Abobada. O Windows Vault é o cofre de armazenamento padrão para a informação do Gestor de credenciais.

Tens de verificar qual o SO está a correr. Se o seu Windows for igual ou superior a 8, ligue para VaultGetItemW8. Se não for, ligue para VaultGetItemW7.

Para usar o "cofre", carrega um DLL chamado "vaultcli".DLL " e acesse suas funções conforme necessário.

Um código C++ típico será:

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

Então você enumera todas as credenciais armazenadas chamando

VaultEnumerateVaults
Então vai tu. sobre os resultados.
 2
Author: Michael Haephrati, 2017-01-29 21:34:18

Sem garantia, mas suspeito que usa a API de armazenamento protegido mais antiga.

 0
Author: Jerry Coffin, 2010-06-11 15:51:51