Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Internet Explorer在哪里存储保存的密码?_Security_Internet Explorer_Passwords_Password Protection - Fatal编程技术网

Security Internet Explorer在哪里存储保存的密码?

Security Internet Explorer在哪里存储保存的密码?,security,internet-explorer,passwords,password-protection,Security,Internet Explorer,Passwords,Password Protection,Internet Explorer在哪里存储保存的密码 由于这是一个编程网站,我不是问IE存储密码的位置,而是问IE使用哪个API保存密码 起初,我假设Microsoft使用的是标准api: 用于保存域和通用程序/网站凭据 CredRead/CredWrite然后转身使用: 使用当前用户的帐户加密数据CredRead/CredWrite然后将数据存储在某个神奇的位置,您可以从控制面板看到其中的内容: 但我在里面没看到IE密码。因此IE不会使用CredRead/CredWrite

Internet Explorer在哪里存储保存的密码

由于这是一个编程网站,我不是问IE存储密码的位置,而是问IE使用哪个API保存密码

起初,我假设Microsoft使用的是标准api:

用于保存域和通用程序/网站凭据

CredRead
/
CredWrite
然后转身使用:

使用当前用户的帐户加密数据
CredRead
/
CredWrite
然后将数据存储在某个神奇的位置,您可以从控制面板看到其中的内容:

但我在里面没看到IE密码。因此IE不会使用
CredRead
/
CredWrite
存储密码

IE使用什么API来存储密码,如果它使用
CryptProtectData
,那么它在哪里存储受保护的数据



编辑:我问的原因不需要解释(因为这很明显),但这是因为我可能想使用相同的机制。

不保证,但我怀疑IE使用的是较旧的API。

我找到了答案。IE根据密码类型将密码存储在两个不同的位置:

  • Http验证:
    %APPDATA%\Microsoft\Credentials
    ,在加密文件中
  • 基于表单:
    HKEY\U CURRENT\U USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
    ,使用url加密
从a:

从Internet 7.0版开始 浏览器,微软完全改变了 保存密码的方式。在里面 以前的版本(4.0-6.0),所有 密码保存在一个特殊的文件夹中 在注册表中的位置,称为 “受保护的存储”。在7.0版中 对于Internet Explorer,密码是 保存在不同的位置, 取决于密码的类型。 每种类型的密码都有一些 密码恢复中的限制:

  • 自动完成密码:这些 密码保存在以下位置: 在注册表中的位置:
    HKEY\U当前用户\软件\微软\互联网
    Explorer\IntelliForms\Storage2
    密码是用URL加密的 请求 密码,因此它们只能是 如果URL存储在中,则已恢复 历史文件。如果你清除了 历史记录文件,即PassView不会被删除 能够恢复密码,直到 您再次访问 询问密码。 或者,您可以添加以下内容的列表: 需要用户权限的网站的URL 将名称/密码输入网站文件 (见下文)

  • HTTP身份验证 密码:存储这些密码 在下面的凭据文件中
    文档和设置\应用程序
    Data\Microsoft\Credentials
    ,一起 使用局域网计算机的登录密码 和其他密码。由于安全原因 限制,即PassView可以恢复 这些密码只有在您有 管理员权限


在我的特殊情况下,它回答了在哪里的问题;我决定我不想重复这一点。我将继续使用
CredRead
/
CredWrite
,用户可以从Windows中已建立的UI系统中管理密码。

简短回答:。自Windows 7以来,创建了一个Vault,用于存储其中的任何敏感数据,即Internet Explorer的凭据。 Vault实际上是一个LocalSystem服务-vaultsvc.dll

长答案: Internet Explorer允许两种凭据存储方法:网站凭据(例如:您的Facebook用户和密码)和自动完成数据。从版本10开始,引入了一个新术语:Windows Vault,而不是使用注册表。Windows Vault是凭据管理器信息的默认存储Vault

您需要检查哪个操作系统正在运行。如果是Windows 8或更高版本,则调用VaultGetItemW8。如果不是,则调用VaultGetItemW7

要使用“Vault”,请加载名为“vaultcli.DLL”的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

然后你检查结果

你部分是对的。Internet Explorer 4-6使用受保护的存储API。IE 7-8根据密码类型将密码存储在注册表和文件中。PSAPI早就被弃用了。IE6上次用过。如果它们在架子上的旧硬盘上,你能取回它们吗?不是你自己,而是一般意义上的你。:)@dlackey从概念上讲这是可能的,只要您知道旧的Windows密码。