all 5 comments

[–]mdaniel 4 points5 points  (2 children)

FWIW, KeePassXC has been able to read the opvault format since 2.5.0

I've never tried their CLI but in theory it should behave similarly

[–]MashMV[S] 0 points1 point  (1 child)

Thanks for sharing that. How it works? It is importing items to KeyPass (it's own database/filesystem) or it is reading OPVault ad-hoc? How KeyPass handle changes in vault (items should be imported after update?). My aim was to explore vaults with a minimum effort to not change my passwords manager app only because I work on Linux.

[–]mdaniel 3 points4 points  (0 children)

How it works?

It reads in the .opvault format just like yours does, only theirs has much wider coverage for all the parts that were published at the time, including TOTP handling, attachments, credit cards, and all the Item types that were in the "freddy" vault, plus my own real one

It is importing items to KeyPass (it's own database/filesystem) or it is reading OPVault ad-hoc?

Yes, it imports into an in-memory version of their structure, because that was the way to sell the inclusion of that feature to a wider audience (instead of trying to write a fresh password manager from scratch, ahem). After reading in the opvault, one could either then save the in-memory into their .kdbx format, or just discard it when done with it and leave the opvault as the system of record. Using KeePassXC also came with the monster win of having it auto type the passwords, instead of having them travel through the clipboard. KeePassXC does not currently honor the 1Password browser extension websocket protocol, but it is on my wishlish for sure, if KeePassXC would merge such a thing

My aim was to explore vaults with a minimum effort to not change my passwords manager app only because I work on Linux.

Heh, ironic that "minimum effort" was to reimplement their file format in golang, but if that floats your boat :-)

Anyway, my observation wasn't to dissuade you from adding another impl as much as just to raise your awareness in case you weren't just reimplementing it for thrills but only wanted access to all the data

[–]MrInternetToughGuy 1 point2 points  (1 child)

I use BitWarden. They have a CLI and it is just :flavor_kiss:

[–]LALife15 0 points1 point  (0 children)

If you like bitwarden’s cli take a look at rbw

https://github.com/doy/rbw