GithubHelp home page GithubHelp logo

607011 / qt-sesam Goto Github PK

View Code? Open in Web Editor NEW
77.0 12.0 29.0 25.77 MB

c't SESAM Password Manager (Qt version)

Home Page: http://607011.github.io/Qt-SESAM/

License: GNU General Public License v3.0

C++ 62.86% QMake 2.57% Batchfile 0.03% JavaScript 1.87% CSS 0.12% HTML 0.29% C 32.26%
password-manager security qt cplusplus sesam linux macos windows

qt-sesam's Introduction

Qt-SESAM

SESAM — Super Easy & Secure Authentication Management

Qt-SESAM is a user-friendly application that enables you to generate strong passwords. You can use them for all the services you're using, e.g. websites, accounts, or apps.

The passwords are generated in realtime from service name, user name, a randomly shuffled salt and the master password. For services which don't allow passwords to be changed (e.g. credit cards) Qt-SESAM can also store fixed passwords.

Qt-SESAM has a unique feature which lets you choose the complexity (vertically) and length (horizontally) of the password in a colored widget:

EasySelectorWidget

You can share Qt-SESAM's settings across your computers via a dedicated synchronisation server and a file located on a cloud drive like OwnCloud, Google Drive, Microsoft OneDrive or Dropbox.

This is secure because all of your settings are AES-encrypted with a 256 bit long key and a 128 bit long IV derived from your master password with PBKDF2.

Qt-SESAM supports Windows, Linux and macOS. An Android app compatible to Qt-SESAM is underway.

Download

Important infos

qt-sesam's People

Contributors

607011 avatar cyberfuzzie avatar egbrt avatar marcusroeckrath avatar stefanb2 avatar t-b avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qt-sesam's Issues

Encrypted password export

Define an encrypted export format which allows to share passwords between different password managers.

Flow:

  1. Select passwords to export
  2. Enter transport password / button to generate a complex password
  3. Export to file

Further harden QLineEdit

SecureErase() on QLineEdit seems to be a fake. To really keep the master password from being copied into memory further precautions must be taken:

  • Encrypt password on the fly while typing.
  • Do not allow any memory to be swapped onto disk.

[Suggestion] Add an option to clear the Master password

In the case that you forgot the MP, there appears to be no clean (programmatic) way to reset it, because the change option requires the old password.

I suggest to add an additional option, with an additional prompt, to clear it.

Geometry not restored from .ini file

I see in my .ini file:

[mainwindow]
...
geometry=@Rect(612 115 866 671)

but these values are ignored when main window opens after restart, i.e. main window always pops up with the same default size.

OS: Fedora 22 x86_64, QT 5.5, KF5 5.13, Plasma 5.3

New geometry only saved when main window is closed

Try this

  • start Qt-SESAM
  • resize main window
  • system tray icon menu "Quit" to exit program
  • start Qt-SESAM

It will still show the old main window geometry.

If you CLOSE the main window and then exit the application, it works fine.

HashMaster/main.cpp does not compile on Linux

When compiling on openSUSE 13.2 I get these error messages:

make[1]: Entering directory '/daten/hendriks_dateien/projekte/ctsesam/Qt-SESAM-x86x64-dist/HashMaster'
g++ -c -pipe -O2 -w -std=c++0x -fPIC -DCRYPTOPP_DISABLE_X86ASM -DCRYPTOPP_DISABLE_SSSE3 -DQTSESAM_VERSION="2.0.3" -I. -I../cryptopp -I/usr/lib64/qt5/mkspecs/linux-g++ -o main.o main.cpp
main.cpp: In function ‘int main(int, char*)’:
main.cpp:147:3: error: ‘WIN32_FIND_DATAA’ was not declared in this scope
WIN32_FIND_DATAA findData;
^
main.cpp:147:20: error: expected ‘;’ before ‘findData’
WIN32_FIND_DATAA findData;
^
main.cpp:148:3: error: ‘HANDLE’ was not declared in this scope
HANDLE ff = FindFirstFileA(fname.c_str(), &findData);
^
main.cpp:148:10: error: expected ‘;’ before ‘ff’
HANDLE ff = FindFirstFileA(fname.c_str(), &findData);
^
main.cpp:149:7: error: ‘ff’ was not declared in this scope
if (ff != INVALID_HANDLE_VALUE) {
^
main.cpp:149:13: error: ‘INVALID_HANDLE_VALUE’ was not declared in this scope
if (ff != INVALID_HANDLE_VALUE) {
^
main.cpp:150:9: error: ‘findData’ was not declared in this scope
if (findData.cFileName != nullptr) {
^
main.cpp:153:31: error: ‘findData’ was not declared in this scope
while (FindNextFileA(ff, &findData)) {
^
main.cpp:153:39: error: ‘FindNextFileA’ was not declared in this scope
while (FindNextFileA(ff, &findData)) {
^
Makefile:377: recipe for target 'main.o' failed
make[1]: *
* [main.o] Error 1

It happens with current master sources too.

Separate master password from domain password

The code generates the domain password like so:

const QByteArray &pwd =
  d->domainSettings.domainName.toUtf8() +
  d->domainSettings.userName.toUtf8() +
  masterPassword;

This is great from a security perspective but bad for usability: If I change my master password, I have to reset all passwords for all web sites.

Since the domain password already has a salt, my feeling is that including the master password doesn't add much to security.

Smart copy of user credentials after opening URL

This might work on Windows by hooking the application into the hook chain with SetWindowsHookEx(WH_KEYBOARD_LL, ...) (see the actilog project):

  • In hook function scan for all Ctrl+V events.
  • On first event after pressing the Open URL button: copy user name to clipboard.
  • On the next event copy password to clipboard.
  • On the third event clear the clipboard.

Linux: support for kwallet/gnome-keyring

I know this might be controversial, but it might be nicer for end users if the master password is stored and retrieved from default session secure storage. Under KDE this would be "kwallet5", under GNOME it would be "gnome-keyring".

AFAIU they both offer the same DBUS interface, so IMHO no separate implementation would be required.

Implement legacy password safe

Some services do not allow to change your password. Thus it would be nice to have a user interface through which immutable passwords can be stored and retrieved.

Linux libSESAM build fails on openSUSE

The make fails with following error message:

make[1]: Verzeichnis „/usr/local/src/Qt-SESAM/libSESAM“ wird betreten
g++ -c -pipe -O2 -w -fPIC -D_REENTRANT -DQT_WEBKIT -DCRYPTOPP_DISABLE_X86ASM -DCRYPTOPP_DISABLE_SSSE3 -DQTSESAM_VERSION=\"2.0.3\" -DLIBSESAM_LIBRARY -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_SHARED -I../../../../share/qt4/mkspecs/default -I. -I../../../../include/QtCore -I../../../../include -I../cryptopp -I../cryptopp -I. -o util.o util.cpp
In file included from util.cpp:21:0:
util.h: In function ‘void SafeRenew(T&, T)’:
util.h:35:12: error: ‘nullptr’ was not declared in this scope
   if (a != nullptr)
            ^
util.h: In function ‘void SafeDelete(T&)’:
util.h:44:19: error: ‘nullptr’ was not declared in this scope
   SafeRenew<T>(a, nullptr);
                   ^
Makefile:243: die Regel für Ziel „util.o“ scheiterte
make[1]: *** [util.o] Fehler 1
make[1]: Verzeichnis „/usr/local/src/Qt-SESAM/libSESAM“ wird verlassen
Makefile:78: die Regel für Ziel „sub-libSESAM-make_default-ordered“ scheiterte

SSL handshake occasionally fails even after pinning server's root certificate

Reproduce this behaviour by:

  • Delete serverRootCertificates from settings file.
  • Start Qt SESAM
  • Import server certificate via Extras/Options/Sync; the root certificate must be untrusted.
  • Synchronize to a server.

The SSL handshake erroneously fails sometimes. After a couple of seconds or minutes the error vanishes without further ado. Timeout?

Linux: duplicate "Quit" entry in system tray icon menu

On my Fedora 22 box with KDE Plasma 5 the system tray icon menu looks like this

Uploading QtSESAM-tray-menu-KDEPlasma.png…

As you can see there is a duplicate "Quit" entry at the end. This is not generated by Qt-SESAM, but automatically by the system (it's translation changes when I switch languages).

I'm not sure how to solve this. If this is the case for every Linux user, but not Windows user, then I would suggest to flag the generation of the "Quit" entry with #ifdef WIN32 in the code.

Allow different master passwords

All instances of this app running on different desktop computer or mobile devices should be able to sync their common data by using their own master password.

This could be achieved by public-key cryptography.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.