108 lines
2.8 KiB
Markdown
108 lines
2.8 KiB
Markdown
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
|
|
------------------------------
|
|
|
|
```json
|
|
{
|
|
"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.
|
|
|
|
|
|
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.
|