Skip to content

Latest commit

 

History

History
107 lines (92 loc) · 2.84 KB

README.md

File metadata and controls

107 lines (92 loc) · 2.84 KB

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": "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.