当前位置: 代码迷 >> 综合 >> 关于 macOS keychain 误删与恢复的二三事
  详细解决方案

关于 macOS keychain 误删与恢复的二三事

热度:123   发布时间:2023-09-21 23:10:28.0

起因

Mac 为主力机的我最习以为常的事情就是使用 keychain access 来记录各种密码,比如软件的密码 备份硬盘 印象笔记 ,网页的密码 Safari 密码管理。

可是最近在捣鼓 iOS 越狱开发,需要生成临时证书 Apple Development,随后开始了作死之旅,由于第一次生成的证书不过关,按照给的操作提示,我需要删除证书重新添加。然后我手抽不知道是什么误操作把 keychain 部分清了,没错,就是清了

开始是触摸解锁用不了,我还以为是电脑卡了,后来用 Safari 打开密码管理也用不了,等手动输入密码后发现里面 空空如也
关于 macOS keychain 误删与恢复的二三事
瞬间整个人都不好了,心如死灰,那可是我赖以生存的为数不多的家当啊!
可是人活着总是要干饭的,没办法,尝试挽救

挽救

怎么才能把密码全部找回呢,刚开始上网查找之后
发现 keychain 存放的两个位置分别是 /Library/Keychains//User/$username/Library/Keychains/,凭借经验直接猜测分别对应系统和登陆(用户)选项
关于 macOS keychain 误删与恢复的二三事
因为经常备份,知道 Mac 的时间机器功能,去寻找最近未被修改的两个 Keychain 文件夹,直接群体恢复,第一次没用,然后我又试了第二次,莫名其妙的好了

喜大普奔~!

思考

怕以后还是不小心脑抽删 Keychain,决定找一下更细一点的对应文件

打开 keychain access 软件,翻能不能找到对应存储位置,怎么翻都翻不到
结果随手往 钥匙串 几个选项上一放,DING!它出现了!
关于 macOS keychain 误删与恢复的二三事
关于 macOS keychain 误删与恢复的二三事
这下知道了,对应密码存放文件即为login.keychain-dbSystem.keychain
然后我们开始观察这两个文件所存放的内容,由于我们主要用来存放密码,暂时不太考虑证书之类的东西,手动调整种类为密码
关于 macOS keychain 误删与恢复的二三事
首先是系统密码,我们可以看到里面存放的都是 Wifi 密码,那就下一个登陆密码,由于登陆密码是关联用户账户的,所以我们可以看到很多都是关于用户账户功能的密码,比如 身份识别认证密码重置密钥设备识别,这有可能会涉及到用户登陆的
关于 macOS keychain 误删与恢复的二三事
当然这里面还有的就是设备上安装的软件密码,比如印象笔记Reveal2Docker
关于 macOS keychain 误删与恢复的二三事
最后我们直接查找 Safari 相关,然后看到了比较有趣的名称,继续开始猜测

  • Safari Forms AutoFill Encryption Key:即与自动填充密码相关的密钥
  • Safari History Key:与历史记录相关的密钥
  • Safari Session State Key:与网站链接 Session 状态的密钥
  • “Safari 浏览器”WebCrypto 主密钥:网页加密所用密钥
    关于 macOS keychain 误删与恢复的二三事
    为了印证猜测,去 Safari 存放数据的地方翻一翻,路径:/User/$username/Library/Safari/
    随机选一个文件按一下 Space 快速预览进行判断,比如AutomaticBookmarksBackup.html,就可以看出是书签,可是跟我目前的书签列表有些许出入
    关于 macOS keychain 误删与恢复的二三事
    暂且不管,继续看:
  • AutoFillCorrections.db CloudAutoFillCorrections.db:猜这里就是存放自动填充密码的地方
  • Databases:对应 WebCrypto 加密的 IndexedDB
  • History.db:对应 Safari History key
  • LastSession.plist:对应目前 Safari 所开的标签页
  • LocalStorage:对应 Safari 打开过的网页
  • PerSitePreferences.db:对应每个网站的对应偏好设置

其他的 .plist 文件就暂时不说了

结论

Mac 的时间机器功能真是太棒了,使劲吹~!

为了防止以后这种浏览器密码再次被删修复困难,注意:

  1. 打开 Apple ID 使钥匙串使用 iCloud,这样应该只要一同步就可以恢复
    关于 macOS keychain 误删与恢复的二三事
  2. 多备份,最好每周一次
  3. 就别没事修改钥匙串了
  相关解决方案