抓取chrome所有版本密码

文章首发先知社区:https://xz.aliyun.com/t/9752

工具已上传到github:https://github.com/SD-XD/Catch-Browser

谷歌浏览器存储密码的方式

在使用谷歌浏览器时,如果我们输入某个网站的账号密码,他会自动问我们是否要保存密码,以便下次登录的时候自动填写账号和密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
请添加图片描述

在设置中可以找到登录账户和密码

请添加图片描述

也可以直接看密码,不过需要凭证

请添加图片描述

这其实是windows的DPAPI机制

DPAPI

Data Protection Application Programming Interface(数据保护API)

DPAPI是Windows系统级对数据进行加解密的一种接口无需自实现加解密代码微软已经提供了经过验证的高质量加解密算法提供了用户态的接口对密钥的推导存储数据加解密实现透明并提供较高的安全保证

DPAPI提供了两个用户态接口CryptProtectData加密数据CryptUnprotectData解密数据加密后的数据由应用程序负责安全存储应用无需解析加密后的数据格式。但是加密后的数据存储需要一定的机制因为该数据可以被其他任何进程用来解密当然CryptProtectData也提供了用户输入额外数据来参与对用户数据进行加密的参数但依然无法放于暴力破解。

微软提供了两个接口用来加密和解密,CryptProtectMemoryCryptUnprotectMemory

实际上,在老版本(80之前)的谷歌浏览器,仅仅是使用了CryptProtectMemory来对密码进行加密

80版本之前的Chrome

实验环境

  • win7
  • Chrome版本 79.0.3945.117

实验过程

chrome的密码经过加密后存储在

%LocalAppData%\Google\Chrome\User Data\Default\Login Data

如果用二进制文本编辑器查看的化会发现他其实是一个sqlite数据库文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VzBU6xnN-1646719749639)(/img/CatchChrome/4.png)]
请添加图片描述

可以使用工具SQLiteStudio打开他

双击logins

请添加图片描述

选择data
请添加图片描述

可以看到有用户名和网址,却没有密码

但是密码的二进制实际是有值的

在这里插入图片描述

编写脚本解密

python的解密是最简洁的,这里送上一个三好学生的代码

from os import getenv
import sqlite3
import win32crypt
import binascii
conn =
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
由于阿里网盘需要登录才能进行访问,因此需要使用模拟登录的方式进行抓取。以下是使用Python的requests库和BeautifulSoup库进行抓取的示例代码: ```python import requests from bs4 import BeautifulSoup # 模拟登录 session = requests.Session() login_url = "https://auth.aliyundrive.com/v2/oauth/login" data = { "account": "your_account", "password": "your_password", "appName": "aliyun_drive", "lang": "zh_CN", "fromSite": "aliyun_drive", "csrf_token": "token", } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Referer": "https://www.aliyundrive.com/drive/home", } response = session.post(login_url, data=data, headers=headers) # 获取目录层级结构 dir_url = "https://www.aliyundrive.com/drive/folder/list" params = { "driveId": "drive_id", "fileId": "file_id", "urlExpireSec": 3600, "pageSize": 100, "fields": "*", "orderBy": "name", "orderDirection": "ASC", } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Referer": "https://www.aliyundrive.com/drive/home", } response = session.get(dir_url, params=params, headers=headers) soup = BeautifulSoup(response.text, "html.parser") level_list = soup.select('.ant-breadcrumb-link') # 输出目录层级结构 for level in level_list: print(level.text.strip()) ``` 需要将代码中的`your_account`、`your_password`、`token`、`drive_id`和`file_id`替换为实际的值。其中,`your_account`和`your_password`是阿里云账号的用户名和密码,`token`是登录时获取的csrf_token,`drive_id`和`file_id`是需要获取目录层级结构的文件夹的ID。可以在阿里网盘中打开该文件夹,然后查看URL中的`driveId`和`fileId`参数来获取它们的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值