gui to temporarily save passwords to system-clipboard
Project description
pwclip
""""""
What pwclip is
==============
pwclip is a password management tool. It's main target is having fast and
comfortable access to passwords by storing them for a variable time in the
systems clipboard (copy/paste) buffer.
It basically has two operating modes. One is for operating on yubikeys to
generate uniq responses which might be used as passwords while they can be
generated by that exact yubikey only. The first yubikey found on the system
and the first slot, configured with (HMAC-SHA1) challenge-response, will be
used. For that function Windows is supported (see "Install" section).
The second operating mode does currently only work (as so far tested) on Linux
due to lack of cmdline handling of gpg4win (which i am not sure about and will
go into as soon as i find the time and motivation for that). It can be used to
create a ~/.pwdcrypt file which is gpg encrypted text using either the value of
GPGKEYS as gpg recipients if found in environment otherwise every key within
the users keyring will be used. For password-list managing there is a simple
"import" function. On startup it lookes for a ~/.pwd.yaml file and if found
merged with the already known passwords from the ~/.passcrypt if there is one.
All entrys in ~/.passcrypt will be overridden by the entrys from the
~/.pwd.yaml file. As soon as it has been merged the ~/.pwd.yaml file will be
deleted. See "YAML-Format" section for details.
To catch user input python's Tk (tkinter) library is used to create a simple
password input window. The appropriate response is saved for only 3 seconds
by default to not have it exposed as soon as it's used. The utility also
supports the input of any integer which is then used as timer. Otherwise the
environment is searched for PWCLIPTIME and uses the value of that environment
variable as timer. The timer is used as time in which the received password
stays in the paste buffer bevore its replaced by the previously copied value.
As you may see there is an optional commet which is used as text notification
displayed on the screen if set. Therefor python3's gi notify2 is used which is
another reason for discontinuing python2 support.
I highly encourage you to bind pwclip to a shortcut within your X-Environment
to have access to your stored passwords from within any program. For example
i like binding it to `Super-Middle-Mouse-Button` for the pwclip default mode
and `Strg-Shift-Middle-Mouse-Button` for the yubico mode. On Windows-Systems
you need to create a link for it somewhere. When editing that link you may set
a keyboard shortcut (could not find a nicer solution by now). The target for
that link then whould be "%PYTHONINSTALLDIR%\\scripts\\pwclip.exe".
Last but not least i want to point something out: I've been trying my best
to keep the passwords secure from unwanted access BUT there is !NO GUARANTEE!
that the passwords handled with during runtime are safe from other users
access, especially root access on linux systems (help on that is very welcome).
Please be aware of that.
YAML-Format
===========
\-\-\-
realsystemuser:
\- somename:
\- Som3(rypt!cPass
\- Some optional info to display as popup notification
\- othername:
\- Som3other(rypt!cPass
Installation
============
pwclip requires the "xsel" package on Debian-Like Systems to have access to
copy/paste buffers. On Windows Systems the libusb package must be integrated
to python3 as "USB-Backend". Here should be all infos needed for that:
* https://wiki.ubuntuusers.de/xsel/
* https://sourceforge.net/projects/libusb/
* http://libusb.info/
If you are on a Debian-Like systems, presuming you have my apt repository
deb.janeiskla.de/ubuntu in your sources list, install like:
$ apt-get install pwclip
Installing via pip3
--------------------
You can install this package from the Python Package Index (pyPI) by running:
* ``pip3 install pwclip``
and installing the dependencies (not managed by pip) manually.
Installing from a source distribution archive
---------------------------------------------
To install this package from a source distribution archive, do the following:
1. Extract all the files in the distribution archive to some directory on your
system.
2. In that directory, run: ``python setup.py install``
Usage
=====
Although is was planed as GUI-Program it's also possible to be executed from
terminals. For Windows, Linux and OSX there is an appropriate executable
packed which might be executed like the following examples will show:
GPG-Mode
--------
``pwclip``
If there is an environment variable called GPGKEYS it will use those keys to
encrypt on changes to the password file. To list the password file you may use
the list switch followed by optional search pattern like:
``pwclip -l``
or
``pwclip -l $PATTERN``
as you can see the yaml format tends to be used for multiple user names to
better manage large lists. By default the current users entrys will be listed
only. To have them all listed (or searched for by the above pattern example)
use:
``pwclip -A -l $PATTERN``
To show even passwords in clear text (strongly unrecommanded for obvious
reasons) you may use:
``pwclip -l -s``
Most of the above may be combined.
Yubikey-Mode
------------
``pwclip -y``
The YKSERIAL environment variable is used if found to select the yubikey to use
if more than one key is connected. Otherwise the first one found is chosen.
Likewise it also accepts an option:
``pwclip -y $YKSERIAL``
Both-Modes
----------
To have it wait for a specific time like 5 seconds (bevore resetting the paste
buffer to the previously copied value) the PWCLIPTIME environment variable is
used or also the command accepts that as input:
``pwclip 5``
The timer option can only be privided last on cmdline.
Credits
=======
* Python3 developers & the whole community (farmost those @stackoverflow.com)
* Pyperclip for they excellent Windows & OSX clipboard code
* Yubico (cheap & solid HW-Security-Modules) & python-yubico developers
* GNU Privacy Guard (basic kryptography) & python-gnupg developers
* SonicLux for telling me that a final version cannot and must not be 0.3.3 :D
I hope that this might be somewhat of help or at least be inspiring for own
ideas. You're alway welcome to leave me a message for requests, review or
feature/bugrequests: <d0n@janeiskla.de>
Changelog
=========
0.4.24 (current)
----------------
Released: 2017-08-21
* [W] fixed I/O error wich occours when setting gpg to utf-8 on gpg4win
* [W] fixed path errors and other platform related stuff
* seperated gui from cli via entry-points (experimental)
0.4.20-23
---------
Released: 2017-08-16
* fixed README location
* fixed release date of last release
* some documentation updates
0.4.19
------
Released: 2017-08-16
* merged private libs into ./lib - many changes related to that
lib respectivly:
- ./lib/net:
-- ssh.py module updated to match paramiko changes and some other fixes
-- added functions to do DNS lookups for the (optional) scp backup
function
- ./lib/secrecy/gpg.py
-- fixed passing of command line setting of gpg-key-recipient option
-- [W] fixed path to gnupg home
-- [W] fixed setting wrong keystores (.gpg|.kbx) in windows
-- [W] replaced concatenated string by path.join
-- [W] added passphrase input mode while pinentry is not available
- ./lib/secrecy/passcrypt.py
-- if debugging is enabled the plaintext file is removed no more
- ./__init__.py
-- fixed comment for strange lib include
-- changed wrapper to gereric name
Documentation
=============
http://packages.python.org/pwclip/
""""""
What pwclip is
==============
pwclip is a password management tool. It's main target is having fast and
comfortable access to passwords by storing them for a variable time in the
systems clipboard (copy/paste) buffer.
It basically has two operating modes. One is for operating on yubikeys to
generate uniq responses which might be used as passwords while they can be
generated by that exact yubikey only. The first yubikey found on the system
and the first slot, configured with (HMAC-SHA1) challenge-response, will be
used. For that function Windows is supported (see "Install" section).
The second operating mode does currently only work (as so far tested) on Linux
due to lack of cmdline handling of gpg4win (which i am not sure about and will
go into as soon as i find the time and motivation for that). It can be used to
create a ~/.pwdcrypt file which is gpg encrypted text using either the value of
GPGKEYS as gpg recipients if found in environment otherwise every key within
the users keyring will be used. For password-list managing there is a simple
"import" function. On startup it lookes for a ~/.pwd.yaml file and if found
merged with the already known passwords from the ~/.passcrypt if there is one.
All entrys in ~/.passcrypt will be overridden by the entrys from the
~/.pwd.yaml file. As soon as it has been merged the ~/.pwd.yaml file will be
deleted. See "YAML-Format" section for details.
To catch user input python's Tk (tkinter) library is used to create a simple
password input window. The appropriate response is saved for only 3 seconds
by default to not have it exposed as soon as it's used. The utility also
supports the input of any integer which is then used as timer. Otherwise the
environment is searched for PWCLIPTIME and uses the value of that environment
variable as timer. The timer is used as time in which the received password
stays in the paste buffer bevore its replaced by the previously copied value.
As you may see there is an optional commet which is used as text notification
displayed on the screen if set. Therefor python3's gi notify2 is used which is
another reason for discontinuing python2 support.
I highly encourage you to bind pwclip to a shortcut within your X-Environment
to have access to your stored passwords from within any program. For example
i like binding it to `Super-Middle-Mouse-Button` for the pwclip default mode
and `Strg-Shift-Middle-Mouse-Button` for the yubico mode. On Windows-Systems
you need to create a link for it somewhere. When editing that link you may set
a keyboard shortcut (could not find a nicer solution by now). The target for
that link then whould be "%PYTHONINSTALLDIR%\\scripts\\pwclip.exe".
Last but not least i want to point something out: I've been trying my best
to keep the passwords secure from unwanted access BUT there is !NO GUARANTEE!
that the passwords handled with during runtime are safe from other users
access, especially root access on linux systems (help on that is very welcome).
Please be aware of that.
YAML-Format
===========
\-\-\-
realsystemuser:
\- somename:
\- Som3(rypt!cPass
\- Some optional info to display as popup notification
\- othername:
\- Som3other(rypt!cPass
Installation
============
pwclip requires the "xsel" package on Debian-Like Systems to have access to
copy/paste buffers. On Windows Systems the libusb package must be integrated
to python3 as "USB-Backend". Here should be all infos needed for that:
* https://wiki.ubuntuusers.de/xsel/
* https://sourceforge.net/projects/libusb/
* http://libusb.info/
If you are on a Debian-Like systems, presuming you have my apt repository
deb.janeiskla.de/ubuntu in your sources list, install like:
$ apt-get install pwclip
Installing via pip3
--------------------
You can install this package from the Python Package Index (pyPI) by running:
* ``pip3 install pwclip``
and installing the dependencies (not managed by pip) manually.
Installing from a source distribution archive
---------------------------------------------
To install this package from a source distribution archive, do the following:
1. Extract all the files in the distribution archive to some directory on your
system.
2. In that directory, run: ``python setup.py install``
Usage
=====
Although is was planed as GUI-Program it's also possible to be executed from
terminals. For Windows, Linux and OSX there is an appropriate executable
packed which might be executed like the following examples will show:
GPG-Mode
--------
``pwclip``
If there is an environment variable called GPGKEYS it will use those keys to
encrypt on changes to the password file. To list the password file you may use
the list switch followed by optional search pattern like:
``pwclip -l``
or
``pwclip -l $PATTERN``
as you can see the yaml format tends to be used for multiple user names to
better manage large lists. By default the current users entrys will be listed
only. To have them all listed (or searched for by the above pattern example)
use:
``pwclip -A -l $PATTERN``
To show even passwords in clear text (strongly unrecommanded for obvious
reasons) you may use:
``pwclip -l -s``
Most of the above may be combined.
Yubikey-Mode
------------
``pwclip -y``
The YKSERIAL environment variable is used if found to select the yubikey to use
if more than one key is connected. Otherwise the first one found is chosen.
Likewise it also accepts an option:
``pwclip -y $YKSERIAL``
Both-Modes
----------
To have it wait for a specific time like 5 seconds (bevore resetting the paste
buffer to the previously copied value) the PWCLIPTIME environment variable is
used or also the command accepts that as input:
``pwclip 5``
The timer option can only be privided last on cmdline.
Credits
=======
* Python3 developers & the whole community (farmost those @stackoverflow.com)
* Pyperclip for they excellent Windows & OSX clipboard code
* Yubico (cheap & solid HW-Security-Modules) & python-yubico developers
* GNU Privacy Guard (basic kryptography) & python-gnupg developers
* SonicLux for telling me that a final version cannot and must not be 0.3.3 :D
I hope that this might be somewhat of help or at least be inspiring for own
ideas. You're alway welcome to leave me a message for requests, review or
feature/bugrequests: <d0n@janeiskla.de>
Changelog
=========
0.4.24 (current)
----------------
Released: 2017-08-21
* [W] fixed I/O error wich occours when setting gpg to utf-8 on gpg4win
* [W] fixed path errors and other platform related stuff
* seperated gui from cli via entry-points (experimental)
0.4.20-23
---------
Released: 2017-08-16
* fixed README location
* fixed release date of last release
* some documentation updates
0.4.19
------
Released: 2017-08-16
* merged private libs into ./lib - many changes related to that
lib respectivly:
- ./lib/net:
-- ssh.py module updated to match paramiko changes and some other fixes
-- added functions to do DNS lookups for the (optional) scp backup
function
- ./lib/secrecy/gpg.py
-- fixed passing of command line setting of gpg-key-recipient option
-- [W] fixed path to gnupg home
-- [W] fixed setting wrong keystores (.gpg|.kbx) in windows
-- [W] replaced concatenated string by path.join
-- [W] added passphrase input mode while pinentry is not available
- ./lib/secrecy/passcrypt.py
-- if debugging is enabled the plaintext file is removed no more
- ./__init__.py
-- fixed comment for strange lib include
-- changed wrapper to gereric name
Documentation
=============
http://packages.python.org/pwclip/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pwclip-0.4.24.tar.gz
(22.4 kB
view hashes)
Built Distribution
pwclip-0.4.24.linux-x86_64.tar.gz
(48.9 kB
view hashes)
Close
Hashes for pwclip-0.4.24.linux-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f44c0affe603a24d4184d1ac694db993ef9bd9c72e8e09fb58b582944a410a82 |
|
MD5 | b786e06f6f69280786d25a546d073252 |
|
BLAKE2b-256 | 68d37c57b329d5955c13efe68b47e38f1bf4f2b9c52c8534e803b9633fa2e2a6 |