· 10 years ago · May 10, 2016, 10:27 AM
1"""
2Script for import your LastPass passwords to KeePassX.
3"""
4
5from lastpass import Vault
6from kppy.database import KPDBv1
7from urllib.parse import urlparse
8
9LASTPASS_USERNAME = '***@gmail.com'
10LASTPASS_PASSWORD = '***'
11
12KEEPASSX_PASSWORD = '***'
13KEEPASSX_KDB = '/home/***/Secret Data/passwords.kdb'
14KEEPASSX_KEY = '/home/***/Secret Data/password.key'
15
16
17def main():
18 db = KPDBv1(KEEPASSX_KDB, KEEPASSX_PASSWORD, KEEPASSX_KEY)
19 db.load()
20
21 groups = dict()
22 for group in db.groups:
23 name = group.title
24 if name not in groups:
25 groups[name] = group
26
27 def decode(value):
28 return value.decode('utf-8')
29
30 vault = Vault.open_remote(LASTPASS_USERNAME, LASTPASS_PASSWORD)
31 for entry in vault.accounts:
32 group_title = decode(entry.group)
33 if not len(group_title):
34 group_title = 'No category'
35
36 if group_title not in groups:
37 db.create_group(group_title)
38 db.save()
39 groups[group_title] = db.groups[-1]
40
41 url = urlparse(decode(entry.url))
42 url = '{}://{}'.format(url.scheme, url.netloc)
43 username, password = decode(entry.username), decode(entry.password)
44
45 db.create_entry(group=groups[group_title], title=decode(entry.name),
46 url=url, username=username, password=password)
47 db.save()
48
49 db.close()
50
51 print('Done.')
52
53
54if __name__ == '__main__':
55 main()