Бесплатный менеджер паролей KeePass 2: инструкция по эффективному использованию. Часть 1

Как настроить KeePass для входа на сайты. Автоматическое определение адреса. Эквивалентные домены. Нестандартная авторизация, автонабор отдельных полей. Облачная синхронизация между устройствами. Резервное копирование базы

Речь пойдет об использовании KeePass, в основном, на Windows. При этом сама программа кросплатформенная, а также имеет ряд адаптаций, из которых уделим внимание KeePass2Android. Чтобы база была общей на разных устройствах, обеспечим облачную синхронизацию.

Эта статья касается, в первую очередь, самого типичного применения менеджера паролей — авторизации на сайтах. Более узкие темы, как то авторизацию в разнообразных приложениях, совместное использование, дополнительную защиту и т.д., рассмотрим в отдельной статье.

Я решил не загружать читателей долгими и нудными рассуждениями, а сразу предложить готовую настройку. Пожалуй, так новички легче войдут в курс дела, а опытным хватит пояснений под спойлерами, чтобы взять на вооружение отдельные идеи. Тем более, что в сети и без того есть хорошие руководства.

Обычному пользователю™ достаточно прочитать пункт Основы, не раскрывая в нем спойлеры.

Достоинства и недостатки предлагаемой конфигурации

Предложенный вариант использования KeePass'а — лишь один из многих. Его достоинства:

  • портативность;
  • защищенный ввод мастер-пароля;
  • быстрая разблокировка коротким паролем;
  • автонабор паролей с защитой от слежения за клавиатурой;
  • копирование паролей с частичной защитой от слежения за буфером обмена;
  • резервное копирование без плагинов;
  • облачная синхронизация без плагинов;
  • фоновое выполнение синхронизации, не мешающее работе;
  • ускоренный автонабор;
  • нестандартный автонабор, в т.ч.:
    • двухстраничная авторизация,
    • набор произвольного поля,
    • набор произвольной последовательности,
    • набор с задержкой и без усложнения (плагин TCATO_Placeholder);
  • интеграция в браузеры, не требующая их настройки (плагин WebAutoType);
  • автоматический переход к подходящей записи (плагин AutoTypeShow);
  • поддержка эквивалентных доменов (в т.ч. с использованием регулярных выражений);
  • меню выбора браузера (в т.ч. портативного или браузера в песочнице);
  • запуск из KeePass'а приложений с одновременным автонабором (монтирование томов VeraCrypt, соединение по AmmyyAdmin и др.);
  • способность KeePass'а работать с правами администратора (понижая права открываемых им браузеров и других приложений);
  • работа с несколькими базами:
    • совместно используемые пароли,
    • автооткрытие нескольких баз;
  • использование KeePass'а как менеджера закладок;
  • возможность открывать базу без ввода пароля.

Недостатки:

  • автонабор запускается вручную;
  • глобальный автонабор вызывается медленно;
  • записи создаются по шаблонам;
  • не используется подхват данных из браузера;
  • при импорте данных из другой базы выполняется XML-замена.

Если эти недостаки для вас критичны, вы можете отказаться от глобального автонабора и поддержки эквивалентных доменов и предпочесть интеграцию с браузерами посредством плагинов, наподобие KeeFox, ChromeIPass и т.д.

Основы

Подготовка программы

Распакуем в какую-нибудь пустую папку архив с portable-вариантом KeePass версии 2.x, туда же — архив KeePass_Settings.zip (пароль KeePass), в подпапку Languages распакуем архив с русским переводом. Добавим плагины Favicon Downloader, TCATO Placeholder, WebAutoType, AutoTypeShow, KeePassQuickUnlock и KPSourceForgeUpdateChecker — просто поместим файлы с расширением .plgx в подпапку Plugins.

KeePass 2.x требует .NET Framework 2 или выше, а плагин WebAutoType — .NET Framework 4. В отсутствие .NET Framework 4 можно использовать плагин WebAutoType версии 3.x (работает медленно) или отказаться от этого плагина.

Если используются жесткие средства защиты, наподобие Comodo Internet Security, понадобится добавить в доверенные файлы из каталога Scripts.

Содержимое каталога KeePass

Проверка подлиности

Чтобы убедиться, что программа не поддельная, проверим подписи, как рекомендует ее автор. У каждого exe- и dll-файла откроем окно свойств и перейдем на вкладку «Цифровые подписи». Удостоверимся, что имя подписавшего — Open Source Developer, Dominik Reichl. Затем нажмем Сведения и удостоверимся, что подпись действительна. Не иметь подписи могут только файлы плагинов в папке PluginCache.

Настройка ориентирована на максимально портативную и автономную работу. Данные размещаются в каталоге программы и не привязаны к его расположению. Этот каталог можно перемещать, а также переносить на другие ПК.

Как это настроено

KeePass сам по себе обеспечивает портативность, в частности, запоминает именно относительный путь к базе данных. Поэтому базу удобно держать в папке программы и переносить вместе с ней. Однако по умолчанию KeePass помещает скомпилированные плагины в папку %LOCALAPPDATA%\KeePass, что несколько отступает от портативности. Чтобы они помещались в папку программы, отредактирован файл KeePass.config.xml (в кодировке UTF-8): после строки <Application> вставлена строка <PluginCachePath>{APPDIR}{ENV_DIRSEP}PluginCache</PluginCachePath>.

Чтобы опробовать настройку смогли даже те пользователи, у которых уже запущен свой KeePass, в разделе Сервис → Параметры → Дополнительно отключена опция Ограничивать одним экземпляром.

Открытие базы и изменение мастер-пароля. Быстрая разблокировка

Запустим KeePass и введем мастер-пароль myCoolMasterPassword.

Если запустить перед этим какой-нибудь килоггер-тест, то можно убедиться, что ввод мастер-пароля хорошо защищен.

Изменим мастер-пароль (меню Файл → Изменить основной пароль): зададим свой сложный пароль и, при желании, ключевой файл. В качестве ключевого можно взять любой личный файл, который доступен на всех синхронизируемых устройствах и ни в коем случае не может быть утерян или изменен. Данные учетной записи Windows не будем использовать для авторизации.

Если указать не только пароль, но и ключевой файл, то они будут запрашиваться при каждом запуске программы. Открыть базу смогут только те, у кого есть пароль и ключевой файл одновременно.

При каждом сохранении база шифруется заново, причем с новым случайным вектором инициализации, чтобы скрыть, в какую именно часть базы вносились изменения.

Смена мастер-пароля

Чтобы облегчить разблокировку базы, зайдем в группу <service>, откроем запись QuickUnlock и назначим ей какой-нибудь простой пароль, например, последние 3 символа мастер-пароля. Теперь повторная разблокировка будет выполняться этим коротким паролем, в случае ошибки потребуется ввести мастер-пароль.

Как это настроено

Чтобы обычные килоггеры не могли перехватить ввод мастер-пароля, в разделе Сервис → Параметры → Безопасность включена опция Вводить основной пароль в защищенном режиме. На вкладке Дополнительно включена опция Запоминать и автоматически открывать последнюю базу данных при запуске, как и по умолчанию; но в то же время отключены опции Запоминать источники ключа и Запоминать рабочие папки, поскольку расположение ключевого файла — это все-таки секретная информация.

Функцию быстрой разблокировки обеспечивает плагин KeePassQuickUnlock. Для него создана запись QuickUnlock, в ней отключена опция Автонабор → Разрешить автонабор для этой записи, а в настройке программы в разделе Сервис → Параметры → QuickUnlock выбран режим 'QuickUnlock' Entry only и снят лимит времени. (Режим Part of Master Password не используется, так как он пригоден лишь для однократной быстрой разблокировки.)

Поиск нужной записи и авторизация

Опробуем разные способы ввода учетных данных. Воспользуемся «учебной» учетной записью, которая имеет название Учебный аккаунт, логин myLogin, пароль myPassword, адрес http://keepass.info/help/kb/testform.html, тег демо и заметки Тренировка

Заодно проверим, перехватываются ли данные тестами, следящими за нажатием клавиш и буфером обмена, а также утилитой Ditto, запоминающей буфер обмена.

Начнем с клавиатурного способа. Откроем KeePass сочетанием клавиш Ctrl+Alt+Shift+K и сразу же наберем фрагмент названия записи, или логина, или адреса, или тега, или даже заметок, нажмем Enter. Стрелками выберем нужную запись из найденных и нажмем Ctrl+U — ссылка откроется. Поставим курсор в поле ввода логина и нажмем Ctrl+Alt+Shift+F9 (или Fn+Ctrl+Alt+Shift+F9, в зависимости от конфигурации клавиатуры). Нажмем кнопку Submit — и страница покажет сообщение с введенными данными.

Аналогичное можно проделать одной мышью: сделаем двойной клик по полю URL нужной записи. Когда ссылка откроется, кликнем по полю ввода (не обязательно очищать поле — KeePass сделает это сам). Вернемся к KeePass'у и нажмем на панели инструментов кнопку Выполнить автонабор.

Кликать по полю ввода желательно всегда, даже если там уже мигает курсор. В частности, этого требует авторизация в Google через Firefox.

Автонабор на тестовой странице KeePass

Если понадобится отдельно набрать логин или пароль — вызовем на записи контекстное меню и в разделе Начать автонабор выберем пункт {USERNAME} или {PASSWORD}.

Вместо автонабора можно перетащить логин и пароль в поля ввода прямо из списка записей KeePass.

Еще один вариант — временно скопировать учетные данные в буфер обмена, это делается двойным кликом по ним либо через контекстное меню записи. Контекстное меню позволяет копировать и дополнительные поля, например, Secret. При этих способах копирования через 20 секунд буфер обмена автоматически очищается.

Посмотрим, удался ли перехват пароля килоггер-тестом. В случае автонабора мы увидим просто мешанину символов — это достигнуто двойным усложнением автонабора. Таким образом, простые килоггеры не смогут разобрать наши учетные данные, хотя это возможно при целенаправленной атаке на KeePass. Если не пользоваться автонабором, а перетаскивать логин и пароль в поля ввода, то обычным килоггерам вообще ничего не достанется. Но если копировать учетные данные в буфер обмена, пусть и с последующей его очисткой, — тестовая программа их перехватит. В то же время утилита Ditto не перехватывает данные, скопированные двойным кликом.

Как это настроено

В разделе Сервис → Параметры → Политика включены опции Автонабор, Автонабор без контекста, Перетаскивание и Копирование, как и по умолчанию.

На вкладке Интеграция заданы глобальные горячие клавиши Ctrl+Alt+Shift+F9 для автонабора выбранной записи, а также добавлена клавиша Shift в комбинации, имеющиеся по умолчанию. Можно сделать комбинации и более простыми, но возрастет риск случайного нажатия и конфликта с другими программами.

Чтобы упростить поиск, на вкладке Интерфейс в разделе Быстрый поиск включены все три опции вида Помещать фокус на...

На вкладке Безопасность включена автоочистка буфера обмена через 20 секунд. Также включена опция Использовать формат буфера обмена 'Clipboard Viewer Ignore', чтобы некоторые легальные программы, следящие за буфером обмена, не запоминали учетные данные (замечание, что эта опция «не рекомендована» устарело: оно относится к старой версии, конфликтовавшей с Microsoft Office).

В самой базе изменена верхняя группа: на вкладке Автонабор задано использование последовательности {CLEARFIELD}{UserName}{TAB}{DELAY 100}{Password}, как самой универсальной. В учебной записи включена опция Двойное усложнение автонабора.

Чтобы активировать подменю Начать автонабор, в разделе Сервис → Параметры → Интерфейс включена опция Показывать дополнительные команды меню автонабора.

Для ускорения автонабора отредактирован файл KeePass.config.xml: после строки <Integration> вставлена строка <AutoTypeInterKeyDelay>10</AutoTypeInterKeyDelay>

Глобальный автонабор

До сих пор мы своими руками отыскивали подходящую запись для авторизации на сайте. Однако KeePass способен найти ее сам, сообразно открытому сайту, и запустить автонабор: достаточно кликнуть в поле ввода, нажать клавиши Ctrl+Alt+Shift+A (или кнопку [G] на панели инструментов KeePass'а) и в появившемся окне подтвердить выбор учетной записи.

Запуск глобального автонабора KeePass мышью

Как это настроено

Глобальному автонабору назначены горячие клавиши Ctrl+Alt+Shift+A (Сервис → Параметры → Интеграция).

Добавлен плагин WebAutoType, считывающий адрес фрейма. В его настройке задано создание записи по горячим клавишам Ctrl+Alt+Shift+W и включена опция Use the URL field value for matching.

Работу кнопки [G] обеспечивают триггеры (Сервис → Триггеры) и скрипт GlobalAutoTypeHelper.js.

Сначала создан триггер Добавить кнопки на панель инструментов:

  • событие: Приложение запущено и готово;
  • условия: отсутствуют;
  • действие: Добавить свою кнопку на панель инструментов:
    • идентификатор: btn_GlobalAutoType,
    • имя: [G],
    • описание: Глобальный автонабор.

Затем создан триггер Глобальный автонабор кнопкой [G]:

  • событие: Нажата пользовательская кнопка с идентификатором btn_GlobalAutoType,
  • действие: Выполнить команду/ссылку:
    • файл/ссылка: %windir%\System32\wscript.exe,
    • аргументы: "{APPDIR}\Scripts\GlobalAutoTypeHelper.js",
    • опция Ждать выхода отключена.

Скрипт GlobalAutoTypeHelper.js симулирует нажатие клавиш Alt+Esc, чтобы убрать окно KeePass'а на задний план, командной строкой инициирует глобальный автонабор, а затем активизирует окно выбора записи. Код скрипта:

var WshShell = WScript.CreateObject("WScript.Shell");
var FSO = WScript.CreateObject("Scripting.FileSystemObject");
WScript.Sleep(100);
WshShell.SendKeys("%{ESC}");
WScript.Sleep(100);
WshShell.Run("\"" + FSO.GetAbsolutePathName(FSO.GetFile(WScript.ScriptFullName).ParentFolder.ParentFolder) + "\\KeePass.exe\" -auto-type");
for (var attempt = 1; attempt != 50; ++attempt) {
	WScript.Sleep(500);
	if (WshShell.AppActivate("Выбор записи для автонабора")) {
		break;
	}
}

Во избежание фишинга в разделе Сервис → Параметры → Дополнительно → Автонабор отключены все четыре опции вида Считать запись подходящей....

Для перестраховки от случайного нажатия горячих клавиш включена опция Всегда показывать окно выбора записи для глобального автонабора.

Определение адреса браузерными расширениями (для K-Meleon, Pale Moon, песочниц и др.)

За считывание адреса страницы/фрейма отвечает плагин WebAutoType (см. системные требования). Однако он не работает с некоторыми видами браузеров, а также с браузерами, выполняющимися в песочнице (Sandboxie, Comodo). Кроме того, он предназначен только для Windows.

Решение — вместо использования плагина установить в браузер какое-либо из расширений, добавляющих к оконному заголовку адрес открытой страницы. Тогда KeePass будет подбирать записи на основании этого заголовка.

Настройка самого расширения не играет роли: добавляет ли оно в заголовок полный адрес или только домен, с протоколом или без, заключает ли адрес в скобки т.п.

Браузер, в который установлено расширение, понадобится отметить в базе: в группе <service> открыть запись <Associations> и вписать название браузера в поле Логин. Название должно быть тем самым, которое браузер добавляет в конец своего заголовка. Можно перечислить несколько браузеров, разделяя их знаком |:

Pale Moon|K-Meleon

Если какой-либо браузер запускается в песочнице Sandboxie, понадобится дополнительно указать его название с символами [#] на конце, например:

Pale Moon|K-Meleon|Pale Moon [#]|K-Meleon [#]|Google Chrome [#]

Глобальный автонабор, использующий браузерные расширения, работает только для записей, созданных по шаблонам. Так настроено во избежание фишинга: чтобы принимался во внимание только последний адрес, содержащийся в заголовке, — тот, что добавлен расширением. Однако этой меры недостаточно, если мошеннический сайт меняет свой заголовок скриптом. Плагин WebAutoType в этом смысле защищает лучше.

Можно совмещать оба способа, при этом рекомендую в основном пользоваться плагином WebAutoType, а на расширение полагаться только по необходимости.

Например, в приведенной выше строке присутствует вариант Google Chrome [#], но отсутствует Google Chrome. Это значит, что KeePass полагается на расширение, только если указанный браузер запущен в песочнице Sandboxie. Если же браузер запущен в реальной среде, то с ним работает плагин WebAutoType, а данные расширения игнорируются.

Как эта функция реализована, рассмотрим позже, вместе с поддержкой эквивалентных доменов.

Создание записи

Создавать записи будем на основе шаблонов. Шаблоны — это просто записи, заготовленные в группе templates; в них могут быть проставлены названия, ссылки, добавлены дополнительные поля, установлены значки, включено усложнение автонабора, заданы его последовательности и т.д. Некоторые шаблоны содержат в Заметках инструкцию по своему использованию, ее можно удалить.

Откроем в браузере какой-нибудь форум и попробуем на нем зарегистрироваться. Запустим KeePass, и войдем в группу Общие. Кликнем по стрелке справа от кнопки добавления записи и выберем шаблон _Обычная_запись_. Дадим записи желаемое название, в поле URL-ссылка скопируем адресную строку браузера.

Перейдем на страницу регистрации и заполним требуемые поля, кроме пароля. Скопируем в соответствующее поле KeePass'а выбранный логин, а в поле Заметки укажем прочие данные, которые использовали для регистрации: имейл, имя и т.п. Теперь нажмем Ok, чтобы закрыть окно создания записи. Чтобы запись обрела значок сайта, выберем в ее контекстном меню пункт Download Favicons.

Перетащим пароль из KeePass'а в положенное место на странице регистрации (как вариант, можем поставить курсор в это место и воспользоваться контекстным меню записи: Начать автонабор{PASSWORD}). Завершаем регистрацию.

Пароль при этом генерируется автоматически. Он формируется из 20 символов: букв нижнего регистра, верхнего регистра, цифр и спецсимволов (_-,.;:), причем гарантируется присутствие знаков каждого из этих 4 видов.

Автоматический подхват данных из браузера

Можно было сделать проще и быстрее: ввести желаемый логин на странице регистрации, кликнуть по нему, нажать Ctrl+Alt+Shift+W — и откроется окно добавления записи с уже готовым заголовоком, логином и ссылкой. Останется лишь перетащить пароль в форму регистрации.

Однако использование шаблонов предпочтительнее тем, что в них включено усложнение автонабора и поддержка эквивалентных доменов, а также могут быть учтены особенности того или иного сайта.

В то же время удобно воспользоваться клавишами Ctrl+Alt+Shift+W, чтобы узнать адрес фрейма, в котором находится форма авторизации. Дело в том, что при поиске записи KeePass опирается на адрес фрейма, куда вводятся данные, а не на адресную строку браузера, — поэтому именно адрес фрейма следует указывать в поле URL-ссылка (или в списке эквивалентных доменов). Например, авторизация на странице https://e.mail.ru в действительности происходит через фрейм https://account.mail.ru.

Вы можете изменить это сочетание клавиш в настройке плагина WebAutoType: Сервис → WebAutoType Options...

Если вы захотите сгенерировать другой пароль, откройте запись, нажмите кнопку рядом с полем Пароль и выберите вариант Автосоздаваемые пароли для новых записей. Если сайт не принимает слишком сложные пароли, выберите вариант Simple.

Вариант Simple дает пароль из 14 алфавитно-цифровых символов, гарантируется присутствие букв разного регистра и цифр. Вариант Strong дает пароль из 30 почти любых ASCII-символов.

Создание пароля в KeePass

Теперь опробуем регистрацию на Яндексе. Войдем в группу Почта и добавим запись по шаблону Yandex. Перейдем на страницу регистрации, укажем имя, определимся с логином. Занесем в KeePass логин, укажем в коммментарии имя, фамилию и нажмем Ok. Перетащим пароль на страницу регистрации.

Однако Яндекс требует также придумать ответ на секретный вопрос. Этот ответ должен быть таким же секретом, как и пароль, поэтому мы и сгенерируем его подобно паролю.

Войдем в группу <service> и вызовем контекстное меню на записи <Генератор паролей>. Выберем Копировать строковое поле → Создать обычный пароль. Вставим свежесозданный «ответ на вопрос» на страницу регистрации, это нужно сделать за 20 секунд. Теперь сохраним наш «ответ» в KeePass: сделаем двойной клик по полю Пароль записи <Генератор паролей>, чтобы еще раз скопировать тот же «ответ»; потом откроем свою запись Yandex, перейдем на вкладку Дополнительно и вставим «ответ» в поле Secret — на все про все снова 20 секунд. Готово.

Создание записи KeePass

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

Если вы уже пользуетесь каким-нибудь менеджером паролей, то можете перенести свою базу в KeePass, выполнив импорт и небольшую обработку данных.

Как это настроено

В окне Сервис → Генератор паролей заданы профили паролей. Чтобы гарантировать наличие символов каждого типа, использован режим Создать, используя шаблон (с обязательно включенной опцией Случайно переставлять символы в пароле).

Для профиля Simple задан шаблон dul[dul]{11}, который означает одну цифру, одну букву в верхнем регистре, одну в нижнем и еще 11 любых алфавитно-цифровых символов. Профиль добавляется кнопкой Сохранить...

Для основного профиля задан шаблон dul[p\-\_][dulp\-\_]{16}, который означает цифру, букву в верхнем регистре, букву в нижнем, спецсимвол, являющийся знаком препинания, дефисом или подчеркиванием, и еще 16 любых символов из перечисленных категорий. Чтобы использовать этот профиль по умолчанию, он сохранен как Автосоздаваемые пароли для новых записей.

Для профиля Strong задан шаблон dul[s^^^~^`^'^"][duls^^^~^`^'^"]{26}, означающий цифру, букву в верхнем регистре, букву в нижнем, любой печатаемый спецсимвол ASCII (кроме знаков ^~`'", которые не набираются в некоторых окнах) и еще 26 любых символов из перечисленных категорий.

В базе создана группа templates, для нее отключен автонабор и поиск записей (Изменить группу → Поведение) и указано, что она является «группой шаблонов» (Файл → Параметры базы данных → Дополнительно). Также в ней создана подгруппа unused для хранения временно неиспользуемых шаблонов.

В большинстве шаблонов вместо пароля указана строка {{T-REPLACE-RX:#{GROUP_PATH}#(.*templates)?.*#$1#}NEWPASSWORD}

Эта строка устроена так, чтобы в записи, созданной на основе шаблона, автоматически генерировался пароль. Он сгенерируется не сразу после создания записи, а при первом обращении к полю Пароль: копировании, перетаскивании или автонаборе. Если же обратиться к этому полю в самом шаблоне — пароль сгенерирован не будет.

В шаблонах, где требуется генерировать короткие буквенно-цифровые пароли, в качестве пароля указана строка {{T-REPLACE-RX:#{GROUP_PATH}#(.*templates)?.*#$1#}NEWPASSWORD:/Simple/}

В базе создана запись <Генератор паролей>, в ней на вкладке Дополнительно добавлены поля Создать обычный пароль, Создать простой пароль и Создать сложный пароль со значениями {NEWPASSWORD}, {NEWPASSWORD:/Simple/} и {NEWPASSWORD:/Strong/} соответственно, у каждого включена опция Защита в памяти.

Каждый раз, когда такое строковое поле раскрывается (копируется в буфер обмена или вводится автонабором), значение в поле Пароль заменяется новым.

Общая база на всех устройствах

Пришло время наладить синхронизацию. Откроем запись <AutoSync> в группе <service> и зарегистрируемся на облачном хранилище mydrive.ch: придумаем логин, сгенерируем пароль. Учетные данные сохраним в этой записи, только оставим нетронутыми название, ссылку и первую строку заметок. Зайдем в хранилище и отправим туда файл нашей базы, что лежит в папке DBases (Upload → using Standard → Save → Обзор... → Upload). Вот и все.

Облачная синхронизация базы KeePass

Теперь база будет автоматически синхронизироваться с облаком: после внесения изменений, а также ежечасно. Чтобы синхронизировать ее принудительно, достаточно нажать кнопку сохранения.

Если вам понадобится вместо синхронизации просто заменить файл в облачном хранилище, это можно сделать через браузер: удалить старый файл и отправить новый. Ссылка на страницу авторизации есть в заметках к записи <AutoSync>.

Как изменить параметры автоматического сохранения и синхронизации

База автоматически синхронизируется при каждом сохранении.

Сохраняется база автоматически, если внести в нее изменения, а затем заблокировать или минуту не пользоваться KeePass'ом.

База, не содержащая изменений, тоже сохраняется при закрытии или неиспользовании — инициируя тем самым синхронизацию — если с последнего сохранения прошел час. Этот интервал можно менять для каждой конкретной базы: он задается в секундах полем URL-ссылка записи <Settings>, пустое поле отключает такое автосохранение.

Если вы желаете, чтобы «устаревшая» база синхронизировалась сразу при открытии, перейдите в окно Сервис → Триггеры → Регулярно сохранять → События и добавьте событие Открыт файл базы данных. Можно удалить там другие события, если они не нужны.

Если же вы решите отказаться от синхронизации при сохранении, отключите опцию Разрешен в триггере Автоматически синхронизировать.

Также вы можете отказаться от автосохранения: отключить опцию Разрешен в триггерах Автоматически сохранять изменения и Регулярно сохранять.

Как это настроено

В самой базе создана запись под названием <AutoSync> с пустыми полями логина/пароля, ссылкой https://webdav.mydrive.ch/{T-CONV:/{DB_NAME}/Uri/} (KeePass впоследствии трансформирует эту ссылку в WebDAV-адрес файла, который расположен в корне облачного хранилища и имеет имя текущей базы данных) и заметками, начинающимися строкой https://www.mydrive.ch/login. Затем подготовлено несколько триггеров.

На случай, если открыто несколько баз, в окне Сервис → Триггеры создан и расположен выше других триггер Автоматически активировать базу:

  • события:
    • Сохранен файл базы данных, фильтр: пусто;
    • Закрытие файла базы данных (до сохранения), фильтр: пусто;
  • действие: Активировать базу, фильтр: Выполняющая триггер.

Ниже создан триггер Автоматически синхронизировать:

  • событие: Сохранен файл базы данных, фильтр: пусто;
  • условия:
    • Строка:
      • строка: {DB_DIR},
      • операция: Равно,
      • значение: {APPDIR}{ENV_DIRSEP}DBases;
    • Строка:
      • строка: {REF:T@T:<AutoSync>},
      • операция: Равно,
      • значение: <AutoSync>;
    • Строка:
      • опция Отрицание включена,
      • строка: {REF:U@T:<AutoSync>},
      • операция: Равно,
      • значение: пусто;
    • существует файл: {T-REPLACE-RX:/{REF:N@T:<AutoSync>}/\n[\s\S]*//};
  • действия:
    • Изменить состояние триггера:
      • Имя триггера: пусто,
      • новое состояние: Выключить,
    • Синхронизировать текущую базу данных:
      • файл/ссылка: {REF:A@T:<AutoSync>},
      • логин: {REF:U@T:<AutoSync>},
      • пароль: {REF:P@T:<AutoSync>};
    • Изменить состояние триггера:
      • Имя триггера: пусто,
      • новое состояние: Включить.

На время своего выполнения триггер деактивируется: это защита от зацикливания.

В результате синхронизация будет запускаться только для баз, расположенных непосредственно в папке DBases, в которых есть запись <AutoSync> с непустым логином, и только если сервер доступен (т.е. если работает ссылка в первой строке заметок). Учетные данные WebDAV возьмутся из самой этой записи.

Создан триггер Регулярно сохранять:

  • события:
    • Периодически по времени с интервалом 60 секунд и перезапуском при активности,
    • Закрытие файла базы данных (до сохранения), фильтр: пусто;
  • условия:
    • Строка:
      • опция Отрицание включена,
      • строка: {DB_PATH},
      • операция: Равно,
      • значение: пусто;
    • В базе есть несохраненные изменения:
      • опция Отрицание включена,
      • база данных: Текущая;
    • Строка:
      • строка: {T-REPLACE-RX:/0{REF:A@T:<Settings>}/\d{2,}//},
      • операция: Равно,
      • значение: пусто;
    • Строка:
      • строка: {CMD:#%windir%\system32\cscript.exe //Nologo "{APPDIR}\Scripts\CheckAge.js" "{DB_PATH}" {REF:A@T:<Settings>}#M=C,WS=H#},
      • операция: Равно,
      • значение: outdated;
  • действие: Сохранить текущую базу данных.

Чтобы периодически инициировать синхронизацию, этот триггер сохраняет базу каждый раз (при минутной неактивности), когда с момента модификации ее файла проходит время, указанное в ссылке записи <Settings>. Возраст базы проверяется скриптом CheckAge.js:

WScript.StdOut.Write(new Date().getTime() - new Date(WScript.CreateObject("Scripting.FileSystemObject").getFile(WScript.Arguments(0)).DateLastModified).getTime() < 1000 * +WScript.Arguments(1) ? "actual" : "outdated");

Создан триггер Автоматически сохранять изменения:

  • события:
    • Периодически по времени с интервалом в 60 секунд и перезапуском при активности,
    • Закрытие файла базы данных (до сохранения);
  • условия:
    • Строка:
      • строка: {DB_DIR},
      • операция: Равно,
      • значение: {APPDIR}{ENV_DIRSEP}DBases;
    • В базе данных есть несохраненные изменения, база — Текущая;
  • действие: Сохранить текущую базу данных.

Чтобы избежать сбоев при синхронизации, отключена опция Сервис → Параметры → Дополнительно → Использовать файловые транзакции. Когда эта опция включена, KeePass использует при сохранении базы промежуточный временный файл: такой метод сохранения призван предотвратить потерю данных, но иногда из-за него некорректно работает синхронизация. Вместо файловых транзакций, для защиты от потери данных предусмотрено автоматическое резервное копирование.

Чтобы при синхронизации не выскакивало диалоговое окно, отредактирован файл KeePass.config.xml: после строки <UI> вставлена строка <ShowImportStatusDialog>false</ShowImportStatusDialog>.

Вместо myDrive.ch можно использовать другие хранилища, предоставляющие доступ по WebDAV или FTP. Например, для pCloud.com в записи <AutoSync> ссылкой будет https://webdav.pcloud.com/{T-CONV:/{DB_NAME}/Uri/}, а первой строкой заметок — https://my.pcloud.com. Достоинства pCloud.com, по сравнению с myDrive.ch: корректная работа с файловыми транзакциями и бесплатная история файлов. Недостатки: синхронизация работала медленнее; при повторе синхронизации раньше чем через несколько секунд происходил сбой; поддержка WebDAV официально не заявлена.

Обновление программы

Когда KeePass оповестит нас о выходе новой версии, закроем программу, скачаем заново архив с portable-вариантом версии 2.x, архив с переводом и просто заменим все соответствующие файлы в папке программы новыми. Наша настройка при этом сохранится.

Автор программы намеренно не сделал обновление автоматическим, чтобы исключить всевозможные риски подмены. Перед запуском рекомендуется проверить подлинность exe- и dll-файлов программы.

Используем KeePass2Android

Установим KeePass2Android стандартным образом. Затем перейдем в настройку системы и разрешим использование клавиатуры KeePass2Android. Настроим эту клавиатуру: в пункте Языки ввода отметим Английский и Русский, далее на ваш выбор.

Нажмем Открыть файл, выберем HTTPS (WebDAV) и укажем те же данные, что в записи <AutoSync> (ссылку следует указать в явном виде, скопировав ее из KeePass'а клавишами Ctrl+Shift+U). Логин и пароль облачного хранилища можно сохранить, это не самая чувствительная информация. Откроем базу, указав мастер-пароль и ключевой файл, если используется.

Теперь оценим удобство этой программы. Откроем в браузере сайт, который есть в базе. Нажмем Поделиться, выберем KeePass2Android — и нужная запись активизируется. Поставим курсор в поле ввода и сменим клавиатуру на KeePass2Android... которая принимает вид, говорящий сам за себя. Таким образом, этой клавиатурой мы будем легко вводить логины, пароли и дополнительные строковые поля, не прибегая к их копированию в буфер обмена (что было бы довольно опасно).

Клавиатура KeePass2Android

Еще одно облегчение жизни пользователей — быстрая разблокировка: для доступа к базе достаточно ввести три последних символа пароля. Ошиблись — вводим целиком. Функция настраивается и, при желании, отключается.

Чтобы менять клавиатуру было удобнее, рекомендую в разделе Настройка → Приложение → Парольный доступ → Переключение клавиатуры включить опции Автопереключение клавиатуры, Переключить обратно и Сменить после завершения, а опцию Автопереключение только после поиска отключить.

Опытные пользователи могут с помощью ADB задействовать плагин KeyboardSwap — тогда клавиатура будет переключаться вообще сама.

Добавлять записи через KeePass2Android тоже можно, как вариант, через функцию Поделиться. При этом тоже можно пользоваться шаблонами, но предупрежу, что пароль создается не автоматически: нужно нажать кнопку (+) и задать его характеристики.

У некоторых пользователей возникает сбой, если внести изменения через KeePass2Android в базу, которая перед этим была синхронизирована с другим устройством. Можно избежать таких сбоев, если отключить опцию Настройка → Приложение → Обработка файлов → Проверить на наличие изменений и перед каждым изменением синхронизировать базу.

В случае проблем рекомендую закрыть базу и очистить кэш приложения.

Дополнительные возможности

Вернемся в Windows и продолжим разбираться с KeePass'ом.

Автонабор: обычный и нестандартный

Позаботимся, чтобы для наших записей корректно работал автонабор. Для верхней группы задана самая общая последовательность автонабора, которая работает в большинстве случаев: {CLEARFIELD}{UserName}{TAB}{DELAY 100}{Password}, т.е. очистка поля, набор логина, нажатие Tab, короткая задержка и набор пароля (многие добавляют в конце нажатие Enter, но я нахожу это лишним: окончательный шаг лучше выполнить самостоятельно). Эта последовательность наследуется подгруппами и самими записями, поэтому в большинстве случаев все будет Ок. А если авторизация совсем нестандартная?

Во-первых, можно отредактировать саму запись: открыть вкладку Автонабор и указать нужную последовательность. Например, для Google это будет что-то вроде {UserName}{ENTER}{DELAY 1500}{Password}: набрать логин, нажать Enter, выждать полторы секунды и набрать пароль.

Последовательность автонабора KeePass для Google

В последовательности автонабора можно ссылаться не только на логин с паролем, но и на дополнительные поля. Например, для авторизации на ProtonMail нужно вводить логин и два разных пароля — сохраним второй пароль в поле Secret и назначим последовательность {UserName}{TAB}{Password}{ENTER}{DELAY 3000}{S:Secret}: набор логина, нажатие Tab, набор пароля, нажатие Enter, 3-секундная задержка и набор поля Secret. Аналогично вы можете добавлять на вкладку Дополнительно поля с любыми именами на свой вкус и использовать их в автонаборе. Например, если добавить поле PhoneNumber, то в последовательность автонабора можно будет вставить код {S:PhoneNumber}, означающий содержимое этого поля.

Более того, можно назначить разные последовательности автонабора разным окнам или адресам. Например, иногда Google запрашивает только пароль, адрес в таких случаях содержит фрагмент /pwd. Мы можем назначить такой странице автонабор одного пароля: нажмем Добавить, переключимся в режим Match against the URL и укажем в поле Target URL код https://accounts.google.com/*/pwd*, а в поле Своя последовательность код {Password}{ENTER}.

Сопоставление последовательности автонабора адресу

Если понадобится идентифицировать окно по его заголовку, нужно выбрать режим Match against the title.

Также на вкладке Автонабор можно включить или отключить его двойное усложнение. Усложнение автонабора частично защищает от килоггеров, однако его невозможно использовать в некоторых окнах, например, в консольных. Можно настроить усложнение автонабора более тонко, например, включить его в целом для записи, но определенным окнам назначить последовательность без усложнения, наподобие {TCATO:false}{Password}{ENTER}. Код {TCATO:false} в последовательности принудительно отключает усложнение автонабора, а код {TCATO:true} включает — это обеспечивается плагином TCATO_Placeholder.

Во-вторых, можно раскладывать записи по группам в соответствии с автонабором. Так, учетные данные Google или Microsoft целесообразно помещать в группу 2-страничные. В параметрах этой группы (Изменить группу → Автонабор) задана последовательность наподобие {UserName}{ENTER}{DELAY 1500}{Password}, и записи ее наследуют. Недостаток этого варианта — на уровне группы нельзя задать автонабор для разных окон.

Последовательность автонабора для группы

В-третьих, можно создавать записи по шаблонам: в них уже прописаны последовательности автонабора, в т.ч. и для определенных окон. Это рекомендуемый вариант.

Новые шаблоны будем создавать в группе templates, беря за основу шаблон _Обычная_запись_. Чтобы редко используемые шаблоны не занимали место в выпадающем списке, можно переместить их в подгруппу unused: когда они понадобятся, просто вернем их в группу templates.

Если понадобится изменить, например, задержку между вводом логина и пароля на Google, не придется редактировать все гугловские записи — достаточно указать желаемую задержку в пароле записи <Delays> (группа <service>).

Паузы автонабора KeePass

Как это настроено

В базе создана запись <Delays> с логином 4000, паролем 1500 и ссылкой 100. В различных последовательностях автонабора паузы и замедления заданы ссылками на эту запись. Так, в шаблоне Google и в группе 2-страничные указана последовательность автонабора {CLEARFIELD}{UserName}{ENTER}{DELAY {REF:P@T:<Delays>}}{Password}.

Во всех шаблонах, кроме _Консоль/игры_, включено усложнение автонабора.

По-особому сделан автонабор в шаблоне Mail.ru. При настройке почтовой программы необходимо указывать логин вместе с определенным почтовым доменом: mail.ru, bk.ru и др. Если в поле логина вводить полный почтовый адрес, наподобие example@mail.ru, то из-за усложнения автонабора заранее не известно, как перейти к вводу пароля: один или два раза нажать Tab. Решение — по отдельности набирать имя пользователя и домен, вставляя между ними фиктивную паузу. Если домен не указан в логине, предполагается mail.ru. Вся последовательность:

{CLEARFIELD}{T-REPLACE-RX:/{USERNAME}/([^@]*).*/$1/}{DELAY 0}@{DELAY 0}{T-REPLACE-RX:/{USERNAME}@mail.ru/[^@]*@([^@]*).*/$1/}{TAB}{DELAY 100}{Password}

На случай, если в каком-нибудь другом почтовом сервисе будет такая же особенность авторизации, подобным образом сделан и автонабор в шаблоне _Почта_:

{CLEARFIELD}{T-REPLACE-RX:/{USERNAME}/([^@]*).*/$1/}{DELAY 0}{T-REPLACE-RX:/{USERNAME}/[^@]*(@?).*/$1/}{DELAY 0}{T-REPLACE-RX:/{USERNAME}/[^@]*@?(.*)/$1/}{TAB}{DELAY 100}{Password}.

Кроме шаблонов, созданы соответствующие группы с такими же последовательностями автонабора.

Ручной выбор автонабора

Как уже говорилось, можно набрать отдельно логин или пароль через контекстное меню записи (подменю Начать автонабор). Другой вариант — нажать кнопку [F] и выбрать желаемое поле в открывшемся списке. Этим способом можно набирать не только логин/пароль, но и дополнительные однострочные поля, например, Secret.

Более того — кнопка [F] позволяет набирать произвольные последовательности. Нажмем ее и закроем появившийся список — в результате появится другой список, где можно будет выбрать нужную последовательность.

Набор поля или последовательности из общего списка

Как изменить список последовательностей

На самом деле, оба списка, которые выдает кнопка [F], могут содержать, помимо полей, целые последовательности. Первый список — это поля и дополнительные последовательности, заданные в отмеченной записи. Второй — последовательности, общие для всех записей.

Чтобы добавить последовательность к записи, создадим в ней поле с произвольным названием, например, #UsualAutoType. Значением поля сделаем четыре строки:

{UserName}
{TAB}
{Password}
{ENTER}

Если теперь нажать кнопку [F] и выбрать это поле, то выполнится автонабор в последовательности {UserName}{TAB}{Password}{ENTER}. Аналогичным способом можно добавлять другие поля с другими последовательностями.

Выбор последовательности из локального списка

Важно располагать текстовые выражения на нечетных строках, а клавиатурные — на четных. Так, если последовательность начинается с клавиатурного выражения, первую строку нужно оставить пустой:


{CLEARFIELD} {UserName} {ENTER}{DELAY 2000} {Password} {ENTER}

Как видим, здесь два клавиатурных выражения идут подряд и расположились в одной строке: {ENTER}{DELAY 2000}. Текстовые выражения, идущие подряд, тоже должны располагаться в одной строке:

{UserName}@{S:Domain}
{TAB}
{Password}

Список общих последовательностей задается дополнительными полями записи <Sequences>. Однако здесь следует не только записать последовательность в столбик, но и заменить каждый символ { на {{}. Например, последовательность {CLEARFIELD}{UserName}{TAB}{Password}{ENTER}{DELAY 3000}{S:Secret}{ENTER} будет задаваться таким кодом:


{{}CLEARFIELD} {{}UserName} {{}TAB} {{}Password} {{}ENTER}{{}DELAY 3000} {{}S:Secret} {{}ENTER}

Иногда требуется выполнить автонабор в «режиме совместимости» — отложенно, замедленно и без усложнения:

  • некоторые окна, делаясь активными, теряют фокус ввода, и поэтому нужна небольшая задержка перед автонабором, чтобы вручную поставить курсор;
  • в некоторых случаях быстрый (по крайней мере, ускоренный) автонабор работает некорректно, требуется замедление;
  • иногда нужно набирать данные без усложнения: например, при вводе в окно виртуальной машины, или удаленного рабочего стола, или браузера, работающего в контейнере COMODO.

Чтобы выполнить автонабор в таком режиме, нажмем кнопку [C] и выберем поле или последовательность (аналогично кнопке [F]) — автонабор запустится с задержкой, замедленно и без усложнения.

Отложенный автонабор без усложнения в KeePass

Эти приемы можно совмещать с глобальным автонабором. Предположим, открытый в браузере сайт запрашивает дополнительные данные: пароль, ответ на секретный вопрос, какие-либо коды и т.п. Чтобы быстро перейти к соответствующей записи (и заодно избежать фишинга), нажмем клавиши Ctrl+Alt+Shift+S и в появившемся окне подтвердим выбор. В результате автонабора не произойдет: просто откроется KeePass с уже отмеченной записью, и мы сможем набрать нужное поле кнопкой [F] или [C].

Поиск вместо глобального автонабора

Можно настраивать задержку и замедление для кнопки [C]: задержка задается в миллисекундах логином записи <Delays> в группе <service>, а замедление — ссылкой этой записи.

Как это настроено

Как уже говорилось, в базу добавлена запись <Delays> логином 4000, паролем 1500 и ссылкой 100.

Также в базу добавлена запись <Sequences>, в которой поле Заметки состоит из единственной строки x{PICKFIELD}, а дополнительные поля содержат последовательности автонабора, записанные по вышеуказанным правилам:

  • поле # Username Tab Password:
    {{}UserName}
    {{}TAB}{{}DELAY 200}
    {{}Password}
  • поле # Username Enter Password:
    {{}UserName}
    {{}ENTER}{{}DELAY 3000}
    {{}Password}

Чтобы кнопка [C] могла отключать усложнение автонабора, установлен плагин TCATO Placeholder.

Чтобы можно было вместо глобального автонабора выполнять лишь поиск нужной записи, в дополнение к плагину WebAutoType добавлен плагин AutoTypeShow, в его настройке заданы горячие клавиши Ctrl+Alt+Shift+S.

Создан триггер Добавить кнопки на панель инструментов:

  • событие: Приложение запущено и готово;
  • действия:
    • Добавить кнопку... с идентификатором btn_TypeField, именем [F] и описанием Набрать поле/последовательность...;
    • Добавить кнопку... с идентификатором btn_TypeFieldCompatible, именем [C] и описанием Набрать поле/последовательность... (режим совместимости).

Создан триггер Произвольный автонабор кнопкой [F]:

  • событие: Нажата пользовательская кнопка с идентификатором btn_TypeField,
  • действие: Выполнить автонабор для выбранной записи с последовательностью {T-CONV:/{T-REPLACE-RX:;{T-REPLACE-RX:'{T-REPLACE-RX:%{T-REPLACE-RX:#{T-REPLACE-RX:!{T-REPLACE-RX:~x{T-REPLACE-RX:`{PICKFIELD}`\{`{{}{{}}`}~^x$~{{}REF:N@T:<Sequences>}~}!\{\{\}!{!}#^(?:x|[\s\S]*)##}%\{\{\}%{%}'(?<=^(?:.*\n.*\n)*.*)([\+\%\^\~\(\)\[\]\{\}])'{$1}'};[\n\r];;}/Raw/}

Создан триггер Произвольный автонабор в режиме совместимости кнопкой [C]:

  • событие: Нажата пользовательская кнопка с идентификатором btn_TypeFieldCompatible;
  • действие: Выполнить автонабор для выбранной записи с последовательностью {TCATO:false}{T-CONV:/{T-REPLACE-RX:`{T-REPLACE-RX:~{REF:A@T:<Delays>}~^.*\D.*$~~}`(.+)`{DELAY=$1}`}{T-REPLACE-RX:;{T-REPLACE-RX:'{T-REPLACE-RX:%{T-REPLACE-RX:#{T-REPLACE-RX:!{T-REPLACE-RX:~x{T-REPLACE-RX:`{PICKFIELD}`\{`{{}{{}}`}~^x$~{{}REF:N@T:<Sequences>}~}!\{\{\}!{!}#^(?:x|[\s\S]*)##}%\{\{\}%{%}'(?<=^(?:.*\n.*\n)*.*)([\+\%\^\~\(\)\[\]\{\}])'{$1}'};[\n\r];{CMD:`ping -n 1 -w {T-REPLACE-RX:~{REF:U@T:<Delays>}~^(?:.*\D.*)?$~4000~} 192.0.2.222`O=0,WS=H`};}/Raw/}

Таким образом, пауза реализована отправкой эхо-запроса на несуществующий адрес: в качестве времени ожидания ответа подставляется логин записи <Delays>.

Более сложные приемы

Если вы хотите, чтобы определенная запись всегда запрашивала вариант автонабора (а не только по кнопкам [F] и [C]), задайте на вкладке Автонабор последовательность {T-CONV:/{T-REPLACE-RX:;{T-REPLACE-RX:'{T-REPLACE-RX:%{T-REPLACE-RX:#{T-REPLACE-RX:!{T-REPLACE-RX:~x{T-REPLACE-RX:`{PICKFIELD}`\{`{{}{{}}`}~^x$~{{}REF:N@T:<Sequences>}~}!\{\{\}!{!}#^(?:x|[\s\S]*)##}%\{\{\}%{%}'(?<=^(?:.*\n.*\n)*.*)([\+\%\^\~\(\)\[\]\{\}])'{$1}'};[\n\r];;}/Raw/}.

Еще один прием — можно набирать данные одной записи последовательностью, заданной в другой записи. Создадим запись с названием, например, #ProtonMail_AutoType (без символов /, ;, ' и ") и поместим в поле Заметки код последовательности, записанный по тем же правилам, что в записи <Sequences>. Теперь мы можем ссылаться на последовательность автонабора такой строкой: {T-CONV:/{T-REPLACE-RX:;{T-REPLACE-RX:'{T-REPLACE-RX:"{REF:N@T:#ProtonMail_AutoType}"\{\{\}"{"}'(?<=^(?:.*\n.*\n)*.*)([\+\%\^\~\(\)\[\]\{\}])'{$1}'};[\n\r];;}/Raw/} (на месте выделенного фрагмента должно быть ваше название записи).

Можно, например, создать шаблон ProtonMail и указать эту строку в качестве последовательности автонабора. В результате, чтобы изменить автонабор сразу во всех записях, созданных по этому шаблону, будет достаточно отредактировать лишь запись #ProtonMail_AutoType.

Замечу, что изменение основной последовательности автонабора можно реализовать более простым путем — унаследовав автонабор группы. Однако наш способ позволяет менять последовательности, назначенные окнам.

Кстати, окно тоже можно задать в записи #ProtonMail_AutoType: например, указать в поле URL-Ссылка адрес https://mail.protonmail.com/login. Можно указать и более сложное выражение, понадобится лишь заменить каждый символ { на {{}, например: https://{{}URL:HOST}/login

Чтобы теперь сопоставить последовательность адресу, нужно указать в качестве Target URL код {T-REPLACE-RX:"{REF:A@T:#ProtonMail_AutoType}"\{\{\}"{"}, а в качестве последовательности код {T-CONV:/{T-REPLACE-RX:;{T-REPLACE-RX:'{T-REPLACE-RX:"{REF:N@T:#ProtonMail_AutoType}"\{\{\}"{"}'(?<=^(?:.*\n.*\n)*.*)([\+\%\^\~\(\)\[\]\{\}])'{$1}'};[\n\r];;}/Raw/}

Дублирование записей

Еще один способ реализовать выбор последовательности автонабора — создать копию записи и изменить в ней автонабор.

Если вы хотите, чтобы изменение логина/пароля исходной записи автоматически отражалось на ее копии, включите в диалоге дублирования опцию Заменять логины и пароли ссылками. Если хотите, чтобы в копии отражалось также изменение URL, замените в ней URL кодом {REF:A@I:идентификатор} (идентификатор находится на вкладке Свойства исходной записи).

Если нужно, чтобы в копии отражалось изменение дополнительного поля, например, Secret, добавьте к Заметкам исходной записи строку $Secret={T-CONV:/{S:Secret}/Uri/}, а в копии замените значение поля Secret на {T-CONV:/{T-REPLACE-RX:#{REF:N@I:идентификатор}#(?:[\s\S]*\$Secret=(\S*))?[\s\S]*#$1#}/Uri-Dec/}. Аналогичное можно проделать и для нескольких полей. Разумеется, выделенные фрагменты кода нужно будет заменить своими.

Списки эквивалентных доменов

Зачастую один интернет-ресурс имеет несколько страниц авторизации с разными доменными именами. Сделаем так, чтобы KeePass учитывал это при глобальном автонаборе: занесем эти домены в список экивалентных.

Для этого в группе domains создадим новую запись или изменим существующую, перечислив в ее названии эквивалентные домены, разделенные знаком |, без пробелов, без протокола и без префикса www. Название должно начинаться и оканчиваться тоже знаком |. Например: |yandex.ru|yandex.by|passport.yandex.ru|. Теперь глобальный автонабор будет работать, даже если в поле URL-ссылка указана страница passport.yandex.ru, а открыта www.yandex.by.

Списки эквивалентных доменов KeePass

Поддержка эквивалентных доменов работает только для записей, созданных по шаблонам. Чтобы она заработала для записей, созданных другим путем, придется выполнить для них такое же преобразование, как при импорте.

Как задать множество эквивалентных доменов регулярным выражением

Записи об эквивалентных доменах в группе domains могут содержать не только однозначные имена, но и регулярные выражения. Регулярное выражение, задающее дополнительное множество доменов, записывается в поле Логин соответствующей записи.

При этом в поле Название должны быть явно перечислены все доменные имена, которые встречаются в поле URL-ссылка у различных учетных записей. Например, если в базе есть учетные записи со ссылками https://passport.yandex.ru/ и https://www.yandex.by/?ncrnd=1851, то для записи об эквивалентных доменах Яндекса подойдет название |passport.yandex.ru|yandex.by| и логин ((mail|passport)\.)?yandex\.(ru|by|ua|com).

Внимание! Регулярное выражение должно быть таким, чтобы ему соответствовали только доменные имена, иначе возникнет угроза фишинга. Например, выражение .*\.livejournal\.com неприемлемо, потому что ему соответствует адрес http://bad-site.com#www.livejournal.com. Более безопасный вариант, охватывающий поддомены 3-го уровня, — выражение [\w\-]*\.livejournal\.com. А чтобы одновременно охватить и сам домен livejournal.com, и все его поддомены всех уровней, подойдет выражение ([\w\-\.]*\.)?livejournal\.com.

Как изменить работу с эквивалентными доменами

За поддержку эквивалентных доменов отвечает запись <Associations> в группе <service>. Ее пароль определяет ассоциации с оконным заголовком браузера, а ссылка — с адресной строкой.

Можно сделать так, чтобы каждый домен подходил всем своим поддоменам, т.е. чтобы любая запись вида http://example.com подходила странице http://sub.example.com. Для этого отредактируйте запись <Associations>:

  • пароль: //(?i) \W*(?:\w+\:\/\/)?(?:[\w\-\.]+\.)?(?=\w)(?:{{}T-REPLACE-RX:/{{}REF:T@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/([^\w\s\|])/\$1/}{{}T-REPLACE-RX:/{{}REF:U@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/^\{{}.*//})(?:[\:\/#]\S*)?\W* (?:{T-REPLACE-RX:/{USERNAME}/([^\w\s\|])/\$1/})$//
  • ссылка: //^(?i)(?:\w+\:\/\/)?(?:[\w\-\.]+\.)?(?=\w)(?:{{}T-REPLACE-RX:/{{}REF:T@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/([^\w\s\|])/\$1/}{{}T-REPLACE-RX:/{{}REF:U@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/^\{{}.*//})(?:[\:\/#]\S*)?$//

Если глобальный автонабор работает слишком медленно, можно упростить поддержку эквивалентных доменов: не проверять их по списку, а лишь выяснять, находится ли сайт в поддомене того, что указан в поле URL-ссылка. Для этого отредактируйте запись <Associations> так:

  • пароль: //(?i) \W*(?:\w+\:\/\/)?(?:[\w\-\.]+\.)?(?=\w)(?:{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!})(?:[\:\/#]\S*)?\W* (?:{T-REPLACE-RX:/{USERNAME}/([^\w\s\|])/\$1/})$//
  • ссылка: //^(?i)(?:\w+\:\/\/)?(?:[\w\-\.]+\.)?(?=\w)(?:{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!})(?:[\:\/#]\S*)?$//

Если вы используете для глобального автонабора только плагин WebAutoType, можно сделать пустым пароль в записи <Associations>, а если только браузерные расширения — ссылку. Это уменьшит задержки.

Как это настроено

В группе <service> создана запись <Associations>. В ее поля Пароль и URL-ссылка соответственно вписаны значения:

//(?i) \W*(?:\w+\:\/\/)?(?:www\.)?(?=\w)(?:{{}T-REPLACE-RX:/{{}REF:T@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/([^\w\s\|])/\$1/}{{}T-REPLACE-RX:/{{}REF:U@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/^\{{}.*//})(?:[\:\/#]\S*)?\W* (?:{T-REPLACE-RX:/{USERNAME}/([^\w\s\|])/\$1/})$//

//^(?i)(?:\w+\:\/\/)?(?:www\.)?(?=\w)(?:{{}T-REPLACE-RX:/{{}REF:T@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/([^\w\s\|])/\$1/}{{}T-REPLACE-RX:/{{}REF:U@T:|{{}T-REPLACE-RX:!{{}URL:HOST}!^www\.!!}|}/^\{{}.*//})(?:[\:\/#]\S*)?$//

В различных шаблонах записей задано два целевых окна автонабора (Автонабор → Добавить): одно в режиме Match against the title с заголовком {T-REPLACE-RX:/{REF:P@T:<Associations>}/\{\{\}/{/}, другое в режиме Match against the URL с адресом {T-REPLACE-RX:/{REF:A@T:<Associations>}/\{\{\}/{/}. Последовательность для них оставлена по умолчанию.

Как получены эти значения

Предположим, в браузеры Pale Moon и K-Meleon установлены расширения, добавляющие адрес сайта в заголовок. Обычно такие расширения отделяют адрес от остальной части заголовка пробелами и размещают его в конце, перед названием браузера. Некоторые из расширений заключают адрес в скобки и т.п. В качестве адреса они могут брать как полный URL, так и голое имя хоста. В результате можно задать целевое окно автонабора следующим регулярным выражением:

//(?i) \W*(?:\w+\:\/\/)?(?:www\.)?(?=\w)(?:{T-REPLACE-RX:/{REF:T@T:|{T-REPLACE-RX:!{URL:HOST}!^www\.!!}|}/([^\w\s\|])/\$1/}{T-REPLACE-RX:/{REF:U@T:|{T-REPLACE-RX:!{URL:HOST}!^www\.!!}|}/^\{.*//})(?:[\:\/#]\S*)?\W* (?:Pale Moon|K-Meleon)$//

Поясню построение этого выражения. Двойные слеши в начале и в конце сообщают KeePass'у, что строка является регулярным выражением. Код {T-REPLACE-RX:!{URL:HOST}!^www\.!!} отбрасывает от доменного имени префикс www, если он есть. Выражения {REF:T@T:|...|} и {REF:U@T:|...|} ищут запись, название которой содержало бы доменное имя, окруженное знаками |. Если запись найдется, то первое выражение превратится в название этой записи (т.е. в список доменов), а второе — в ее логин (т.е. в регулярное выражение, задающее множество доменов). Если запись не найдется, то выражения {REF:T@T:|...|} и {REF:U@T:|...|} останутся самими собой, и в этом случае выражение {T-REPLACE-RX:/.../^\{.*//} превратит результат поиска логина в пустую строку (в случае успешного поиска оно ничего не изменит). Выражение {T-REPLACE-RX:/.../([^\w\s\|])/\$1/} экранирует списке доменов все спецсимволы, кроме знака |. Получившиеся строки — явный список доменов и регулярное выражение — вместе заключаются в скобки, образуя группу. Код (?=\w) перед этой группой (вкупе с кодом после нее) предписывает выбирать из группы только строки, начинающиеся алфавитно-цифровым символом (таким образом исключаются пустые строки, а также обрывки кода, полученные при неудачном поиске: {REF:T@T: и }). Выражения (?:\w+\:\/\/)?(?:www\.)? и (?:[\:\/#]\S*)? позволяют опознавать адрес в заголовке независимо от того, содержит ли он протокол, префикс www, порт или путь. Фрагменты  \W* и \W*  означают, что адрес отделен от остальной части заголовка пробелами и, возможно, спецсимволами, наподобие скобок, дефисов и т.п. Коду (?:Pale Moon|K-Meleon)$ соответствует название браузера, расположенное в конце заголовка.

Данное выражение специально устроено так, чтобы рассматривался только последний из адресов, содержащихся в заголовке: тот, который подставлен расширением браузера, а не добавлен злоумышленниками в заголовок фишинговой страницы (однако остается угроза, что сайт изменит заголовок скриптом).

Для плагина WebAutoType целевое окно задается похожим выражением. Оно отличается знаком ^, указывающим на начало строки, а также отсутствием пробелов и разделителей \W* вокруг адреса и отсутствием названия браузера:

//^(?i)(?:\w+\:\/\/)?(?:www\.)?(?=\w)(?:{T-REPLACE-RX:/{REF:T@T:|{T-REPLACE-RX:!{URL:HOST}!^www\.!!}|}/([^\w\s\|])/\$1/}{T-REPLACE-RX:/{REF:U@T:|{T-REPLACE-RX:!{URL:HOST}!^www\.!!}|}/^\{.*//})(?:[\:\/#]\S*)?$//

Чтобы не дублировать эти выражения в каждой записи, они размещены в полях Пароль и URL-ссылка специальной записи <Associations>, а в обычных записях целевые окна автонабора заданы ссылками на эти поля. Поскольку браузеры, заголовок которых содержит адрес, перечисляются в поле Логин этой записи, фрагмент Pale Moon|K-Meleon заменен выражением, которое ссылается на это поле и экранирует спецсимволы: {T-REPLACE-RX:/{USERNAME}/([^\w\s\|])/\$1/}. Чтобы в полях записи <Associations> не произошло преждевременных преобразований, символ { в выражениях заменен последовательностью {{}. Соответственно, к ссылкам на эти поля применено преобразование, восстанавливающее символ {. Таким образом, в обычных записях заголовок браузера, содержащий адрес страницы, задается выражением {T-REPLACE-RX:/{REF:P@T:<Associations>}/\{\{\}/{/}, а адресная строка, читаемая плагином WebAutoType, — выражением {T-REPLACE-RX:/{REF:A@T:<Associations>}/\{\{\}/{/}.

В параметрах группы domains отключен поиск и автонабор.

Повторю, что во избежание фишинга в разделе Сервис → Параметры → Дополнительно → Автонабор отключены все четыре опции вида Считать запись подходящей....

Операции с прикрепленными файлами

Любая запись в базе KeePass'а может содержать не только текстовую информацию, но и файлы (Дополнительно → Прикрепленные файлы). Разумеется, они хранятся зашифрованными, как и прочие данные. Прикрепленные файлы можно извлекать, сохраняя в отдельное место; можно извлекать во временный каталог с EFS-шифрованием, чтобы открывать и редактировать в сторонних программах. Более того, их можно просматривать в самом KeePass'е, не извлекая: встроенный просмотрщик KeePass'а умеет показывать изображения, html-страницы, текст в формате RTF, простой текст, причем в разных кодировках, а также двоичные файлы в HEX-виде.

К примеру, вы можете вложить в запись сканы документов, а затем просмотривать их через контекстное меню записи: Прикрепленные файлы → Имя_файла.

И это еще не все — KeePass имеет встроенный редактор форматированного текста! Можно редактировать RTF-файл, присоединенный извне, а можно создать его с нуля (Добавить → Прикрепить пустой файл). При создании указывается имя и расширение: в случае *.txt текст будет обычным, в случае *.rtf форматированным. Такой файл становится своеобразным полем, вмещающим большой объем текста, в т.ч. форматированного.

Как просмотр, так и редактирование файлов KeePass'ом выполняется в памяти, без извлечения их на диск.

Все ходы записаны

KeePass хранит не только текущее состояние ваших учетных данных, но и историю их изменений. В любой записи вы можете открыть вкладку История и просмотреть до 10 ее версий, а при необходимости и откатить запись к любой из них. (Кстати, записи <Генератор паролей> это тоже касается: если вы сгенерировали новый пароль, а нужно воспользоваться старым, то это легко сделать.)

Если какая-либо запись слишком объемна (имеет прикрепленные файлы), то история сохранит меньшее число ее версий: общим размером до 6 МБ.

Если вы удалите запись целиком — она всего лишь отправится в группу Корзина, откуда ее всегда можно перетащить обратно. Для безвозвратного уничтожения записи ее следует повторно удалить, когда она в Корзине.

Изменения автоматически сохраняются на диске при блокировке базы, а также после минутного неиспользования KeePass'а.

После каждого сохранения базы создается ее резервная копия. В папке DBases\BackUp для каждой базы хранится 20 ее последних версий.

Как изменить параметры резервного копирования и хранения истории

Вы можете для каждой отдельной базы изменить количество ее версий, хранящихся в папке BackUp: оно задается логином записи <Settings> в группе <service>. Логин 0 отключает резервное копирование данной базы.

Чтобы полностью отказаться от резервного копирования, отключите опцию Разрешен в окне Сервис → Триггеры → Автоматически создавать резервную копию.

Чтобы отказаться от автосохранения изменений, отключите опцию Разрешен в триггере Автоматически сохранять изменения.

Параметры хранения истории и использования корзины задаются в настройке базы (Файл → Параметры базы данных).

Если вы захотите облегчить базу, удалив из нее всю историю, — временно запретите синхронизацию, смените пароль на облачном хранилище и в соответствующей записи, удалите корзину, удалите неиспользуемые значки (Сервис → База данных → Удалить...), удалите из истории «записи старше 0 дней» и информацию об удаленных объектах (Сервис → База данных → Обслуживание...), и наконец, замените файл базы в облачном хранилище и на всех синхронизируемых устройствах и разрешите синхронизацию.

Как это настроено

В базе параметры хранения истории и использования корзины оставлены по умолчанию. Чтобы задать число хранимых версий базы, создана запись <Settings> с логином 20.

Триггер Автоматически сохранять изменения приведен в настройке синхронизации. Там же приведен триггер Автоматически активировать базу, необходимый для корректного резервного копирования при нескольких открытых базах, он должен располагаться выше других.

Создан триггер Автоматически создавать резервную копию:

  • событие: Сохранен файл базы данных, фильтр: пусто;
  • условия:
    • Строка:
      • строка: {DB_DIR},
      • операция: Равно,
      • значение: {APPDIR}{ENV_DIRSEP}DBases;
    • Строка:
      • опция Отрицание включена,
      • строка: {REF:U@T:<Settings>},
      • операция: Равно,
      • значение: 0;
  • действие: Выполнить команду/ссылку:
    • файл/ссылка: %windir%\System32\wscript.exe,
    • аргументы: "{APPDIR}\Scripts\BackUp.js" "{DB_PATH}" {T-REPLACE-RX:/{REF:U@T:<Settings>}/^(.*\D.*|)$/20/},
    • опция Ждать выхода включена.

Этот триггер расположен ниже триггера Автоматически активировать базу, но выше триггера Автоматически синхронизировать. Благодаря этому при автосинхронизации на диске дополнительно сохраняется промежуточное состояние базы: после локальных изменений, но до синхронизации.

Для для резервного копирования используется скрипт BackUp.js:

var dbPath = WScript.Arguments(0);
var backUpCount = +WScript.Arguments(1);

var FSO = WScript.CreateObject("Scripting.FileSystemObject");

var file = FSO.getFile(dbPath);
if (file.Size == 0) {
	WScript.Quit();
}

var backUpDir = FSO.GetAbsolutePathName(file.ParentFolder) + "\\BackUp";
if (!FSO.FolderExists(backUpDir)) {
	FSO.CreateFolder(backUpDir);
}

var d = new Date();
var toXX = function(x) {return x < 10 ? "0" + x : x;}
var prefix = d.getUTCFullYear()
		+ "." + toXX(d.getUTCMonth() + 1)
		+ "." + toXX(d.getUTCDate())
		+ "-" + toXX(d.getUTCHours())
		+ "." + toXX(d.getUTCMinutes())
		+ "." + toXX(d.getUTCSeconds())
		+ "-UTC-";

file.Copy(backUpDir + "\\" + prefix + file.Name, true);

var files = [];
for (var en = new Enumerator(FSO.GetFolder(backUpDir).Files);
		!en.atEnd(); en.moveNext()) {
	var fileName = en.item().Name;
	if (fileName.length == prefix.length + file.Name.length
			&& fileName.slice(prefix.length) == file.Name) {
		files.push(en.item());
	}
}
files.sort(function(f1, f2) {
	return f1.Name < f2.Name ? -1 : (f1.Name > f2.Name ? 1 : 0);
});
for (var i = 0; i < files.length - backUpCount; ++i) {
	files[i].Delete();
}
Вариант резервного копирования без внешнего скрипта

Можно обойтись без скрипта BackUp.js. Понадобится лишь изменить в триггере Автоматически создавать резервную копию действие Выполнить команду/ссылку:

  • файл/ссылка: %comspec%,
  • аргументы: /c "for %i in ("{DB_PATH}") do if "%~zi" GTR "0" (md "{DB_DIR}\BackUp"& copy "%~i" "{DB_DIR}\BackUp\{DT_UTC_YEAR}.{DT_UTC_MONTH}.{DT_UTC_DAY}-{DT_UTC_HOUR}.{DT_UTC_MINUTE}.{DT_UTC_SECOND}-UTC-%~nxi" /y& for /f "skip={T-REPLACE-RX:/{REF:U@T:<Settings>}/^(.*\D.*|)$/20/} tokens=*" %X in ('dir "{DB_DIR}\BackUp\*-UTC-%~nxi" /b /o:-n') do del "{DB_DIR}\BackUp\%X" /q)",
  • опция Ждать выхода включена;
  • стиль окна: Скрытое.

Подобный способ предложен в официальном руководстве.

Однако вариант со скриптом BackUp.js более удобен при жесткой настройке Comodo Internet Security.

Этот триггер работает только для баз, расположенных непосредственно в папке DBases. Он срабатывает после сохранения, а не перед, на случай если открыто несколько баз и нажимается кнопка Сохранить все.

Дополнительная настройка

Ваш мастер-пароль по-настоящему сложен? Уверены, что даже часть его никогда не попадет в хакерские словари? Прибегнем к небольшой подстраховке: в свойствах базы (Файл → Параметры базы данных → Безопасность) усложним трансформацию ключа. Там же можно рассчитать параметры, чтобы не перегнуть палку, сделав открытие и сохранение базы чересчур медленным. Таким образом, KeePass способен усилить защиту небезупречных паролей. Но злоупотреблять этим не будем: сложность и секретность мастер-пароля — наше все.

Для трансформации ключа вместо AES-KDF выбрана функция Argon2, которая активно использует память и тем самым противостоит подбору пароля на асиках. Однако вместе с тем Argon2 более резко замедляет открытие базы на мобильных устройствах. В качестве компромисса заданы 10 итераций, 10 МБ и разрешено распараллеливание на 2 потока.

Чтобы затруднить кражу данных из самой программы, в ней запрещены некоторые опасные операции. Для этого в окне Сервис → Параметры → Политика отключены опции: Экспорт, Экспорт — без ключа, Печать, Печать — без ключа, Копирование записей целиком и Изменение мастер-ключа — без ключа. На вкладке Безопасность включена блокировка после 5 минут общего бездействия, при переключении пользователя, при переходе в спящий режим и при изменении режима удаленного доступа. На вкладке Интерфейс установлено нулевое значение опции Запоминать недавно использованные файлы.

Чтобы сделать интерфейс чуть дружественнее, попробуем заменить буквенные кнопки пиктограммами: отключим опцию Разрешен в триггере Добавить кнопки на панель инструментов (буквы) и включим в триггере Добавить кнопки на панель инструментов (пиктограммы), затем перезапустим KeePass. Результат будет зависеть от системных шрифтов.

Импорт базы данных

Если вы уже пользуетесь каким-нибудь менеджером паролей, в т.ч. KeePass'ом, то скорее всего, накопили много сохраненных паролей. Их нетрудно перенести в нашу новую базу.

Экспортируем пароли из прежнего менеджера в файл, а затем откроем KeePass и импортируем этот файл в предложенную базу (Файл → Импорт). При этом важно правильно указать формат файла и каким менеджером паролей он был создан. Если KeePass спросит о способе импорта, выберем вариант Новые идентификаторы.

Однако для записей, которые либо импортированы из сторонней базы, либо созданы не по шаблонам, не будет работать усложнение автонабора и поддержка эквивалентных доменов. Исправить такие записи можно разными способами:

Быстрая XML-замена

Можно одним махом преобразовать все записи, у которых автонабор никак не настроен. В большинстве случаев именно такие записи и требуется исправлять.

Параметры автонабора в записях, подлежащих преобразованию

Откроем окно Сервис → База данных → XML-замена и выполним замену с параметрами:

  • Узлы дерева: //Entry/AutoType
  • Действие: Заменить данные
  • Данные: Внешний XML
  • Искать: <AutoType>\s*<Enabled>True<\/Enabled>\s*<DataTransferObfuscation>0<\/DataTransferObfuscation>\s*<\/AutoType>
  • Заменить на: <AutoType><Enabled>True</Enabled><DataTransferObfuscation>1</DataTransferObfuscation><Association><Window>{T-REPLACE-RX:/{REF:P@T:&lt;Associations&gt;}/\{\{\}/{/}</Window><KeystrokeSequence /></Association><Association><Window>??:URL:{T-REPLACE-RX:/{REF:A@T:&lt;Associations&gt;}/\{\{\}/{/}</Window><KeystrokeSequence /></Association></AutoType>
  • опция Регулярное выражение включена.

В результате преобразуется каждая запись, в которой все параметры автонабора были оставлены по умолчанию (т.е. автонабор разрешен, последовательность не переопределена, усложнение отключено, ассоциаций с окнами нет). В таких записях включится усложнение и добавится поддержка эквивалентных доменов, а остальные записи останутся нетронутыми.

Выборочная XML-замена

Бывает особые ситации, когда предыдущий способ неприменим, например:

  • нужно исправить записи, в которых параметры автонабора уже изменены,
  • или не нужно изменять некоторые записи с параметрами автонабора по умолчанию,
  • или где-то требуется лишь включить усложнение автонабора, а где-то лишь добавить поддержку эквивалентных доменов.

Тогда создадим в базе группу toImprove и переместим в нее записи, которые нужно отредактировать (можно перетаскивать как записи, так и целые группы с подгрупами).

Чтобы включить усложнение автонабора, откроем окно Сервис → База данных → XML-замена и выполним замену с параметрами:

  • Узлы дерева: //Group[Name="toImprove"]//Entry/AutoType/DataTransferObfuscation
  • Действие: Заменить данные
  • Данные: Текст
  • Искать: 0
  • Заменить на: 1

Чтобы добавить поддержку эквивалентных доменов, выполним XML-замену с параметрами:

  • Узлы дерева: //Group[Name="toImprove"]//Entry/AutoType
  • Действие: Заменить данные
  • Данные: Внешний XML
  • Искать: </AutoType>\Z
  • Заменить на: <Association><Window>{T-REPLACE-RX:/{REF:P@T:&lt;Associations&gt;}/\{\{\}/{/}</Window><KeystrokeSequence /></Association><Association><Window>??:URL:{T-REPLACE-RX:/{REF:A@T:&lt;Associations&gt;}/\{\{\}/{/}</Window><KeystrokeSequence /></Association></AutoType>
  • опция Регулярное выражение включена.

Затем расформируем группу toImprove и удалим ее.

Ручное редактирование

Если «неправильных» записей одна-две, их можно отредактировать по отдельности. Чтобы задействовать двойное усложнение автонабора, нужно включить соответствующую опцию на вкладке Автонабор. Чтобы включить поддержку эквивалентных доменов, нужно на этой же вкладке нажать Добавить и вставить в поле Целевое окно строку {T-REPLACE-RX:/{REF:P@T:<Associations>}/\{\{\}/{/}, затем повторно нажать Добавить, переключиться в режим Match against the URL и вставить в поле Target URL строку {T-REPLACE-RX:/{REF:A@T:<Associations>}/\{\{\}/{/}.

Ручное редактирование записей, импортированных в KeePass

Если новые записи требуют нестандартного автонабора, то переместим их в группу, которой назначена нужная последовательность: записи Google и Microsoft в группу 2-страничные, записи Mail.ru в одноименную группу, другие почтовые записи в группу Почта и т.д.

Часть 2

Комментарии и отзывы

Добавляя комментарий, ознакомьтесь с Правилами сообщества