当前位置: 首页>>技术教程>>正文


我的浏览器密码存储在哪里?

,

问题描述

当我们在登录 Web 应用程序后提示浏览器保存凭据时,它们会存储我们相应的用户名和密码。我知道从我的浏览器中恢复这些东西。但我想知道这些密码存储在 Ubuntu 的哪个目录中?

最佳办法

chrome 和 chrome

以三种方式存储密码:

  1. GNOME 密钥环

  2. 钱包 4

  3. 纯文本

Chromium 会根据您的桌面环境自动选择要使用的商店。

存储在 GNOME Keyring 或 KWallet 中的密码在磁盘上加密,对它们的访问由专用守护程序软件控制。以明文形式存储的密码未加密。因此,当使用 GNOME Keyring 或 KWallet 时,之前存储的任何未加密密码都会自动移至加密存储中。

Source for Chromium

谷歌浏览器 ( man google-chrome ) 的手册页显示:

--password-store=<basic|gnome|kwallet>
          Set the password store to use.  The default is to  automatically
          detect  based  on  the  desktop  environment.  basic selects the
          built in,  unencrypted  password  store.   gnome  selects  Gnome
          keyring.  kwallet selects (KDE) KWallet.  (Note that KWallet may
          not work reliably outside KDE.)

Chrome 使用与 Chromium 相同的方法。您可以使用上面的设置切换到明文密码(当然不推荐)。

Chrome(旧版本)

密码存储在 ~/.config/google-chrome/Default/Login\\ Data 中,这是一个 sqlite 数据库文件(该文件已加密)。

这个登录数据库文件是 SQLite 格式,它是流行的 SQL 数据库的轻量级版本。除了登录凭据之外,它还存储其他信息,例如自动完成条目、IE7 登录、搜索关键字等。’logins’ 表是 Chrome 存储所有登录或 sign-on 机密的地方。该表包含以下有趣的字段

Origin_URL - Base URL of the website
Action_URL - Login URL of the website
Username_element - Name of the username field in the website
Username_value - Actual username
Password_element - Name of the password field in the website
Password_value - Encrypted password
Date_created - Date when this entry is stored
Blacklisted_by_user - Set to 1 or 0 based on if website is blacklisted or not.

除密码字段外,所有其他字段均以明文形式输入。所有存储网站的密码都使用三重 DES 算法加密,并以登录用户的密码作为种子。这意味着除非在某些条件下,否则无法跨用户或系统边界解密登录密码。

Source for Microsoft Windows

Firefox

参见 ~/.mozilla/firefox/<profilename>

您的密码存储在 key4.db 和 logins.json 文件中。

Source

次佳办法

Ubuntu 20.10 Chromium 将密码存储在 ~/snap/chromium/common/chromium/Default/Login Data

自从写了答案 Where are my browser passwords stored? 以来,以下两件事发生了变化:

测试这一点的一种简单方法是在您尚未注册的某些网站上创建一个新登录名,例如我选择了 https://www.onlylads.com/

然后,在 Chromium 要求您保存密码并且您同意后,退出 Chromium 以解锁数据库,然后执行以下操作:

sqlite3 ~/snap/chromium/common/chromium/Default/Login\ Data 'SELECT * FROM logins' |
  grep -a onlylads

这现在包含一个类型的条目:

https://www.onlylads.com/join/register/|https://www.onlylads.com/join/register/|new_email|<your-email>|new_password|<encrypted-password-blob>|6KӜYTP||https://www.onlylads.com/|13257819658687161|0|0|0|0||0||||0|0|@|543|13257819641704329|

这确认它存储了一个加密的密码,其他字段是明文。

我们还可以通过以下方式获得相应的模式:

sqlite3 ~/snap/chromium/common/chromium/Default/Login\ Data .schema

这使:

CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE sync_entities_metadata (storage_key INTEGER PRIMARY KEY AUTOINCREMENT, metadata VARCHAR NOT NULL);
CREATE TABLE sync_model_metadata (id INTEGER PRIMARY KEY AUTOINCREMENT, model_metadata VARCHAR NOT NULL);
CREATE TABLE insecure_credentials (parent_id INTEGER REFERENCES logins ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, insecurity_type INTEGER NOT NULL, create_time INTEGER NOT NULL, is_muted INTEGER NOT NULL DEFAULT 0, UNIQUE (parent_id, insecurity_type));
CREATE INDEX foreign_key_index ON insecure_credentials (parent_id);
CREATE TABLE stats (origin_domain VARCHAR NOT NULL, username_value VARCHAR, dismissal_count INTEGER, update_time INTEGER NOT NULL, UNIQUE(origin_domain, username_value));
CREATE INDEX stats_origin ON stats(origin_domain);
CREATE TABLE field_info (form_signature INTEGER NOT NULL, field_signature INTEGER NOT NULL, field_type INTEGER NOT NULL, create_time INTEGER NOT NULL, UNIQUE (form_signature, field_signature));
CREATE INDEX field_info_index ON field_info (form_signature, field_signature);
CREATE TABLE IF NOT EXISTS "logins" (origin_url VARCHAR NOT NULL, action_url VARCHAR, username_element VARCHAR, username_value VARCHAR, password_element VARCHAR, password_value BLOB, submit_element VARCHAR, signon_realm VARCHAR NOT NULL, date_created INTEGER NOT NULL, blacklisted_by_user INTEGER NOT NULL, scheme INTEGER NOT NULL, password_type INTEGER, times_used INTEGER, form_data BLOB, display_name VARCHAR, icon_url VARCHAR, federation_url VARCHAR, skip_zero_click INTEGER, generation_upload_status INTEGER, possible_username_pairs BLOB, id INTEGER PRIMARY KEY AUTOINCREMENT, date_last_used INTEGER NOT NULL DEFAULT 0, moving_blocked_for BLOB, date_password_modified INTEGER NOT NULL DEFAULT 0, UNIQUE (origin_url, username_element, username_value, password_element, signon_realm));
CREATE INDEX logins_signon ON logins (signon_realm);

然后我还观察到在“密码和密钥”下,这是:

seahorse

GNOME 密钥环的 GUI 前端,有一个 Chromium 条目:

这大概包含解密数据库中密码的密钥。

该 GUI 还显示了我从以前的 Chromium 版本遗留下来的所有旧密码,我现在修改了这些密码(然后不得不重置密码数据库,因为我也错误地修改了 Chromium 密钥,但 Google autosync 救了我:-) https://superuser.com/questions/573602/chrome-not-saving-passwords-and-not-auto-filling-existing-login-passwords/1325741#1325741)

这会在登录时自动解锁。

一些有趣的提醒:

  • 您必须使用强大的长密码进行登录,否则获得您的计算机并离线破解您的短密码的攻击者将获得您所有的网站密码

  • 因为 the screen lock does not seem to lock the keyring 一个装备精良的攻击可以窃取你登录的带锁屏的计算机,我认为它可能能够读取 RAM 并解密你的密码

在 Ubuntu 20.10、Chromium 88.0.4324.150 snap 上测试。

GNOME 密钥环可能会回来

今天弹出一个水龙头:file:///snap/chromium/2333/firstrun/password-en.html 说:

\\n

Password storage via the Gnome keyring has been fixed, but for it to work, you have to rename your old ~/snap/chromium/common/chromium/Default/Login Data file so that a new, working one can replace it.

\\n

We suggest you to rename it to Login Data.old. You can do so through your file manager or by opening a terminal and entering

\\n

cd ~/snap/chromium/common/chromium/Default/\\nmv "Login Data" "Login Data.old"\\n

\\n

也许它将允许 Gnome Keyring 再次实际存储所有密码,而不仅仅是一个主加密密钥?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13535.html,未经允许,请勿转载。