In Bitwarden, one could make it so their account only has a certain set of folders, like so: - testfolder/a - testfolder/a/b/c - testfolder/a/b/c/d The resulting hierarchy would look like this: testfolder/a `- b/c `- d As shown above, Bitwarden allows one to name a folder something like "foo/bar" even if a folder "foo" doesn't exist. Bitwarden handles this by just putting this folder in the root with the name as-is. In addition, as shown with "testfolder/a/b/c", a folder name may not necessarily be just anything that comes after the last `/` delimiter. Instead, it's dependent on which ever existing folder happens to match the most of the folder's name's prefix. As such, the following references were used to replicate this behavior in bitwarden-to-keepass:ecdd08624f/common/src/services/folder.service.ts (L108)
ecdd08624f/common/src/misc/serviceUtils.ts (L7)
bitwarden-to-keepass
Export (most of) your Bitwarden items into KeePass database.
How it works?
It uses official bitwarden-cli client to export your items from Bitwarden vault and move them into your KeePass database - that includes logins (with TOTP seeds, URIs, custom fields, attachments, notes) and secure notes.
Usage with docker (docker-compose) - recommended
- Clone this repository
- Edit
.env
file- ⚠️ make sure to set your own
DATABASE_PASSWORD
- used as password for KeePass database
- ⚠️ make sure to set your own
- Run
docker-compose run bitwarden-to-keepass
- You will be interactively asked to login with bitwarden-cli
- After the process is finished your database export is in
exports
directory
Usage without docker (venv)
- Clone this repository
- Run
make build
- You can either create new (empty) KeePass database (tested with KeePassXC but it will probably work with others) right now, otherwise one will be created when the script is executed
- Go into the virtual environment
source .venv/bin/activate
- Download official bitwarden-cli and do
bw login
(you needBW_SESSION
for export to work). - Run
python3 bitwarden-to-keepass.py --bw-session BW_SESSION --database-path DATABASE_PATH --database-password DATABASE_PASSWORD [--database-keyfile DATABASE_KEYFILE] [--bw-path BW_PATH]
Description
Export (most of) your Bitwarden items into KeePass (kdbx) database. That includes logins - with TOTP seeds, URIs, custom fields, attachments and secure notes
This is a mirror from https://github.com/rogsme/bitwarden-to-keepass
Languages
Python
91.2%
Shell
5.6%
Dockerfile
3.2%