- 操作环境
- Chrome 浏览器 Version 125.0.6422.112 (Official Build) (64-bit)
- Firefox 浏览器 Version 126.0 (64 位)
- Chrome 浏览器储存密钥原理
- 新的 Chrome 浏览器储存密码的方案是使用 Chrome 生成的 AES 密钥对用户密码进行加密之后储存在 Sqlite 数据库文件中,AES 密钥储存在文件中,Windows 操作系统下 Chrome 会使用 CryptProtectData 函数(Windows API)对密钥进行加密处理,之后再进行 Base64 编码
- 加密编码后的密钥保存在
C:\%USERPROFILE%\Google\Chrome\User Data\Local State
文件中
- Sqlite 文件保存在
C:\%USERPROFILE%\Google\Chrome\User Data\Profile 1\Login Data
和C:\%USERPROFILE%\Google\Chrome\User Data\Default\Login Data
文件中,可以通过SELECT action_url, username_value, password_value FROM logins
语句在这些 Sqlite 数据库中查找出关键信息
- 解密 Chrome 浏览器用户密码步骤
- 先解密出 AES 密钥,Base64 解码之后通过 CryptUnprotectData 函数进行解密,这一步可以通过编写 Python 脚本来完成
- 通过查找 Sqlite 数据库中的关键信息提取出 password_value 值,因为只有这个值被加密
- 通过 AES 密钥对 password_value 值进行解密
- 使用 decrypt_chrome_password.py 脚本自动化此步骤
C:\> git clone https://github.com/ohyicong/decrypt-chrome-passwords.git C:\> pip install pycryptodomex && pip install pywin32 C:\> python3 decrypt_chrome_password.py
- Firefox 浏览器用户密码提取
- Firefox 浏览器使用 Json 文件储存用户密码,文件路径为
Mozilla\Firefox\Profiles\*.default*\logins.json
- 通过 firefox_decrypt.py 脚本自动解密 Firefox 用户密码
C:\> git clone https://github.com/unode/firefox_decrypt.git C:\> python3.9 firefox_decrypt.py
- Firefox 浏览器使用 Json 文件储存用户密码,文件路径为
- 参考
- How To Extract Plaintext Google Chrome Passwords - John Hammond
- https://github.com/ohyicong/decrypt-chrome-passwords.git - ohyicong
- https://github.com/unode/firefox_decrypt.git - unode