dancingrobot84 19.07.2011 16:35
Qt Software — Passmate - yet another хранилка паролей
Здравствуйте, дорогие любители пингвинов и прочей живности!
Сегодня на ваш суд я бы хотел представить свою небольшую, но симпатичную программку для хранения паролей. На днях с моей легкой руки она уже заимела версию 0.5.1, которую вполне можно применять промышленно:) Вобщем, прошу под кат всех, кого мне удалось заинтриговать.
И что она умеет?
Passmate сохраняет пароли и файлы в зашифрованном виде в некотором storage-файле. Используется алгоритм шифрования AES256, соответственно одну вещь запомнить придется - это ключ к storage (который еще и придумать надо).
Что мне нужно, чтобы она работала?
Нужно всего ничего: libpcre, openssl и Qt4. Последнее можно вычеркнуть любителям консольных программ, ибо и такая версия имеется.
Это понятно, а вот как ее установить? Apt-get, не?
К сожалению, пока не :( Пока даже ebuild для своей любимой Gentoo я еще не успел сделать из-за отсутствия времени. Но исходный код Passmate находится на Github'e, а значит можно просто его оттуда загрузить и собрать все самому. Благо, что с помощью CMake этот процесс сильно упрощается. Подробную инструкцию можно найти здесь в разделе Compiling.
Апдейт: Пакет для Debian/Ubuntu здесь.
Зачем люди что-то придумывают? Я вот пользуюсь <�имя программы> и горя не знаю!
Это же отлично, что у вас есть подходящая программа! Мне когда-то пришлось задуматься над вопросом сохранности паролей и ни одна из известных программ не подошла. Взять хотя бы KeePassX. Я вот не люблю кучу полей, форм, таблиц... Хотелось чтобы все было просто и красиво. Поэтому и решил DIY.
Вот, собственно, что у меня вышло.
На последок
Чего бы мне хотелось? Мне бы хотелось услышать гневных пользователей, ВНЯТНО говорящих об эпических (не меньше) ошибках в данной программе. Мне бы хотелось увидеть в pull-requestах смелых и терпеливых девелоперов, готовых присоединиться к разработке и копанию моего
Т.к. я немного взволнован, то мог упустить что-то важное или не очень. Оставляйте комментарии к этому посту или пишете мне сразу на , я постараюсь на все вопросы ответить.
Спасибо за внимание!
Qt-Apps page
1. Это же отлично, что у вас есть plain text + openssl + пара функций в .bashrc. а еще лучше память!:)
2. Холиварная тема. Каждый использует то, что ему нравится. Мне нравится CMake.
2. Холиварная тема. Каждый использует то, что ему нравится. Мне нравится CMake.
специально заточенный для сборки qt-приложений?
Оно какое-то кривое. CMake гибче.
У qmake весьма слабенькая и хреновенькая система сборки, на самом деле, от которой они сами подумывают отказываться. Пруфы на кутилабсовых блогах.
Пакет сделал для ubuntu, сейчас протестирую его сборку в чистом окружении в squeeze.
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_ubuntu.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_ubuntu.deb
Хорошо:) У меня уже почти ночь, скоро буду спать. Завтра если буду свободен заведу страничку на qt-apps и ваш пакет мне очень пригодится. Спасибо!
CMake Error at src/qt/CMakeLists.txt:21 (execute_process):
execute_process called with no value for WORKING_DIRECTORY.
Только что появилось
execute_process called with no value for WORKING_DIRECTORY.
Только что появилось
В общем ошибка странноватая, на "грязном" окружении не проявилась, на чистом - проявилась
Откатился на https://github.com/dancingrobot84/passmate/commit/a0f5e69ee5f868af0d53d18e051d195ce3ca4e84 и всё ок
Откатился на https://github.com/dancingrobot84/passmate/commit/a0f5e69ee5f868af0d53d18e051d195ce3ca4e84 и всё ок
Мда, интересная ошибка... Правильно сделали, что откатились - последние коммиты в основном README да кросскомпиляции под винду касались. Можно было прям до самого тега 0.5.1 даже откатится:)
В общем сделал чистые пакеты для squeeze 32/64 бита и для lucid, тоже 32/64.
http://i.libc6.org/media/opensource/
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_squeeze.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_amd64_squeeze.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_lucid.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_amd64_lucid.deb
http://i.libc6.org/media/opensource/
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_squeeze.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_amd64_squeeze.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_lucid.deb
http://i.libc6.org/media/opensource/passmate_0.5.1-1_amd64_lucid.deb
Большое спасибо! Сейчас добавлю их на страничку в Qt-Apps.
http://i.libc6.org/media/opensource/passmate_0.5.1-1_i386_debian.deb
пакет для debian, сборка протестирована в чистом окружении
Директория debian/ https://github.com/librarian/passmate-debian
пакет для debian, сборка протестирована в чистом окружении
Директория debian/ https://github.com/librarian/passmate-debian
до читал до конца
поржал.
у тебя программа с тремя кнопочками и аудиторией в два с половиной человека. или ты туда собираешь встроить функционал по управлению реактором атомной станции в следующей версии? :)
более того, красивое имя занято ет ановер виндоус хренью
Мне бы хотелось увидеть в pull-requestах смелых и терпеливых девелоперов, готовых присоединиться к разработке и копанию моего быдлокода. Мне бы хотелось увидеть во Входящих в Gmail гениальные и интересные идеи для Passmate. Вот чего бы мне хотелось.
поржал.
у тебя программа с тремя кнопочками и аудиторией в два с половиной человека. или ты туда собираешь встроить функционал по управлению реактором атомной станции в следующей версии? :)
более того, красивое имя занято ет ановер виндоус хренью
У Линуса когда-то тоже была программа с аудиторией в несколько человек. Linux называется. Насчет атомной станции - вряд ли, я не настолько силен в физике к сожалению:(
Жаль что имя занято, я не знал. Значит придется связываться с автором сей программы и что-то решать.
Жаль что имя занято, я не знал. Значит придется связываться с автором сей программы и что-то решать.
У Линуса когда-то тоже была программа с аудиторией в несколько человек. Linux называется.
о'рили? это каким ж надо обладать самолюбием, чтобы сравнивать свой хелловорлд из ста строк с ядром линукса.
Жаль что имя занято, я не знал. Значит придется связываться с автором сей программы и что-то решать.
аааа, я понял, ты меня троллишь
Попробуйте посмотреть в сторону нашего проекта — http://leechcraft.org , там тоже кути, симейк, плюсы, немного буста и много-много амбиций и идей. И мало разработчиков :)
Ебилды есть в rion, советую 9999, анмаски в Documentation оверлея :)
Ебилды есть в rion, советую 9999, анмаски в Documentation оверлея :)
Я о вас слышал:)
Хорошо, я постараюсь глянуть поподробнее, но не могу ничего обещать - основной работы куча.
Хорошо, я постараюсь глянуть поподробнее, но не могу ничего обещать - основной работы куча.
Это как раз понятно, времени редко когда выделяется достаточно :)
Поглядите, в общем, если что — связывайтесь, как вам удобнее :)
Поглядите, в общем, если что — связывайтесь, как вам удобнее :)
Очень понравилось изложение статьи легко,ненавязчиво,располагающе :)
рассказывай, какой генту-тег ставить, соберу для агилии тулзу твою
при абсолютно одинаковом наборе софта и скрипте сборки на x86_64 оно собралось, а на i686 — нет:
-- Found Qt-Version 4.7.3 (using /usr/bin/qmake)
CMake Error at src/qt/CMakeLists.txt:21 (execute_process):
execute_process called with no value for WORKING_DIRECTORY.
-- Configuring incomplete, errors occurred!
-- Found Qt-Version 4.7.3 (using /usr/bin/qmake)
CMake Error at src/qt/CMakeLists.txt:21 (execute_process):
execute_process called with no value for WORKING_DIRECTORY.
-- Configuring incomplete, errors occurred!
оно каким-то волшебным образом мимо make лезет :)
-- Build files have been written to: /tmp/mkpkg_tmp.fat0troll/passmate/passmate.src/passmate.src/bin
всё :)
-- Build files have been written to: /tmp/mkpkg_tmp.fat0troll/passmate/passmate.src/passmate.src/bin
всё :)
Это ниже в комментах народ заказывал, чтобы можно было собирать отдельно CLI или Qt версии. Там просто к CMake надо флажок добавить:)
ура, вы ещё походу и make install запилили :-)
http://packages.agilialinux.ru/search.php?lname=passmate — добро пожаловать в клуб :)
http://packages.agilialinux.ru/search.php?lname=passmate — добро пожаловать в клуб :)
Ага, запилил. Замечательно:) Спасибо большое за пакетики:)
Выпадающий список?
Ну можно было как минимум 5 популярных выводить на формочку в виде кнопок.
Ну можно было как минимум 5 популярных выводить на формочку в виде кнопок.
Как я написал уже ниже, кроме того, что выпадающий список хорошо экономит место на экране, по нему довольно удобно искать записи - достаточно написать первые несколько букв.
Насчет 5ти популярных. Затея, конечно, интересная, но если выводить названия на кнопках, то они будут занимать много места на экране. Если прикрутить иконки, то не каждому захочется их расставлять для своих записей (я точно не буду). Если у вас есть более оптимальная версия предложенной фичи я был бы рад послушать:)
Насчет 5ти популярных. Затея, конечно, интересная, но если выводить названия на кнопках, то они будут занимать много места на экране. Если прикрутить иконки, то не каждому захочется их расставлять для своих записей (я точно не буду). Если у вас есть более оптимальная версия предложенной фичи я был бы рад послушать:)
Просто я использую keepassx как раз из-за удобного (для меня) представления паролей. У меня есть группы по имени сервера, в группе туча записей для каждого пользователя. С выпадающим списком, в котором всё свалено в кучу, я сойду с ума.
Я никогда не использовал хранилку для пары паролей от нескольких сервисов, поэтому мне трудно мыслить маленьким количеством записей.
Я никогда не использовал хранилку для пары паролей от нескольких сервисов, поэтому мне трудно мыслить маленьким количеством записей.
Извините конешно...но! а где интерфейс самой проги?! на скринах вижу:
1) создание БД паролей
2) создание записи в БД
3) создание записи в файл
4) удаление записи
5) и вроде как открытие файла БД паролей
Пожелания:
1) хотелось бы автозаполнение записей
n) хотелось бы такюже для девайса n
n + 1) хотелось бы категории и теги
ЗЫ... и поиск тоже =)
ЗЗЫ... это не троллинг...наоборот я искренне восхищаюсь людьми, которые создают что то своё!
1) создание БД паролей
2) создание записи в БД
3) создание записи в файл
4) удаление записи
5) и вроде как открытие файла БД паролей
Пожелания:
1) хотелось бы автозаполнение записей
n) хотелось бы такюже для девайса n
n + 1) хотелось бы категории и теги
ЗЫ... и поиск тоже =)
ЗЗЫ... это не троллинг...наоборот я искренне восхищаюсь людьми, которые создают что то своё!
Так, давайте по порядку:)
Для начала, программа умеет сохранять в своей базе данных пароли и файлы. При этом у каждого пароля или файла есть заголовок. Первый скриншот - это главное окно; в комбобоксе находятся названия паролей и файлов. При выборе какого-либо названия в зависимости от того, что за ним скрывается (пароль или файл) показывается либо текстовое поле с точками вместо пароля, либо то, что можно видеть на последнем скриншоте - две кнопки, по которым можно посмотреть или сохранить зашифрованный ранее файл.
Соответственно, два скриншота, на которых подсвечены маленькие кнопки (generate password и choose file) являются тем, что вы видите, когда хотите добавить в базу новый пароль или файл соответственно.
Теперь по поводу предложений.
1) Автозаполнение каких записей вам бы хотелось? Я немного не понял
2) То же самое с девайсом. Объясните пожалуйста поподробнее:)
3) Категории и теги. И поиск сразу. Вот. Начнем с небольшой предистории.
Когда-то я пользовался KeePassX. Там есть поиск, теги и куча прочих вещей. Проблема была в том, что мне все это добро было не нужно, так как паролей у меня не очень много (сейчас около 70 штук) и все они обычно совпадали с названиями сайтов, на которых я регестрировался. Когда я делал Passmate, мне хотелось, чтобы все было предельно просто - открыл окно, постучал по комбо первые буквы сайта, нажал на кнопку "копировать" и закрыл окно. Поэтому простейший поиск уже реализован создателями QComboBox. Насчет тегов и категорий. Это неплохая вещь, но в том виде, в котором я себе их представляю они только "утяжелят" интерфейс программы. Было бы неплохо, если бы вы попробовали нарисовать хотя бы черновой прототип того, как это будет выглядеть по-вашему.
Спасибо вам за комментарий и если вы дочитали это до конца:)
Для начала, программа умеет сохранять в своей базе данных пароли и файлы. При этом у каждого пароля или файла есть заголовок. Первый скриншот - это главное окно; в комбобоксе находятся названия паролей и файлов. При выборе какого-либо названия в зависимости от того, что за ним скрывается (пароль или файл) показывается либо текстовое поле с точками вместо пароля, либо то, что можно видеть на последнем скриншоте - две кнопки, по которым можно посмотреть или сохранить зашифрованный ранее файл.
Соответственно, два скриншота, на которых подсвечены маленькие кнопки (generate password и choose file) являются тем, что вы видите, когда хотите добавить в базу новый пароль или файл соответственно.
Теперь по поводу предложений.
1) Автозаполнение каких записей вам бы хотелось? Я немного не понял
2) То же самое с девайсом. Объясните пожалуйста поподробнее:)
3) Категории и теги. И поиск сразу. Вот. Начнем с небольшой предистории.
Когда-то я пользовался KeePassX. Там есть поиск, теги и куча прочих вещей. Проблема была в том, что мне все это добро было не нужно, так как паролей у меня не очень много (сейчас около 70 штук) и все они обычно совпадали с названиями сайтов, на которых я регестрировался. Когда я делал Passmate, мне хотелось, чтобы все было предельно просто - открыл окно, постучал по комбо первые буквы сайта, нажал на кнопку "копировать" и закрыл окно. Поэтому простейший поиск уже реализован создателями QComboBox. Насчет тегов и категорий. Это неплохая вещь, но в том виде, в котором я себе их представляю они только "утяжелят" интерфейс программы. Было бы неплохо, если бы вы попробовали нарисовать хотя бы черновой прототип того, как это будет выглядеть по-вашему.
Спасибо вам за комментарий и если вы дочитали это до конца:)
Кста, из всего текста так и не понял -- а что "файл" делает? В файлах хранятся отдельные группы паролей?
А не сделать ли это приложение расширением к браузеру или к Gnome Shell?
А не сделать ли это приложение расширением к браузеру или к Gnome Shell?
Нет, в файлах хранятся файлы:) Я, например, делаю так: создаю текстовый файл на компьютере, записываю туда информацию (например, о банковской карте - там много паролей и кодов), потом добавляю этот файл в Passmate и удаляю его (файл) с компьютера. Теперь его содержимое хранится у меня в базе в зашифрованном виде.
Расширение к браузеру - вы имеете ввиду автозаполнение полей в браузере или что-то вроде LastPass? С третьим гномом, к сожалению, не знаком, поэтому в ближайшем будущем не смогу сделать.
Было бы неплохо, если бы вы попробовали нарисовать хотя бы черновой прототип того, как это будет выглядеть по-вашему.
Это должно выглядеть как в gmail ...несколько тегов цепляется к одной записи. Скрин прилогается.
Автозаполнение каких записей вам бы хотелось? Я немного не понял
Ниже в комментах тему расскрыли.
То же самое с девайсом. Объясните пожалуйста поподробнее:)
ну допустим под айфон, или любое другое устройство под которым можно выйти в интеренеты.
Теги - отлично, надо подумать как бы их так же удобно, как в Gmail сделать.
Автозаполнение (полей в браузере, если я правильно понял) - тоже бодрая идея. Я пользуюсь Chromium, так что если будет время, то автозаполнение сделаю сначала для него.
Девайсы - к сожалению, не смогу. У меня нет ни айфона, ни чего-нибудь с андроидом/симбианом/миго. Есть шестилетней давности Sony Ericsson, но это не дело.
Я был бы рад, если бы вы могли присоединится к разработке какой-нибудь из этих фич в свободное время:)
Автозаполнение (полей в браузере, если я правильно понял) - тоже бодрая идея. Я пользуюсь Chromium, так что если будет время, то автозаполнение сделаю сначала для него.
Девайсы - к сожалению, не смогу. У меня нет ни айфона, ни чего-нибудь с андроидом/симбианом/миго. Есть шестилетней давности Sony Ericsson, но это не дело.
Я был бы рад, если бы вы могли присоединится к разработке какой-нибудь из этих фич в свободное время:)
Касательно гуёв: было бы замечательно, если бы при повторном запуске программы (то есть когда одна копия уже висит в памяти) переводить фокус на уже запущенную копию (или разворачивать её из трея, если она там висит).
Для меня это имеет критическое значение - трея у меня как такового нет (как и вообще панелей), было бы очень удобно запускать эту тулзу по хоткеям.
Для меня это имеет критическое значение - трея у меня как такового нет (как и вообще панелей), было бы очень удобно запускать эту тулзу по хоткеям.
Спасибо! Я тоже думал об этой возможности, но пока не знаю, как ее реализовать.
Unix-way: при запуске программы создаем какой-либо файл, говорящий о том, что программа работает, например, /var/run/passmate.pid, при выходе - удаляем его.
Соответственно при запуске программы надо проверять существует ли этот файл, и, если существует, то искать процесс запущенной программы и отсылать ему сообщение о том, что надо показаться на экране.
Как-то так.
Соответственно при запуске программы надо проверять существует ли этот файл, и, если существует, то искать процесс запущенной программы и отсылать ему сообщение о том, что надо показаться на экране.
Как-то так.
Сейчас контроль экземпляров реализован одним из способов, которые советую сами девелоперы Qt - через QSharedMemory. В эту память можно писать всякие интересные данные и я думаю сделать фичу с "подъемом" приложения как раз с помощью мониторинга этого shared куска памяти. Если не пройдет - будет старый добрый unix way:)
Если вы это реализуете, то я, скорее всего, переползу с, по моему мнению, монструозного keepassx на вашу программу.
Ах да, еще было бы полезно реализовать поддержку хоткеев.
Тогда эта комбинация становится крайне быстрой и удобной:
1. развернул (запустил) программу
2. фокус сразу на поле выбора пароля - быстро выбрал нужный ресурс
3. нажал хоткей (ctrl+c, например), чтобы скопировать пароль
4. нажал эскейп, что бы закрыть программу
Ах да, еще было бы полезно реализовать поддержку хоткеев.
Тогда эта комбинация становится крайне быстрой и удобной:
1. развернул (запустил) программу
2. фокус сразу на поле выбора пароля - быстро выбрал нужный ресурс
3. нажал хоткей (ctrl+c, например), чтобы скопировать пароль
4. нажал эскейп, что бы закрыть программу
Сделано. Пересоберите с последнего коммита. Поскольку фокусом управляет сам WM, могу контролировать через Qt только разворот из трея.
Да, и, пожалуй, стоит переназначить очередность фокуса компонентов - при появлении формы в фокусе должен быть выпадающий список с названиями ресурсов, а не кнопка добавить, ведь пользователь чаще ищет пароль, чем добавляет.
Ну и вторым в очередь поставить поле, где содержится пароль - что бы сразу же после выбора ресурса по табу выбрать поле пароля и нажать Ctrl+C.
Ну и вторым в очередь поставить поле, где содержится пароль - что бы сразу же после выбора ресурса по табу выбрать поле пароля и нажать Ctrl+C.
Ух ты! Круть. Сам постоянно с подобным сталкивался. Когда совсем задолбался - сделал скрипт-генератор паролей, который сначала спрашивал для чего этот пароль нужен, а затем выводил пароль и вывод отправлял в файл (вместе с указанием, от чего этот пароль). Про гуй были планы, а тут оказывается такое есть. Спасибо!
Пакетик в AUR уже кто-то оформил?
Пакетик в AUR уже кто-то оформил?
Пакетик в AUR, возможно, будет на следующей неделе, когда с отдыха вернется мой друг-арчевод:)
сделайте интеграцию с браузером для автозаполнения паролей на сайтах. плагин или как то еще - домашний каталог ведь один ;) IMHO это единственное что не хватает в стандалоне хранилках.
А я придумал килер фичу, твоей килер фичи — авторизация по ключам.
Есть over kill фича твоей фичи - правила безопасности компании, например.
Т.е. есть политика безопасности дающая человеку доступ по ssh с обычным паролем? (привет welinux.ru:22) С точки зрения безопасности, да и удобства, доступ по ключу лучше, хотя может быть кто-то до сих пор использует SSHv1 Ну это и не главное. Насчёт буфера, а зачем мне программа заменяющая содержимое моего буфера без спроса (это такой тонкий намёк☺). Хотя сама идея вставки пароля из буфера в ssh (!11111) это гм, некруто.
Хотя вот ещё пример, политика безопасности компании, например, может диктовать не стандартный порт для ssh.
Хотя вот ещё пример, политика безопасности компании, например, может диктовать не стандартный порт для ssh.
Может кто на AUR закинет. А то время нет, лето, а попробовать хотелось бы.
Не совсем по существу.
Пока даже ebuild для своей любимой Gentoo я еще не успел сделать из-за отсутствия времени.
У тебя хватило времени на оформление заметки со скринами и написание кучи каментов, но написать десяток строчек в ебилд для системы, которой сам же и пользуешься нет времени?!
Кроме написания десятка строчек надо еще знать, какие строчки писать. Я никогда не собирал пакеты ни под генту, ни под другие дистрибутивы.
Окей, не обязан. Ну хоть бы make install поддержал, чтобы не пришлось вручную за тебя файлы рассовывать, а заодно и поддержал бы простуйю возможность «искаропки» собирать только 1 вариант (cli|gui) или оба.
Сделал простую инсталляцию в /usr/bin. Также, скармливая CMake опции -DWITH_CLI, -DWITH_QT и -DWITH_TESTS можно компилить соответственно только консольную, только кутэшную версии или только тесты. Или все сразу:)
Да, и еще добавил флаг -DWITH_ALL, чтобы собирать все версии вместе с тестами. Тесты при этом, естественно, никуда устанавливаться не будут:)
Спасибо за пакет:) Я не специалист в арчах, но боюсь, что вам придется немного поправить строчку с cmake примерно так:
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_CLI=1 -DWITH_QT=1 -DCMAKE_INSTALL_PREFIX=/usr ..
потому что я немного переделал установку с требованиями самого CMake, а он по умолчанию пихает в /usr/local.
Если в арче бинарники ставятся как в фряхе, в /usr/local/bin, то можете ничего и не править:)
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_CLI=1 -DWITH_QT=1 -DCMAKE_INSTALL_PREFIX=/usr ..
потому что я немного переделал установку с требованиями самого CMake, а он по умолчанию пихает в /usr/local.
Если в арче бинарники ставятся как в фряхе, в /usr/local/bin, то можете ничего и не править:)
алсо, смысл использовать cmake если у qt есть свой
с блекджеком и шлюхамиспециально заточенный для сборки qt-приложений?