Skip to main content

Bitwarden to KeePass

A simple little script that backs up a Bitwarden vault to a local KeePass file.

$ bitwarden_to_keepass --keepass-file /path/to/file.kdbx

Installation and Usage

  1. Install the Bitwarden CLI.
  2. Install this code.
  3. Run.

Install the Bitwarden CLI

  1. Head to the Bitwarden CLI page page and download the native executable for your system.
  2. Place this file somewhere in your PATH. For example, on Linux you might download it to /usr/local/bin. Make sure that the file is executable (eg: chmod a+x /usr/local/bin/bw).

For convenience, you can use this command to do all of the above (on Linux)

wget https://github.com/bitwarden/cli/releases/download/v1.22.1/bw-linux-1.22.1.zip \
&& sudo unzip -d /usr/local/bin bw-linux-1.22.1.zip \
&& sudo chmod a+x /usr/local/bin/bw

Install this code

pip install bitwarden-to-keepass

Or see Development.

Run

Run bitwarden_to_keepass.

You'll be prompted for all the secrets and whatnot. Each secret arg has an associated env var (see bitwarden_to_keepass --help for env var names). If that env var is found, the value from the env var will be used and you will not be prompted.

You can also send in your secrets via command line, though this is not recommended.

Personally I like to create a secrets.sh file:

#!/bin/bash
export BW_MASTER_PW=<Bitwarden master password>
export BW_CLIENTID=<Bitwarden API Client ID>
export BW_CLIENTSECRET=<Bitwarden API Client Secret>

# If you also want to backup your Organization data:
export BW_ORG_ID=<Organization ID>

and source it before running:

$ source secrets.sh
$ bitwarden_to_keepass --keepass-file /c/foo/bar.kdbx

Development

Install the Bitwarden CLI and the KeePass CLI as mentioned above.

  1. Clone the repo: git clone https://github.com/dougthor42/bitwarden_to_keepass
  2. Move into that dir: cd bitwarden-to-keepass
  3. Create a virtual environment: python -m venv .venv
  4. Activate it: . .venv/bin/activate
  5. Install python packages:
    1. pip install -U pip setuptools wheel
    2. pip install -e .[dev]
  6. Run tests to verify: pytest
  7. Install pre-commit hooks: pre-commit install
  8. Ready to develop

Releasing

  1. Update CHANGELOG.md by inserting a new heading:

    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -3,6 +3,9 @@
    
     ## Unreleased
    
    +
    +## v1.0.0 (2023-01-14)
    +
     + Finally decided to work on this again and got things to decent working state!
       This should be usable now and ticks all of the original requirements.
    
  2. Update pyproject.toml with the new version:

    --- a/pyproject.toml
    +++ b/pyproject.toml
    @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
    
     [project]
     name = "bitwarden_to_keepass"
    -version = "0.0.1"
    +version = "1.0.0"
     description = "A simple little script that backs up a Bitwarden vault to a local KeePass file."
     readme = "README.md"
     requires-python = ">=3.8"
    
  3. Commit these changes.

  4. Create a new git tag git tag v1.0.0 -m "Release v1.0.0".

Then push tags to github. CI will build the source distribution and wheel and upload them to PyPI.

Changelog

See CHANGELOG.md.

Release files for bitwarden-to-keepass 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bitwarden-to-keepass 1.0.0
File Size Uploaded
bitwarden_to_keepass-1.0.0.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bitwarden-to-keepass 1.0.0
File Interpreter ABI Platform
bitwarden_to_keepass-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.5 kB

Release files / bitwarden_to_keepass-1.0.0.tar.gz

Download URL bitwarden_to_keepass-1.0.0.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c142b187d0b7b5edb379662b3c0c7351022c15001bfa708e86a2b3f02b220304
BLAKE2b-256 checksum
How to use checksums
883de86a8f05aef2e47d6a0b01d343955d9b5c731dd52fe9b73e7fb95dab6a1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.1

Release files / bitwarden_to_keepass-1.0.0-py3-none-any.whl

Download URL bitwarden_to_keepass-1.0.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00ad52f94b9d4875851d5282c5cdd4ec2b242a1814bec135d42e1fa76ade2da6
BLAKE2b-256 checksum
How to use checksums
fd1d79207914ea9a86ca8add2a662475ed79474614d04594cd24a2b5ef53c6a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.1

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page