Как стать автором
Обновить

Импорт KeePass БД паролей в KWallet

Время на прочтение 3 мин
Количество просмотров 13K
Всем привет.

На предприятии где а работаю очень любат всякие штучки для «безопасности» и к сожалению все по винду. Но вот незадача, у меня стоит линукс а мне прислали пароли в БД для KeePass (заметка: не хочу ставить mono приложение KeePass под линукс). Windows виртуальная машина стоит, но держать ее открытой всегда не охота, всетаки память отъедает которой и так не хватает. Вот тогда-то у меня и родилась идея перенести все пароли из этой базы данных для KeePass в мой KWallet.

Кстати, для тех кто не знаком с KWallet немного опишу его. Это программа которая входит в стандартную поставку KDE и предназначена для хранения секретной информации которой пользуются KDE приложения. Здесь у меня хранятся пароли на различных сайтах, ключи доступа и т.п. Иначе говоря это тоже самое что KeePass но под Линукс. И есть одно из существенных преимуществ это то что мне не надо руками копи-пастить пароли в поля для ввода логина и пароля, а программы сами это достают из моего Бумажника, единственное что просят ввести пароль для открытия бумажника если он закрыт. Очень удобно, тем более что это прекрасно интегрируется с приложениями. И я не удивлюсь если Microsoft это вскоре, как и все остальное, скопирует к себе в винду.

Итак продолжим. перенос паролей я подумал сделать как можно проще, а именно экспортировать пароли из KeePass в XML, применить трансформацию в формат XML удобоваримый KWallet и потом импортировать в мой бумажник. Подумал-сделал, тем более что эту статью я пишу дольше чем писал XSLT преобразование.

Кстатит вот оно:
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
  <xsl:template match="/">
      <wallet name="kdewallet">
	<xsl:for-each select="KeePassFile/Root//Group">
	  <folder name="{Name}">
	    <xsl:for-each select="Entry">
	      <map name="{String[Key/text() = 'Title']/Value}">
		  <mapentry name="{String[Key/text() = 'UserName']/Value}"><xsl:value-of select="String[Key/text() = 'Password']/Value"/></mapentry>
	      </map>
	    </xsl:for-each>
	  </folder>
	</xsl:for-each>
      </wallet>
  </xsl:template>
</xsl:stylesheet>


А для преобразования я использовал xsltproc вот этой командой:
xsltproc -o kwallet.xml ./keepas2kwallet.xsl ./keepass.xml


Полученный файлик kwallet.xml успешно импортировал в мой бумажник. И теперь все пароли из KeePass прекрасно живут в моем KWallet бумажнике.

А структура импортированного бумажника получается такой:
  1. KeePass группа это отдельный каталог в KWallet
  2. KeePass заголовок записи это имя соответсвия
  3. KeePass имя пользователя и пароль хранятся в соответствии как есть.



Заметка 1: Хочу подметить что это я сделал для того чтобы пользоваться только нативными приложениями линукс, а не виндовыми программами портированными под Линукс.
Заметка 2: Эту статью я пишу чтобы поделиться с сообществом результатом моего труда, вдруг кому пригодится.

UPD: Эта статья не направлена на рекламу KWallet, и я не пытаюсь кого-нибудь переубедить — дело вкуса. Мне нравится KWallet, я им пользуюсь и поэтому предлагаю вариант импорта. Кто не согласен — Ваше мнение и мое мнение Вы ну никак не поменяете. Не нравится не пользуйтесь. А ежели нравится то...

Пользуйтесь наздоровье
Теги:
Хабы:
+11
Комментарии 11
Комментарии Комментарии 11

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн