首页 > 其他分享 >谷歌浏览器自动保存密码的解密

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

时间:2022-12-01 14:33:28浏览次数:64  
标签:存储 浏览器 encrypted 谷歌 解密 value 密码 key

起源

今天看到了这个视频,大致讲的是谷歌自动存储的密码是放在本地的,但是以密文的方式存储,加密方式是 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 查看)

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()

标签:存储,浏览器,encrypted,谷歌,解密,value,密码,key
From: https://www.cnblogs.com/CourserLi/p/16941184.html

相关文章

  • FormData()浏览器内置的对象 不需要引入js 主要用于保存文件 发送给后端
    FormData()浏览器内置的对象它是一个构造函数 不需要引入js文件  概念:1.`FormData`是浏览器提供的内置对象2.以`key/value`的形式保存数据3.能够结合`ajax`......
  • 网站变黑白效果实现兼容ie浏览器
    ​实现的效果:​编辑 1.在公共样式添加:<styletype="text/css">body{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:......
  • 谷歌浏览器历史版本下载
    GoogleChrome谷歌浏览器历史版本下载地址:https://downzen.com/en/windows/google-chrome/versions/ ......
  • JWT和Base64加密,解密
    JWT参考文档http://121.5.151.41/mylesson/Django/%E7%BE%8E%E5%A4%9A%E5%95%86%E5%9F%8E%E9%A1%B9%E7%9B%AE%E8%AF%BE%E4%BB%B6/C02-Users/JWT.html基于token的鉴权......
  • Ubuntu上安装Chrome浏览器
      1、下载Chrome安装包执行命令:wgethttps://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb   2、安装Chrome浏览器执行命令:sud......
  • Google Chrome(谷歌浏览器)安装使用
    谷歌浏览器官网https://www.google.cn/chrome/ Chrome是由Google开发的一款简单便捷的网页浏览工具。谷歌浏览器(GoogleChrome)可以提帮助你快速、安全的搜索到自己需......
  • 使用键盘对浏览器窗口进行操作
    浏览器的快速切换网页的快捷按键为:Ctrl+Tabctrl+5  :切换到第五个浏览器页面window+向下方向键    :  缩小浏览器的窗口 ,按双下向下方向键可以让浏览......
  • chrome跨域浏览器设置
     chrome浏览器图标复制一个,重新命名喜欢的名字新图标右键=》属性  --user-data-dir="c:\ChromeDebug"--test-type--disable-web-security如图在目标地址后面加......
  • chrome谷歌浏览器通过小米路由器无法访问Internet
    这两周打开谷歌游览器莫名其妙的打开网页时,经常跳出被小米路Ax6000由器断网的提示,只有重新打开一次谷歌才恢复正常一会,又会继续抽风一会接二连三的断网中.......经过测试。1......
  • 谷歌授权登录APP (PHP部分)
    在谷歌查看自己的client_id 网址:https://console.cloud.google.com/apis/credentials用composer安装谷歌的扩展包我这里下载的是2.12.1版本 要求 PHP5.6.0......