筱团Blog筱团のBlog

谷歌浏览器自动保存密码的解密

筱团·2022-12-01 14:30·5184 次阅读

谷歌浏览器自动保存密码的解密

起源#

今天看到了这个视频,大致讲的是谷歌自动存储的密码是放在本地的,但是以密文的方式存储,加密方式是 AES-256 in GCM mode,但是密钥也存储在本地,也就是说可以手动完成解密(虽然没什么用),对于学过一点点密码学的人,还是比较感兴趣的

参考#

第二篇文章提供了一些补充:
① 密码存储的位置是 "C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Default\Login Data",实际上它是一个数据库文件
② 密钥存储的位置是 "C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Local State",其内容的 encrypted_key 就是密钥
③ 这个数据库文件的类型是 sqlite,表中的属性如下(可用 Navicat Premium 查看)

Copy
origin_url - 网站的主要链接 action_url - 网站的登录链接 username_element - 网站中用户名字段的名称 username_value - 用于登录的用户名 password_element - 网站中密码字段的名称 password_value - 用于登录的密码(加密) date_created - 存储日期 times_used - 使用此密码的次数 blacklisted_by_user - 设置为 1 意味着永远不会存储密码

评论区也对视频进行了一些补充:
① 如果黑客要使用脚本进行破解,必然要有权限(因为文件放在APPData文件夹下),但如果有权限,那说明电脑本身是不安全的,那也就没必要只关注谷歌浏览器的密码了,因为整个电脑都已经被黑客操控了
② GitHub 代码库的私钥,包括很多隐私数据同样是存储在电脑中
③ 如果需要二次保护,可以用 1Password 等软件包含密码

代码#

我用的是 Python 实现,主要参考了这篇文章的代码

Copy
#! /usr/bin/env python # -*- coding: UTF-8 -*- # @Author: Xiaotuan import sqlite3 import base64 import win32crypt from Cryptodome.Cipher import AES encrypted_key = b"RFBBUEkBxxxxxx" # 密钥 encrypted_key = base64.b64decode(encrypted_key) # base64 解密 encrypted_key = encrypted_key[5:] # 去掉象征意义的符号 DPAPI decrypted_key = win32crypt.CryptUnprotectData(encrypted_key, None, None, None,0)[1] # CryptProtectData 是 Windows 的一种加密方式 # 至此才是真正的密钥,32 位 con = sqlite3.connect("chrome") # 连接 sqlite 数据库文件 cur = con.cursor() cursor = cur.execute( "SELECT id, origin_url, username_value, password_value from logins" ) # 获取表中属性的数据 for row in cursor: print("ID = ", row[0]) print("origin_url = ", row[1]) # 网站的主要链接 print("username_value = ", row[2]) # 用于登录的用户名 data = row[3] nonce = data[3:3 + 12] ciphertext = data[3 + 12:-16] tag = data[-16:] cipher = AES.new(decrypted_key, AES.MODE_GCM, nonce=nonce) # AES-256 in GCM mode plaintext = cipher.decrypt_and_verify(ciphertext, tag) print("password_value = ", plaintext.decode('utf-8'), "\n") # 用于登录的密码 print("数据操作成功") con.close()
posted @   筱团  阅读(5184)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示
目录