Где хранятся пароли моего браузера?
Когда мы приглашаем наш браузер сохранить учетные данные после входа в веб-приложение, они сохраняют наше соответствующее имя пользователя и пароль. Я знаю, чтобы восстановить эти вещи из моего браузера. Но я хочу знать, в каком каталоге в Ubuntu хранятся эти пароли?
2 ответа
Хром и хром
Хранить пароли можно тремя способами:
- GNOME Keyring
- KWallet 4
- простой текст
Chromium выбирает, какой магазин использовать автоматически, в зависимости от среды вашего рабочего стола.
Пароли, хранящиеся в GNOME Keyring или KWallet, зашифрованы на диске, и доступ к ним контролируется специальным программным обеспечением демона. Пароли, хранящиеся в виде простого текста, не шифруются. Из-за этого, когда используется GNOME Keyring или KWallet, все незашифрованные пароли, которые были сохранены ранее, автоматически перемещаются в зашифрованное хранилище.
Страница руководства для Google Chrome (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, ключевые слова для поиска и т. Д. В таблице "входы в систему" хранятся все секреты входа и входа в систему, которые хранятся в Chrome. Эта таблица содержит следующие интересные поля
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.
За исключением поля пароля все остальные поля вводятся в виде открытого текста. Пароль для всех сохраненных веб-сайтов зашифрован с использованием алгоритма Triple DES, засеянного паролем зарегистрированного пользователя. Это означает, что секреты входа в систему не могут быть расшифрованы через границы пользователя или системы, если только при определенных условиях.
Fire Fox
Увидеть ~/.mozilla/firefox/<profilename>
Файлы, которые вы ищете signons.sqlite
, которая является базой данных с паролями, и key3.db
, где хранятся мастер-пароли и ключи шифрования.
Оба файла зашифрованы. Для просмотра паролей вам необходимо использовать браузер.
Ubuntu 20.10 Chromium хранит пароли в
~/snap/chromium/common/chromium/Default/Login Data
Следующие две вещи изменились с момента ответа Где хранятся пароли моего браузера?было написано:
- как указал Руджеро Турра , они, по-видимому, вернулись от набора ключей GNOME к пользовательской базе данных SQLite, как было объявлено по адресу: https://chromium.googlesource.com/chromium/src/+/master/docs/security/faq.md# . Хранит ли-менеджер-паролей-мои-пароли-зашифрованные-на-диске
- Chromium теперь является оснасткой по умолчанию, поэтому профиль по умолчанию теперь находится на
~/snap/chromium/common/chromium/Default/
а не старый~/.config/chromium
Один из простых способов проверить это — создать новый логин на каком-нибудь веб-сайте, на котором вы не регистрировались, например, я выбрал 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
Интерфейс GUI для связки ключей GNOME, что есть запись Chromium:
который предположительно содержит ключ для расшифровки паролей в базе данных.
Этот графический интерфейс также показал все мои старые пароли, оставшиеся от предыдущих версий Chromium, которые я теперь удалил (а затем мне пришлось сбросить базу паролей, потому что я также по ошибке удалил ключ Chromium, но автосинхронизация Google спасла меня :-) https://superuser.com/questions/573602/chrome-not-saving-passwords-and-not-auto-filling-existing-login-passwords/1325741#1325741 )
Это автоматически разблокируется во время входа в систему.
Несколько интересных напоминаний:
- вы должны использовать надежную длинную парольную фразу для входа в систему, иначе злоумышленник, который получит ваш компьютер и взломает ваш короткий пароль в автономном режиме, получит все пароли вашего веб-сайта.
- поскольку блокировка экрана, похоже, не блокирует связку ключей , хорошо оснащенная атака, которая крадет ваш компьютер, вошедший в систему, с экраном блокировки, может быть в состоянии прочитать ОЗУ и расшифровать ваши пароли, я думаю
Протестировано на Ubuntu 20.10, оснастке Chromium 88.0.4324.150.