password-store

Simple password manager using gpg and ordinary unix directories
git clone https://git.zx2c4.com/password-store
Log | Files | Refs | README | LICENSE

commit 4f6e81c28ffa034677583417a7a982e4aadd5fb0
parent 02d0b9a8007fb8532e3b2af3557fdefbeb8bb9b2
Author: Juhamatti Niemelä <iiska@iki.fi>
Date:   Sat, 15 Sep 2012 01:07:42 +0200

Script for importing password data XML from KeepassX to password-store.

Diffstat:
Acontrib/keepassx2pass.py | 37+++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+), 0 deletions(-)

diff --git a/contrib/keepassx2pass.py b/contrib/keepassx2pass.py @@ -0,0 +1,37 @@ +#! /usr/bin/env python + +import sys + +from subprocess import Popen, PIPE +from xml.etree import ElementTree + +def path_for(element, path=''): + """ Generate path name from elements title and current path """ + title = element.find('title').text + return '/'.join([path, title]) + +def import_entry(element, path=''): + """ Import new password entry to password-store using pass insert + command """ + proc = Popen(['pass', 'insert', path_for(element, path)], + stdin=PIPE, stdout=PIPE) + proc.communicate(element.find('password').text + "\n") + proc.wait() + +def import_group(element, path=''): + """ Import all entries and sub-groups from given group """ + npath = path_for(element, path) + for group in element.findall('group'): + import_group(group, npath) + for entry in element.findall('entry'): + import_entry(entry, npath) + + +def main(xml_file): + """ Parse given KeepassX XML file and import password groups from it """ + with open(xml_file) as xml: + for group in ElementTree.XML(xml.read()).findall('group'): + import_group(group) + +if __name__ == '__main__': + main(sys.argv[1])