{"id":19684251,"url":"https://github.com/elliotwutingfeng/bitwarden_backup_decryptor","last_synced_at":"2026-04-09T12:45:17.047Z","repository":{"id":219581279,"uuid":"749381612","full_name":"elliotwutingfeng/bitwarden_backup_decryptor","owner":"elliotwutingfeng","description":"🔓 CLI tool to decrypt backup files exported from Bitwarden. This application is not affiliated with Bitwarden, Inc.","archived":false,"fork":false,"pushed_at":"2025-06-03T14:38:45.000Z","size":134,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-04T01:23:16.047Z","etag":null,"topics":["aes","aes-cbc","android","argon2id","backup","credential-stuffing","cryptography","cybersecurity","encryption","hmac","hmac-sha256","ios","linux","macos","password-manager","pbkdf2","security","sha256","windows"],"latest_commit_sha":null,"homepage":"https://bitwarden.com/help/encrypted-export","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elliotwutingfeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-28T12:26:18.000Z","updated_at":"2025-06-03T14:38:47.000Z","dependencies_parsed_at":"2024-03-28T14:48:34.093Z","dependency_job_id":"b343d61c-0efc-4f5f-b5e4-a8853cef4044","html_url":"https://github.com/elliotwutingfeng/bitwarden_backup_decryptor","commit_stats":null,"previous_names":["elliotwutingfeng/bitwarden_backup_decryptor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elliotwutingfeng%2Fbitwarden_backup_decryptor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elliotwutingfeng%2Fbitwarden_backup_decryptor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elliotwutingfeng%2Fbitwarden_backup_decryptor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elliotwutingfeng%2Fbitwarden_backup_decryptor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elliotwutingfeng","download_url":"https://codeload.github.com/elliotwutingfeng/bitwarden_backup_decryptor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elliotwutingfeng%2Fbitwarden_backup_decryptor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259072703,"owners_count":22801069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes","aes-cbc","android","argon2id","backup","credential-stuffing","cryptography","cybersecurity","encryption","hmac","hmac-sha256","ios","linux","macos","password-manager","pbkdf2","security","sha256","windows"],"created_at":"2024-11-11T18:17:17.508Z","updated_at":"2025-12-30T22:40:20.195Z","avatar_url":"https://github.com/elliotwutingfeng.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitwarden Backup Decryptor\n\n[![Dart](https://img.shields.io/badge/Dart-0175C2?style=for-the-badge\u0026logo=dart\u0026logoColor=white)](https://dart.dev)\n[![Coveralls](https://img.shields.io/coverallsCoverage/github/elliotwutingfeng/bitwarden_backup_decryptor?logo=coveralls\u0026style=for-the-badge)](https://coveralls.io/github/elliotwutingfeng/bitwarden_backup_decryptor?branch=main)\n[![LICENSE](https://img.shields.io/badge/LICENSE-GPLv3-GREEN?style=for-the-badge)](LICENSE)\n\nCLI tool to decrypt backup files exported from [Bitwarden](https://bitwarden.com).\n\nThis application is not affiliated with Bitwarden, Inc.\n\n**Note:** Bitwarden provides two [encrypted export types](https://bitwarden.com/help/encrypted-export), _account restricted exports_ and _password protected exports_. This tool can only decrypt _password protected exports_.\n\n## Requirements\n\n- **Minimum Dart SDK:** 3.9.0\n- **OS:** Either Windows, macOS, or Linux\n\n### Safety\n\n\u003e [!CAUTION]\n\u003e This program writes the backup file content to stdout in plaintext. By default, this means the content will be displayed on the screen.\n\u003e\n\u003e **Recommended precautions:**\n\u003e\n\u003e - Do NOT decrypt your backup file in public areas, or in the presence of untrusted persons and surveillance cameras.\n\u003e - Do NOT decrypt your backup file on a machine that you suspect to be infected by malware.\n\u003e - ENSURE that your terminal session output is not being unintentionally saved or recorded.\n\n## Install dependencies\n\n```bash\ndart pub get\n```\n\n## Example\n\n**File:** `test/encrypted_test_argon2id.json`\n\n**Password:** `passphrase`\n\n```bash\n# Enter the above password when prompted\ndart run lib/bitwarden_backup_decryptor.dart test/encrypted_test_argon2id.json\n```\n\nYou should get the following plaintext output.\n\n```json\n{\n  \"folders\": [\n    {\n      \"id\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"name\": \"My Folder\"\n    }\n  ],\n  \"items\": [\n    {\n      \"passwordHistory\": [\n          {\n            \"lastUsedDate\": \"YYYY-MM-00T00:00:00.000Z\",\n            \"password\": \"passwordValue\"\n          }\n      ],\n      \"revisionDate\": \"YYYY-MM-00T00:00:00.000Z\",\n      \"creationDate\": \"YYYY-MM-00T00:00:00.000Z\",\n      \"deletedDate\": null,\n      \"id\": \"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa\",\n      \"organizationId\": null,\n      \"folderId\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"type\": 2,\n      \"name\": \"My Secure Note\",\n      \"notes\": \"1st line of secure note\\n2nd line of secure note\\n3rd line of secure note\",\n      \"favorite\": false,\n      \"fields\": [\n        {\n          \"name\": \"Text Field\",\n          \"value\": \"text-field-value\",\n          \"type\": 0\n        },\n        {\n          \"name\": \"Hidden Field\",\n          \"value\": \"hidden-field-value\",\n          \"type\": 1\n        },\n        {\n          \"name\": \"Boolean Field\",\n          \"value\": \"false\",\n          \"type\": 2\n        }\n      ],\n      \"secureNote\": {\n        \"type\": 0\n      },\n      \"collectionIds\": [\n        null\n      ]\n    },\n    {\n      \"id\": \"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\",\n      \"organizationId\": null,\n      \"folderId\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"type\": 3,\n      \"name\": \"Card Name\",\n      \"notes\": \"1st line of note text\\n2nd line of note text\",\n      \"favorite\": false,\n      \"fields\": [\n        {\n          \"name\": \"Text Field\",\n          \"value\": \"text-field-value\",\n          \"type\": 0\n        },\n        {\n          \"name\": \"Hidden Field\",\n          \"value\": \"hidden-field-value\",\n          \"type\": 1\n        },\n        {\n          \"name\": \"Boolean Field\",\n          \"value\": \"false\",\n          \"type\": 2\n        }\n      ],\n      \"card\": {\n        \"cardholderName\": \"Jane Doe\",\n        \"brand\": \"Visa\",\n        \"number\": \"1234567891011121\",\n        \"expMonth\": \"10\",\n        \"expYear\": \"2021\",\n        \"code\": \"123\"\n      },\n      \"collectionIds\": [\n        null\n      ]\n    },\n    {\n      \"id\": \"cccccccc-cccc-cccc-cccc-cccccccccccc\",\n      \"organizationId\": null,\n      \"folderId\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"type\": 4,\n      \"name\": \"My Identity\",\n      \"notes\": \"1st line of a note\\n2nd line of a note\",\n      \"favorite\": false,\n      \"fields\": [\n        {\n          \"name\": \"Text Field\",\n          \"value\": \"text-field-value\",\n          \"type\": 0\n        },\n        {\n          \"name\": \"Hidden Field\",\n          \"value\": \"hidden-field-value\",\n          \"type\": 1\n        },\n        {\n          \"name\": \"Boolean Field\",\n          \"value\": \"true\",\n          \"type\": 2\n        }\n      ],\n      \"identity\": {\n        \"title\": \"Mrs\",\n        \"firstName\": \"Jane\",\n        \"middleName\": \"A\",\n        \"lastName\": \"Doe\",\n        \"address1\": \" 1 North Calle Cesar Chavez \",\n        \"address2\": null,\n        \"address3\": null,\n        \"city\": \"Santa Barbara\",\n        \"state\": \"CA\",\n        \"postalCode\": \"93103\",\n        \"country\": \"United States \",\n        \"company\": \"My Employer\",\n        \"email\": \"myemail@gmail.com\",\n        \"phone\": \"123-123-1234\",\n        \"ssn\": \"123-12-1234\",\n        \"username\": \"myusername\",\n        \"passportNumber\": \"123456789\",\n        \"licenseNumber\": \"123456789\"\n      },\n      \"collectionIds\": [\n        null\n      ]\n    },\n    {\n      \"id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\",\n      \"organizationId\": null,\n      \"folderId\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"type\": 1,\n      \"name\": \"Login Name\",\n      \"notes\": \"1st line of note text\\n2nd Line of note text\",\n      \"favorite\": false,\n      \"fields\": [\n        {\n          \"name\": \"Text Field\",\n          \"value\": \"text-field-valie\",\n          \"type\": 0\n        },\n        {\n          \"name\": \"Hidden Field\",\n          \"value\": \"hidden-field-value\",\n          \"type\": 1\n        },\n        {\n          \"name\": \"Boolean Field\",\n          \"value\": \"true\",\n          \"type\": 2\n        }\n      ],\n      \"login\": {\n        \"uris\": [\n          {\n            \"match\": null,\n            \"uri\": \"https://mail.google.com\"\n          }\n        ],\n        \"username\": \"myusername@gmail.com\",\n        \"password\": \"mypassword\",\n        \"totp\": \"otpauth://totp/my-secret-key\"\n      },\n      \"collectionIds\": [\n        null\n      ]\n    }\n  ]\n}\n```\n\n## Testing\n\nTested on individual vaults as of Bitwarden Version 2024.8.1\n\n### Default KDF settings\n\n```bash\nmake tests_default\n```\n\n### Maximum KDF settings\n\n**Warning:** The following command uses the most resource-intensive KDF settings supported by Bitwarden and will take a long time to run.\n\n**Recommended System Requirements:** 8-Core CPU and at least 8 GB available RAM.\n\n```bash\nmake tests_maximum\n```\n\n### Further reading\n\n- \u003chttps://bitwarden.com/help/export-your-data\u003e\n- \u003chttps://bitwarden.com/help/encrypted-export\u003e\n- \u003chttps://bitwarden.com/help/what-encryption-is-used\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felliotwutingfeng%2Fbitwarden_backup_decryptor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felliotwutingfeng%2Fbitwarden_backup_decryptor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felliotwutingfeng%2Fbitwarden_backup_decryptor/lists"}