geelaw
18 天前
每个新用户都有自己的 DPAPI 密钥,此密钥平时受用户的密码保护;建立新用户(包括新安装操作系统后建立用户)会生成新密钥;强行修改当前用户的密码(不知道旧密码的情况下)会导致旧密钥无法恢复; DPAPI 密钥可以备份还原,并且可以存在于域控制器中。
Edge 的密码是用 DPAPI 保护的,因此重装系统并且没有加域,即使建立同名账户,即使密码相同,即使把 AppData 里的数据复制过来,旧密码也无法读取。
不清楚 HackBrowserData 是否可以把保存的密码明文读出,理论上来说在原来的用户下当然可以,因为是原来的用户的身份。
用公式表示:
EdgeSaved = Enc(key = user key, plaintext = Web password)
InUserProfile = Enc(key = derived(Windows logon password), plaintext = user key)
每个新用户都对应一个不同的 user key ,所以朴素地重装 + 复制资料的结果是
Copy of EdgeSaved = Enc(key = user key 1, plaintext = Web password)
New InUserProfile = Enc(key = derived(Windows logon password), plaintext = user key 2)
然而要读取保存的密码,需要的是
Enc(key = user key 2, plaintext = Web password)
或者
Enc(key = derived(Windows logon password), plaintext = user key 1)