Package: keybox
IntroductionKeybox is a secure store for passwords, keys, and other secrets.There is a Python API (import keybox), a runnable package (python3-mkeybox)
and a wrapper script (keybox, created by setuptools).Keybox is completely offline. All secrets stay safely in a local file.
Nothing is sent anywhere, unless you explicitly set up network synchronization
using some other tool.Features:Data encrypted using strong encryption (PyNaCl)Inside encrypted envelope, it’s a simple tab-delimited file formatShell-like text user interfaceSecurity:Master password is saved in memory for as long as the program runs.Neither the password nor decrypted data are written to the disk (unless explicitly exported).Portability:The script should run on any system with Python3 installed (including Windows).Requires no installation. You can bring your keybox with you anywhere.Can be contained in a single Python file (seeStatic Distributionbelow)Dependencies:Python 3.7 or laterPyNaCl, prompt_toolkit, blessed, pyperclipInstallationInstall Python package, together with thekeyboxwrapper script,
from PyPI:pip3 install keyboxThat’s it. PIP should pull in the required dependencies.From source / Git repoAlternatively, install from source:python3 setup.py installThe package can also run without installation, directly from source tree root:python3 -m keyboxDependenciespynacl- the encryptionargon2-cffi- optional, replaces argon2 from PyNaCl when availableprompt_toolkit, blessed, pyperclip- command-line and shell/usr/share/dict/wordsused for password generatorDebian:apt install wamericanwhen not available, a replacementwordsfile is downloaded from Internet
(This is the only option on Windows)pytest, coverage- for testsGetting StartedRun the program, choose a master password. A new keybox file will be created.You are now in the shell. The basic workflow uses the following commands:addsome passwordslistthe recordsselecta recordprintthe passwordquitTypehelpfor a list of all commands,help <cmd>for description of each command and its parameters.Config fileThe default config file path is~/.keybox/keybox.conf.
It can be used to point to a different location for the keybox file:[keybox]
path = ~/vcs/keybox/keybox.safeWithout the config file, the default keybox path is~/.keybox/keybox.safe.Password GeneratorA bundled password generator can be called from command line (keybox pwgen)
or internally from the shell.
In the shell, use<tab>when asked for a password (in theadd/modifycommands)
to generate some random passwords.Pwgen is based on the system word list that is usually found in/usr/share/dict/words.
By default, it generates a password from two concatenated words, altered by
adding two uppercase letters and one digit somewhere inside the password.This gives around 50 bits of entropy on my system
(Password strength).Static DistributionCallmake zipappto create azipapp filecontaining all sources.
The zipapp file is written tobuilddirectory and is directly executable
by Python.The Makefile target useszipappmodule which is available since Python 3.5.DevelopmentBuild docs:make -C docs htmlRun tests:make testShow test code coverage:make htmlcovBuild and check package:make build
make checkThe Project NameThere might be some confusion between this Keybox project and GnuPG project,
which has something called “a keybox file (.kbx)” and a tool to handle it,kbxutil.This Keybox is completely unrelated to the GnuPG one.