{"id":16406527,"url":"https://github.com/wincent/secure-notes-exporter","last_synced_at":"2025-06-29T13:34:31.227Z","repository":{"id":16871987,"uuid":"19632372","full_name":"wincent/secure-notes-exporter","owner":"wincent","description":"🔐 Export Secure Notes from the OS X keychain","archived":false,"fork":false,"pushed_at":"2025-01-24T10:07:16.000Z","size":16,"stargazers_count":7,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-31T21:53:02.754Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wincent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-10T03:27:23.000Z","updated_at":"2024-12-24T04:40:27.000Z","dependencies_parsed_at":"2022-08-04T12:00:17.222Z","dependency_job_id":null,"html_url":"https://github.com/wincent/secure-notes-exporter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Fsecure-notes-exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Fsecure-notes-exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Fsecure-notes-exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Fsecure-notes-exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wincent","download_url":"https://codeload.github.com/wincent/secure-notes-exporter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238375274,"owners_count":19461574,"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":[],"created_at":"2024-10-11T06:10:12.051Z","updated_at":"2025-02-11T21:31:47.890Z","avatar_url":"https://github.com/wincent.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# secure-notes-exporter\n\nExports the \"Secure Notes\" from your OS X keychain into a CSV file that can be imported into [1Password](https://agilebits.com/onepassword) or [LastPass](https://lastpass.com/).\n\n## Usage\n\n1. Clone the repo.\n2. Open the Xcode project file and Build (alternatively, just run `make` from the terminal).\n3. Install built binary somewhere in your `PATH`.\n4. Run the binary; the decrypted contents of the notes will be printed to standard out:\n\n```bash\nsecure-notes-exporter \u003e ~/notes.csv\n```\n\nYou will have to click the \"Allow\" (or \"Always Allow\") button in the dialog that pops up for each \"Secure Note\" in your keychain; it's a little painful, but still better than manually copying and pasting each individual item.\n\n**NOTE:** The generated CSV contains the decrypted plain-text of your \"Secure Notes\", so make sure you keep it somewhere safe until you import it into 1Password or LastPass, and securely delete it immediately afterwards.\n\n## Importing the generated CSV into LastPass\n\nFor up-to-date instructions, consult [the LastPass website](https://helpdesk.lastpass.com/getting-started/importing-from-other-password-managers/#Importing+from+a+Generic+CSV+File).\n\nAt the time of writing, the procedure is:\n\n1. From the LastPass browser extension menu, choose \"Tools\" \u003e \"Import From\" \u003e \"Other\".\n2. On the page that appears, choose \"Generic CSV File\" from the \"Source\" menu.\n3. Click \"Import\".\n4. Choose your exported CSV file.\n5. Follow the on-screen prompts.\n\n## Background\n\nFor many years, I used the OS X keychain to store all of my passwords, and additionally information that was sensitive but wasn't a password. I did this because I wanted to avoid vendor lock-in with a small company such as [AgileBits](https://agilebits.com/) (makers of [1Password](https://agilebits.com/onepassword)), which at the time was completely unproven (the [first alphas](https://agilebits.com/onepassword/mac/release_notes) of 1Password came out in 2006).\n\nOf course, I knew that I still wasn't free from vendor lock-in, as I was effectively locking myself into Apple's proprietary keychain format and implementation. Nevertheless, I felt better about this because I knew that I was likely to be an Apple user for a very long time. They'd also done much to earn my trust in terms of their relatively good security record.\n\nUnfortunately, each upgrade to a new machine brought with it some pain as I either had to blow away the login keychain on the new machine (by replacing it with the old keychain), or I had to manually merge the keychains.\n\nThis latter process was particularly tedious. Even if you set a blank password on your keychain to expedite things, you still had to click on a permission dialog for every single item you wished to import. Ouch.\n\nFinally, after much deliberation I decided to give in and move my sensitive information to LastPass. I was sick of these keychain migrations and decided to do one last migration to end them all. Additionally, as I become more and more mobile-dependent, I wanted to be able to access the exact same passwords on all of my devices. (Apple had recently come out with iCloud Keychain, but I tried it and found it to contain a weak, insufficient subset of LastPass's features.)\n\nThe spectre of vendor lock-in looms large with LastPass, of course, but I feel they've done well to establish a track record. I can export my vault to XML too, which means I can back it up in a non-proprietary format.\n\nLastPass is truly ugly, hideously ugly, but I think it's the best choice out there for features, cross-platform support and security. Additionally, it is fairly priced.\n\nMigrating my passwords into LastPass wasn't too bad using tools like [this script](https://gist.github.com/rwest/1583781). But there was nothing to get my 200+ \"Secure Notes\" migrated short of copying and pasting them. I looked at using the `security` command-line tool that comes with OS X, but it doesn't export the information in a very useful format.\n\nSo, with a few hours of hacking I produced `secure-notes-exporter`. The code is ugly, and I'm sure my lack of knowledge about Core Foundation idioms shows, but the code works.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwincent%2Fsecure-notes-exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwincent%2Fsecure-notes-exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwincent%2Fsecure-notes-exporter/lists"}