Pwkeeper
Pwkeeper stores your passwords, encrypted with AES. You only have to remember the 256-bit (= 32 chars) long key for decryption.
The idea is that you never have to remember your passwords (other than the one used for this app). That way, your passwords can:
- Use completely random letters and numbers
- Be very very long
- Never be re-used
The backside is that you can't access your services if you don't have access to the password database (e.g. you're at a friends house and want to check your mail). Maybe a phone app should be made?
Again?
Yes, this has been done before. I just wrote it because I wanted to learn to create it, and I wanted a password manager i could trust completely (or blame myself for when it failed).
How?
It is written purely in Scala and depends only on Jerkson for JSON-generating and -parsing. It is managed with SBT.
Note: It now also depends on the 'sh' shell and a python installation (i.e. it calls 'python -m json.tool') for json prettifying.
Details!
The app is run from a terminal. Just put the pw
script in /usr/local/bin and call it whenever you need it.
Then you run pw
from whereever, with one of these arguments:
-
add - Add a new password to
data
-
search - Decrypts
data
to memory, lets you search for a password and store it in xclipboard. -
edit - Decrypts
data
and saves it totmp
for editing. -
save - Encrypts
tmp
, saves it todata
, and deletestmp
. - generate - Generates a random password using [a-zA-Z0-9] and default length
- generate <len> - As above with specific length
Notes:
-
data
is the encrypted file,tmp
is a temporary decrypted plaintext file (with JSON data). - You need Scala installed.
- Since you don't use fish, you might have to modify the
pw
script a bit for your shell.
Passwords have the following structure:
(usage: String, values: List[String])
Usage is a short text showing where you use the password, which you also can search for. Values is a list of all the passwords for that usage.
Soo.. Java on the console, eh?
Yeah, it wasn't easy to get right, and there's still stuff that isn't exactly how I want it.
Known issues:
- Searches only handle ASCII chars. I've hardcoded handling of [æøåÆØÅ] since I'm norwegian and use those a lot.
- When using
pw add
and entering data, escape sequences (backspace, arrows etc.) aren't supported. - There should be more built-in functionality to edit the password list (renames, add/remove password, ++) so that using
pw edit
can be avoided. - I'm sure there's more I forgot.