Improved quick hack to convert a 1pif (1Password export) to kdbx (KeePass).
Install dependencies
pipenv install
Run converter
pipenv run ./convert.py infile.1pif
Basic 1Password 1PIF structure
{
'contentsHash': 'cf89d854',
'createdAt': 1617646219,
'location': 'https://domain.com/',
'locationKey': 'domain.com',
'openContents': {
'tags': ['Tag1', 'Tag2']
},
'secureContents': {
'URLs': [
{'label': 'website', 'url': 'https://domain.com/'}
],
'fields': [
{
'designation': 'username',
'name': 'username',
'type': 'T',
'value': 'john.doe'
},
{
'designation': 'password',
'name': 'password',
'type': 'P',
'value': 'ultrasecurepassword'
}
],
'notesPlain': 'This is a note.',
'sections': [
{
'fields': [
{
'inputTraits': {'autocapitalization': 'Words'},
'k': 'string',
'n': 'org_name',
't': 'group',
'v': 'My Organisation'
},
{
'inputTraits': {'autocapitalization': 'Words'},
'k': 'string',
'n': 'member_name',
't': 'member name',
'v': 'John Doe'
}
]
'name': '',
'title': ''
},
{
'name': 'linked items',
'title': 'Related Items'
// no "fields" structure = empty section
}
]
},
'scope': 'Never',
'securityLevel': 'SL5',
'title': 'My secret password',
'typeName': 'webforms.WebForm',
'updatedAt': 1618176026,
'uuid': 'ysd77pxq4zghhodfbo47cewudy'}
Fields inside sections can be of various types: text, url, email, address, date, month/year, otp, password or a phone number.
Also there are different typeName values that define different field presets.
Basic KeePass structure
- UUID
- Title
- UserName
- Password
- URL
- Tags
- IconID
- Times
- History
- Notes
- custom fields
Default fields are text. Custom fields can also only be of type text - either hidden (password field) or not.
Description
Quick hack to export a 1pif (1Password export) to kdbx (KeePass). Originally forked from https://github.com/rubenv/1pif-to-kdbx
Languages
Python
100%