起因
以 Mac
为主力机的我最习以为常的事情就是使用 keychain access
来记录各种密码,比如软件的密码 备份硬盘
印象笔记
,网页的密码 Safari
密码管理。
可是最近在捣鼓 iOS
越狱开发,需要生成临时证书 Apple Development
,随后开始了作死之旅,由于第一次生成的证书不过关,按照给的操作提示,我需要删除证书重新添加。然后我手抽不知道是什么误操作把 keychain
部分清了,没错,就是清了
开始是触摸解锁用不了,我还以为是电脑卡了,后来用 Safari
打开密码管理也用不了,等手动输入密码后发现里面 空空如也
瞬间整个人都不好了,心如死灰,那可是我赖以生存的为数不多的家当啊!
可是人活着总是要干饭的,没办法,尝试挽救
挽救
怎么才能把密码全部找回呢,刚开始上网查找之后
发现 keychain
存放的两个位置分别是 /Library/Keychains/
和 /User/$username/Library/Keychains/
,凭借经验直接猜测分别对应系统和登陆(用户)选项
因为经常备份,知道 Mac
的时间机器功能,去寻找最近未被修改的两个 Keychain
文件夹,直接群体恢复,第一次没用,然后我又试了第二次,莫名其妙的好了
喜大普奔~!
思考
怕以后还是不小心脑抽删 Keychain
,决定找一下更细一点的对应文件
打开 keychain access
软件,翻能不能找到对应存储位置,怎么翻都翻不到
结果随手往 钥匙串 几个选项上一放,DING!它出现了!
这下知道了,对应密码存放文件即为login.keychain-db
和 System.keychain
然后我们开始观察这两个文件所存放的内容,由于我们主要用来存放密码,暂时不太考虑证书之类的东西,手动调整种类为密码
首先是系统密码,我们可以看到里面存放的都是 Wifi
密码,那就下一个登陆密码,由于登陆密码是关联用户账户的,所以我们可以看到很多都是关于用户账户功能的密码,比如 身份识别认证
,密码重置密钥
,设备识别
,这有可能会涉及到用户登陆的
当然这里面还有的就是设备上安装的软件密码,比如印象笔记
,Reveal2
,Docker
最后我们直接查找 Safari
相关,然后看到了比较有趣的名称,继续开始猜测
Safari Forms AutoFill Encryption Key
:即与自动填充密码相关的密钥Safari History Key
:与历史记录相关的密钥Safari Session State Key
:与网站链接Session
状态的密钥“Safari 浏览器”WebCrypto 主密钥
:网页加密所用密钥
为了印证猜测,去Safari
存放数据的地方翻一翻,路径:/User/$username/Library/Safari/
随机选一个文件按一下Space
快速预览进行判断,比如AutomaticBookmarksBackup.html
,就可以看出是书签,可是跟我目前的书签列表有些许出入
暂且不管,继续看:AutoFillCorrections.db
CloudAutoFillCorrections.db
:猜这里就是存放自动填充密码的地方Databases
:对应WebCrypto
加密的IndexedDB
History.db
:对应Safari History key
LastSession.plist
:对应目前Safari
所开的标签页LocalStorage
:对应Safari
打开过的网页PerSitePreferences.db
:对应每个网站的对应偏好设置
其他的 .plist
文件就暂时不说了
结论
Mac
的时间机器功能真是太棒了,使劲吹~!
为了防止以后这种浏览器密码再次被删修复困难,注意:
- 打开
Apple ID
使钥匙串使用iCloud
,这样应该只要一同步就可以恢复
- 多备份,最好每周一次
- 就别没事修改钥匙串了