Skip to content

Client for KeePassHTTP to fetch and edit credentials from Python

License

Notifications You must be signed in to change notification settings

cyrbil/python_keepass_http

Repository files navigation

KeePassHTTP

pypi_version.svg pypi_status.svg pypi_format.svg python_versions.svg license.svg Maintainability travis_build.svg codecov.svg requirements_status.svg code_size.svg pypi_downloads.svg

Python client for KeePassHTTP to interact with KeePass's credentials.

Install

$ pip install keepasshttp

Usage

import keepasshttp

# get single credential
credential = keepasshttp.get("my_credential_name_or_url")
print(credential.login)
print(credential.password)

# find all credentials's name
credentials = keepasshttp.list()

# fetch all partiall matching credentials
credentials = keepasshttp.search("my_credential_name_or_url")

# create a new keepasshttp entry
keepasshttp.create("login", "password", "url")

# update a keepasshttp entry
credential.password = "new password"
# or
keepasshttp.update("login", "password", "url", "uuid")

Command line

KeePassHTTP can also be called from command line:

$ python -m keepasshttp --help
usage: keepasshttp [-h] [-c CONFIG_PATH] [-u URL]
               [-f {python,text,table,json,csv}]
               credential [credential ...]

Fetch credentials from keepass

positional arguments:
  credential            Url or name to match credentials from keepass database

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG_PATH, --config CONFIG_PATH
                        alternative path for keepasshttp's AES exchange key
                        (default: ~/.python_keepass_http)
  -u URL, --url URL     alternative url for keepasshttp server (default:
                        'http://localhost:19455/')
  -f {python,text,table,json,csv}, --format {python,text,table,json,csv}
                        output format for credentials

$ python -m keepathhttp my_credential_name_or_url
my_credential_name_or_url
  - login: login
  - password: password
  - name: test
  - url: my_credential_name_or_url
  - id: ABCDEF1234567890ABCDEF1234567890
  - fields: []

Configuration

By default, this module will write AES association key to ~/.python_keepass_http and use http://localhost:19455/ to connect to the KeePassHTTP server.

To change theses parameters, instantiate keepasshttp.KeePassHTTP class with different values.

from keepasshttp import KeePassHTTP
kph = KeePassHTTP(
    storage="./keepasshttp_key",
    url="https://example.com:1337/")
kph.get("...")
...

Testing

You can simply run the tests using:

python -m unittest discover

KeePassHTTP calls are mocked, to run the tests against a real server, you need to:

  • open tests/test_database.kdbx in KeePass password is test
  • set TEST_WITH_KEEPASS environment variable
  • run test normally

Coverage

To run tests with coverage:

pip install pytest-cov
pytest --cov