Improved quick hack to convert a 1pif (1Password export) to kdbx (KeePass).
pipenv install
pipenv run ./convert.py infile.1pif
{
"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": "name_of_username_field_on_website",
"type": "T",
"value": "john.doe"
},
{
"designation": "password",
"name": "name_of_password_field_on_website",
"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 the secureContents --> fields structure are to be filled on web-forms. "designation" can be "username" or "password" and means the standard input fields in a 1P record. They are then mapped into the website's form fields via the "name" value.
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.
- 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.