На предприятии где а работаю очень любат всякие штучки для «безопасности» и к сожалению все по винду. Но вот незадача, у меня стоит линукс а мне прислали пароли в БД для 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 бумажнике.
- KeePass группа это отдельный каталог в KWallet
- KeePass заголовок записи это имя соответсвия
- KeePass имя пользователя и пароль хранятся в соответствии как есть.
Заметка 1: Хочу подметить что это я сделал для того чтобы пользоваться только нативными приложениями линукс, а не виндовыми программами портированными под Линукс.
Заметка 2: Эту статью я пишу чтобы поделиться с сообществом результатом моего труда, вдруг кому пригодится.
Пользуйтесь наздоровье
ссылка на оригинал статьи http://habrahabr.ru/post/190880/
Добавить комментарий