passhole
is a commandline password manager for KeePass inspired by pass.
- fill user/pass field in any application via keyboard shortcut
- add, delete, move, edit, rename entries and groups
- generate alphanumeric, symbolic, or correct horse battery staple style passwords
- temporarily cache database password (by default for 10 minutes)
- multiple databases
- supports KeePass v3 and v4 databases
- supports TOTP
See below for examples and the manual (or man passhole
) for a complete list of commands and options.
pip install passhole
ph init
# optionally install zenity for graphical password prompt
sudo apt install zenity
# add a new entry with manually created password
$ ph add github
Username: Evidlo
Password:
Confirm:
URL: github.com
# add an entry with a generated alphanumeric password
$ ph add neopets -a
Username: Evidlo
URL: neopets.com
# add a new group
$ ph add social/
# add an entry to `social/` with a 32 character password (alphanumeric + symbols)
$ ph add social/facebook -s 32
Username: [email protected]
URL: facebook.com
# add an entry to `social/` with a correct-horse-battery-staple type password
$ ph add social/twitter -w
Username: [email protected]
URL: twitter.com
# list all entries
$ ph list
github
neopets
[social]
├── facebook
└── twitter
# display contents of entry
$ ph show social/twitter
Title: twitter
Username: Evidlo
Password: inns.ambien.travelling.throw.force
URL: twitter.com
# retrieve contents of specific field for use in scripts
$ ph show social/twitter --field password
inns.ambien.travelling.throw.force
# select entry using dmenu, then send password to keyboard
bindsym $mod+p exec "ph type --prog dmenu"
# select entry using dmenu, then send username + password to keyboard
bindsym $mod+Shift+p exec "ph type --tabbed --prog dmenu"
Running tests
# from repo root dir:
python test/tests.py
Isolated install in Docker
# debian
make docker_debian
Building manpage and packaging
make man
make dist
Alpine
apk add gcc libffi-dev py3-lxml py3-pip python3-dev libc-dev