Pull to refresh

Анатомия Огненного лиса

Reading time5 min
Views14K
Захотел мой друг установить себе FireFox. И не просто установить, а так чтобы было «как у тебя». У FireFox есть встроенный инструмент, для публикации списка установленных дополнении. Я тут же им воспользовался и опубликовал свои дополнения. Но так как друг человек к ИТ не сильно близкий, хотя такой же ленивый, то куда-то там заходить, скачивать, устанавливать, настраивать ему совсем не хотелось. Говорит «зачем все это, у тебя же все на флешке, просто скопируй мне».

Пришлось призадуматься: просто скопировать нельзя, кроме настроек FireFox и его плагинов, там еще есть пароли, история посещении, избранное. Зачем ему знать по каких порносайтам я бродил. Вручную чистить не хочется. Хранится все это в файлах, а не в реестре — FireFox кроссплатформенный, а в Линуксе реестра, насколько я знаю, нет. Значит файлы, в которых это все хранится, надо попробовать заменить на файлы из свежеустановленного FireFox-а.

Задача-минимум: выяснить где FireFox хранить сохраненные пароли и историю.
Задача-максимум: составить общее мнение о назначении файлов в каталоге FireFox.

Предупреждаю сразу, все что удалось узнать — это не результат дизассемблирования, дебагинга, перевода манулов, анализа кода. Это простое сравнение каталогов, чтение в блокноте конфигов и эксперименты с заменой файлов у двух установленных FireFox-ов.

Итак, пробуем включить интуицию, благо имена там вполне осмысленные, смотрим на каталог свежеустановленного FireFox-а и видим там такие подкаталоги:
chrome — содержит jar-файлы с их манифестами, причем формат манифеста не Windows;
components — Java-скрипты, отвечающие за ту или функциональность FireFox-а (о назначении можно догадаться по имени файла, например, как вам такое имя: NetworkGeolocationProvider.js);
defaults — скрипты и стили общие для всех профилей;
dictionaries — словари для проверки правописания (для движка HunSpell);
extensions — дополнения общие для всех (обычно там только тема по умолчанию);
greprefs — настройки движка FireFox-а в виде Java-скриптов;
modules — дополнительные Java-скрипты для работы разных фенечек (например для микроформатов);
plugins — плагины общие для всех (по умолчанию там только Mozilla Default Plugin, предназначение которого следить за обновлениями других плагинов или при необходимости выводить сообщении о не хватающем плагине);
res — некоторые CSS-стили, шрифты и рисунки (а web-дизайнером интересно будет глянуть на «справочники» в подкаталоге «dtd» и да прибудут с вами &lt, &gt и &amp);
searchplugins — поисковые движки (те самые которые «найти с помощью ...»);
uninstall — программа для деинсталяции и лог-файлы установки (удалять не рекомендую, иногда нужен при обновлении FireFox-а).

А так же файлы в каталоге FireFox-а:
AccessibleMarshal.dll — если честно, то не знаю что это за ActiveX-библиотека, у меня все работает и без ее регистрации в системе;
application.ini, platform.ini — несколько неважных настроек;
blocklist.xml — список плагинов, заблокированных для установки;
browserconfig.properties — несмотря на громкое название, всего лишь настройка «домашней страницы»;
crashreporter.exe, crashreporter.ini, crashreporter-override.ini — то самое приложение, которое запускается при падении FireFox-а, плюс его настройки;
dependentlibs.list — список библиотек, требуемых для работы FireFox-а в данной операционной системе;
freebl3.dll, nspr4.dll, nss3.dll, nssckbi.dll, nssdbm3.dll, nssutil3.dll, plc4.dll, plds4.dll, softokn3.dll, smime3.dll, ssl3.dll, xpcom.dll — те самые «требуемые библиотеки», насколько я понял, это обертки для работы с файлами, каталогами и криптосистемой операционной системы (префикс ns указывает на родителя FireFox — Netscape);
freebl3.chk, nssdbm3.chk, softokn3.chk — цифровые подписи некоторых библиотек (а может и не подписи, а может и не цифровые);
firefox.exe — он самый, тот который огненный :)
install.log — лог установки (можно посмотреть на ошибки при установки, а можно просто удалить);
js3250.dll — движок Java-скриптов;
LICENSE — MOZILLA PUBLIC LICENSE Version 1.1 — именно так, большими буквами;
mozcpp19.dll, mozcrt19.dll — обертки над объектами операционной системы (типы, строки, потоки, нити и функции для работы с ними) — такова цена кроссплатформенности (прям страшно смотреть на заголовки);
plugin-container.exe — с некоторых пор дополнения выполняются в песочнице, которая реализуется этим приложением (довольно часто выручает при работе с кривыми дополнениями);
README.txt — файл, который никто никогда не читает (там в принципе и читать-то нечего);
sqlite3.dll — движок базы данных SQLite (именно он используется в FireFox-е);
updater.exe, update.locale, updater.ini — обновлятор и его настройки (update.locale — сестра таланта);
xul.dll — прослойка между контентом и плагинами (могу ошибаться);

Теперь, не выключая интуицию, рассмотрим каталог профиля пользователя, в котором есть следующие подкаталоги:
bookmarkbackups — содержит файл с закладками и его бэкапы в формате JSON (то, что json легкочитаемый — враки, чуть глаза не сломал, когда открыл его в блокноте);
chrome — пользовательские css-стили;
extensions — дополнения (таков официальный перевод);
minidumps — хранит минидампы памяти, записанные при падении FireFox-а;
searchplugins — пользовательские поисковые движки;

а так же файлы:
blocklist.xml — список плагинов, заблокированных для установки;
bookmarks.html — страница-заглушка для закладок;
cert_override.txt — добавленные/перекрытые пользователем корневые сертификаты;
cert8.db — корневые сертификаты;
compatibility.ini — ?
compreg.dat — зарегистрированные для выполнения Java-скрипты/компоненты
content-prefs.sqlite — некоторые настройки FireFox-а;
cookies.sqlite — сохраненные куки (кроме флэш);
downloads.sqlite — список загруженных файлов;
extensions.cache, extensions.ini, extensions.rdf — установленные дополнения;
formhistory.sqlite — история заполнения html-форм;
key3.db — файл, хранящий ключ, которым зашифрованы сохраненные пароли;
localstore.rdf — ?
mimeTypes.rdf — список известных MIME-типов;
permissions.sqlite — сохраненные разрешения для сайтов (например, сайт addons.mozilla.org может устанавливать дополнения);
places.sqlite — расположение закэшированных ресурсов;
places.sqlite-journal — ? журнал текущих кэшируемых ресурсов?
pluginreg.dat — список зарегистрированных плагинов (не путать с дополнениями);
prefs.js — пользовательские настройки;
search.json — история поисковых запросов;
search.sqlite — ? история поисковых запросов (почему то сюда ничего не записывается, может в будущем будет)?
secmod.db — ? настройки шифрования и использования токенов?
signons.sqlite — сохраненные пароли;
urlclassifierkey3.txt — ?
webappsstore.sqlite — ? сохраненные RSS-ленты?
xpti.dat — ? что-то связанное с ActiveX?

Как видите, остались еще вопросы по некоторым файлам. По другим файлам я не уверен, что они выполняют именно ту роль, которая здесь им приписана. Надеюсь что кто-то сможет дополнить в комментариях или напишет свой пост о внутреннем устройстве любимого нами Огненного Лиса. И может новой его версии, которую нам обещают в феврале. Удачного все сёрфинга.

PS
Ну а задачу-минимум я решил
— очистив каталог «bookmarkbackups»;
— заменив файлы cookies.sqlite, downloads.sqlite, formhistory.sqlite, search.json, signons.sqlite;
— удалив файлы session*.rdf, которые хранят историю посещенных сайтов.
Tags:
Hubs:
+7
Comments22

Articles