谷歌浏览器自动保存密码的解密 您所在的位置:网站首页 谷歌存储密码 谷歌浏览器自动保存密码的解密

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

2023-08-20 22:56| 来源: 网络整理| 查看: 265

起源

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

参考 Chrome 浏览器 Cookies 提取和解密(给了主体代码,用于解密) 如何在谷歌浏览器中恢复保存的密码(提供了补充) 该视频的评论区

第二篇文章提供了一些补充: ① 密码存储的位置是 "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 查看)

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

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

代码

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

#! /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()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有