{ "info": { "author": "Louis Abraham", "author_email": "louis.abraham@yahoo.fr", "bugtrack_url": null, "classifiers": [ "Topic :: Security :: Cryptography", "Topic :: Utilities" ], "description": "[![PyPI\nversion](https://badge.fury.io/py/ffpass.svg)](https://badge.fury.io/py/ffpass)\n[![Downloads](https://pepy.tech/badge/ffpass)](https://pepy.tech/project/ffpass)\n\n# ffpass - Import and Export passwords for Firefox Quantum\n\nThe latest version of Firefox doesn't allow to import or export the\nstored logins and passwords as a file.\n\nThis tools interacts with the encrypted password database of Firefox to\nprovide these features.\n\n## Installation\n\nffpass requires Python 3.6+ and will work with Firefox 58+\n\n``` bash\npip install ffpass\n```\n\n## Features\n\n - Supports master passwords\n - Automatic profile selection for Linux, macOS and Windows\n - Export to CSV\n - Import from CSV compatible with Google Chrome\n\n> Note: Firefox must be closed during the whole process, as these\n> actions change its database. \n>\n> Note: If you have Sync enabled, you'll have to disconnect and\n> reconnect your Firefox account after importing the passwords.\n\n## Export to CSV\n\n``` bash\nffpass export > passwords.csv\nffpass export -f passwords.csv\nffpass export --file passwords.csv\n```\n\n### Usage\n\n usage: ffpass export [-h] [-t TO_FILE] [-d DIRECTORY] [-v]\n\n outputs a CSV with header `url,username,password`\n\n optional arguments:\n -h, --help show this help message and exit\n -f FILE, --file FILE file to export password (defaults to stdout)\n -d DIRECTORY, --directory DIRECTORY, --dir DIRECTORY\n Firefox profile directory\n -v, --verbose\n\n## Import from CSV\n\n``` bash\nffpass import < passwords.csv\nffpass import -f passwords.csv\nffpass import --file passwords.csv\n```\n\nBy default, it works with the passwords exported from Google Chrome.\n\n### Usage\n\n usage: ffpass import [-h] [-f FROM_FILE] [-d DIRECTORY] [-v]\n\n imports a CSV with columns `url,username,password` (order insensitive)\n\n optional arguments:\n -h, --help show this help message and exit\n -f FILE, --file FILE file to import from (defaults to stdin)\n -d DIRECTORY, --directory DIRECTORY, --dir DIRECTORY\n [Firefox profile directory](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data#w_how-do-i-find-my-profile)\n -v, --verbose\n\n### Formatting\n\nFor CSV files not exported from Google Chrome, take these formatting rules into consideration:\n\n 1. The CSV must have the headers \"url\", \"username\", and \"password\". Any other columns will be safely ignored.\n 2. The url must be formatted to include all prefixes (\"http://\", \"https://\", etc), or ffpass will not be able to read them correctly.\n 3. ffpass does not care if the CSV has quotes around fields, even if some fields have them and others don't.\n\n## Transfer from Google Chrome to Firefox\n\nNow, Firefox can more accurately import logins saved in Chrome/Chromium on Windows and macOS (including timestamps, deduping, http auth. logins, etc.) so you don't need to use this tool on those operating systems. See File > Import from Another Browser\u2026 in Firefox to import.\n\n### Export from Google Chrome\n\n1. Open Chrome and enter the following in the address bar:\n `chrome://flags/#PasswordExport`\n2. Click Default next to \u201cPassword export\u201d and choose Enabled.\n3. Click Relaunch Now. Chrome will restart.\n4. Click the Chrome menu in the\n toolbar and choose Settings.\n5. Scroll to the bottom and click Advanced.\n6. Scroll to the \u201cPasswords and forms\u201d section and click \u201cManage\n passwords\u201d.\n7. Click next to Saved Passwords and\n choose Export.\n8. Click Export Passwords, enter the password you use to log in to your\n computer, and save the file to `passwords.csv` (or any other\n available name).\n\n*(instructions from )*\n\n### Import in Firefox\n\n1. Stop Firefox\n2. Import into Firefox:\n\n\n\n``` bash\nffpass import --file passwords.csv\n```\n\nRestart Firefox, making sure it didn't leave any process still open.\n\n## Transfer from Firefox to Google Chrome\n\n### Export from Firefox\n\n1. Stop Firefox\n2. Export from Firefox:\n\n\n\n``` bash\nffpass export --file passwords.csv\n```\n\n### Import in Google Chrome\n\n1. Open Chrome and enter the following in the address bar:\n `chrome://flags/#PasswordImport`\n2. Click Default next to \u201cPassword import\u201d and choose Enabled.\n3. Click Relaunch Now. Chrome will restart.\n4. Click the Chrome menu in the\n toolbar and choose Settings.\n5. Scroll to the bottom and click Advanced.\n6. Scroll to the \u201cPasswords and forms\u201d section and click \u201cManage\n passwords\u201d.\n7. Click next to Saved Passwords and\n choose Import.\n8. Select the file `passwords.csv` and click Import.\n\n## Troubleshoot\n\n - `ffpass export: error: the following arguments are required:\n -d/--directory/--dir`\n\n It means one of the following (launch with option `--verbose` to\n know):\n\n - Automatic profile selection is not supported for your platform.\n - There is more than one user profile for Firefox.\n\n You have to provide the `--dir` option with your Firefox Profile\n Folder. To find it, follow these\n [instructions](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data#w_how-do-i-find-my-profile)\n on the website of Firefox.\n\n - `Firefox password database is empty. Please create it from Firefox.`\n\n It means that Firefox currently doens't store any password. `ffpass`\n cannot create the password database for security reasons. Just add\n one password manually to Firefox to create the database.\n\n - `TypeError: 'PosixPath' object is not iterable`\n\n See [\\#17](https://github.com/louisabraham/ffpass/issues/17).\n\n - Empty url field (\"example.com\") in Firefox after importing: the urls of the source\n csv file must begin with a scheme (`http://`, `https://`, `ftp://`,\n etc\u2026)\n\n - Passwords do not sync to other devices, including Lockwise app.\n\n Importing passwords break the sync. You'll have to disconnect the\n Firefox account in the Sync options and the re-add it.\n\n## Credits\n\nThanks a lot to @lclevy for the retro-engineering\\! I was inspired by\nhis repository .\n\nSupport of the last version of Firefox and unit tests are the great work of @lmcclell.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/louisabraham/ffpass", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ffpass", "package_url": "https://pypi.org/project/ffpass/", "platform": "", "project_url": "https://pypi.org/project/ffpass/", "project_urls": { "Homepage": "https://github.com/louisabraham/ffpass" }, "release_url": "https://pypi.org/project/ffpass/0.5.0/", "requires_dist": [ "pyasn1", "pycryptodome" ], "requires_python": ">=3.6", "summary": "Import and Export passwords for Firefox", "version": "0.5.0", "yanked": false, "yanked_reason": null }, "last_serial": 9275384, "releases": { "0.4.4": [ { "comment_text": "", "digests": { "md5": "0b9967906ad9f79c48e726cf4bb726c8", "sha256": "62cef6c5b31eb0071663b892a2cafde1dcf2d684ba79caf529750fe537894808" }, "downloads": -1, "filename": "ffpass-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0b9967906ad9f79c48e726cf4bb726c8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6442, "upload_time": "2019-01-21T07:26:28", "upload_time_iso_8601": "2019-01-21T07:26:28.375740Z", "url": "https://files.pythonhosted.org/packages/a9/ab/25c21cb7c31dfd891e47fbe2f9aaf62838317743b36c43a7feecb175a512/ffpass-0.4.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3bfb2d469e008d8e654bb66b7733db7d", "sha256": "1a22b58cddc4b61d12ad0871c60d0cdfe2337d9fcea332d35e53fd81497093ee" }, "downloads": -1, "filename": "ffpass-0.4.4.tar.gz", "has_sig": false, "md5_digest": "3bfb2d469e008d8e654bb66b7733db7d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6265, "upload_time": "2019-01-21T07:26:30", "upload_time_iso_8601": "2019-01-21T07:26:30.208923Z", "url": "https://files.pythonhosted.org/packages/59/68/4e9e26d5c8cc27161cca92225178edffb3a0732910a49aaf692f2ee0196d/ffpass-0.4.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "35dd29fab8870445845bda309b1c31e2", "sha256": "247ae67de8518ecaa79f3a40b45a79a6832fbd1318bd93b8e578a4a4b3c82a54" }, "downloads": -1, "filename": "ffpass-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "35dd29fab8870445845bda309b1c31e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6485, "upload_time": "2019-04-02T23:00:09", "upload_time_iso_8601": "2019-04-02T23:00:09.391337Z", "url": "https://files.pythonhosted.org/packages/65/a5/1dd0542fd12bfb90f0255f188a5ef65245b831e934753658ecb93ca58c46/ffpass-0.4.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0abe7b93a24215bfdd4a43eff01e2645", "sha256": "8ea19444b8d66a5ea21122ec8866f9b8eb130f475e914b8eff21c6522f11e623" }, "downloads": -1, "filename": "ffpass-0.4.5.tar.gz", "has_sig": false, "md5_digest": "0abe7b93a24215bfdd4a43eff01e2645", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6269, "upload_time": "2019-04-02T23:00:11", "upload_time_iso_8601": "2019-04-02T23:00:11.424894Z", "url": "https://files.pythonhosted.org/packages/f3/cc/8e2e7f68b6af56459f8fda95cdd65284ff94de8f6780da63d48a64fe51a1/ffpass-0.4.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "cc73ec032678d574cf3ce79f281588a8", "sha256": "16bd0636405e51eca69deeedc6c7c623f6cce90c681d59c03e6e1a30ab59dc65" }, "downloads": -1, "filename": "ffpass-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "cc73ec032678d574cf3ce79f281588a8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6661, "upload_time": "2019-05-31T07:53:34", "upload_time_iso_8601": "2019-05-31T07:53:34.036909Z", "url": "https://files.pythonhosted.org/packages/a8/d7/ff6c7a940cc6f6f259952453629f848cad3f806eda522ff927a3aaf3a223/ffpass-0.4.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "58055df205c710d3c6d682fa6a7b8fc1", "sha256": "3452b994a565208f1da5d0bc1286dfbdcca0cc273d8c1efb0bf7ad263f1918e5" }, "downloads": -1, "filename": "ffpass-0.4.6.tar.gz", "has_sig": false, "md5_digest": "58055df205c710d3c6d682fa6a7b8fc1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6488, "upload_time": "2019-05-31T07:53:35", "upload_time_iso_8601": "2019-05-31T07:53:35.266780Z", "url": "https://files.pythonhosted.org/packages/79/df/a078f5072d9f526c22a906c16de6cf085637f063bf110b25d30bfa1c1c6f/ffpass-0.4.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "9bc0833fd933b939b33a60150c863e0e", "sha256": "2b858c6fb17047a2d601ff0e34aa1f473eba1e9f34bdf226a0e706726a3e0dbf" }, "downloads": -1, "filename": "ffpass-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "9bc0833fd933b939b33a60150c863e0e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6745, "upload_time": "2019-05-31T12:55:57", "upload_time_iso_8601": "2019-05-31T12:55:57.300773Z", "url": "https://files.pythonhosted.org/packages/33/55/650bf6a764155a61871465a9f230aa09d0bcddcf64a700bf5a8e38e96c3a/ffpass-0.4.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "88166485a70a462db8c3776abdbb00a8", "sha256": "c8a4aa351814a1e0297a521d9ee032bb87357cb5c5875bc75e0262aa0c1a63bc" }, "downloads": -1, "filename": "ffpass-0.4.7.tar.gz", "has_sig": false, "md5_digest": "88166485a70a462db8c3776abdbb00a8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6631, "upload_time": "2019-05-31T12:55:59", "upload_time_iso_8601": "2019-05-31T12:55:59.219560Z", "url": "https://files.pythonhosted.org/packages/ad/0d/91192f4bd73f3a190e85dd9205024a0f6b55f50ac927fdfeba1746c8f49e/ffpass-0.4.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "f1d7cca588cbd4b03f66e4f8d51b4f74", "sha256": "a32e789a7945f1702e53fb2e3d6ac6aa183e34580f0487c4f900c03928cecc4c" }, "downloads": -1, "filename": "ffpass-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "f1d7cca588cbd4b03f66e4f8d51b4f74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7710, "upload_time": "2019-10-22T06:52:30", "upload_time_iso_8601": "2019-10-22T06:52:30.738782Z", "url": "https://files.pythonhosted.org/packages/f6/43/55449c6235896bad59bbc6a063e0c63aa8ee96da49720f462a2fe58186bd/ffpass-0.4.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f10a70e04f93d3d6b9cd47af5ba60b13", "sha256": "188144f472e26cf7b43bd48d66a315ae99ecefac5856a4f71d0ca3104a1b865c" }, "downloads": -1, "filename": "ffpass-0.4.8.tar.gz", "has_sig": false, "md5_digest": "f10a70e04f93d3d6b9cd47af5ba60b13", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6795, "upload_time": "2019-10-22T06:52:32", "upload_time_iso_8601": "2019-10-22T06:52:32.762958Z", "url": "https://files.pythonhosted.org/packages/52/85/56f5eb74653f3a695487d70bbbdc4273dba5f3b5fa994b1f3a96052d126b/ffpass-0.4.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "31e8a7364695fcb5000cac7cfd020a32", "sha256": "d123a985c07739e19b1cb07d8d87efc3d716aa6c89089addf18bd8bc4595cbd9" }, "downloads": -1, "filename": "ffpass-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "31e8a7364695fcb5000cac7cfd020a32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8670, "upload_time": "2021-01-30T23:20:51", "upload_time_iso_8601": "2021-01-30T23:20:51.938051Z", "url": "https://files.pythonhosted.org/packages/13/a0/8b2bb1238f345c5de3b85706278884b8cd97e8a0cb0886f26f15f5c07556/ffpass-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0e9e239b0c6402476965031415aac225", "sha256": "4877566754449333650cc07aae761cb0d5a239cccb582ac8a6edee3fcc239a4e" }, "downloads": -1, "filename": "ffpass-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0e9e239b0c6402476965031415aac225", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8767, "upload_time": "2021-01-30T23:20:53", "upload_time_iso_8601": "2021-01-30T23:20:53.513796Z", "url": "https://files.pythonhosted.org/packages/29/73/43166c59b5e8df446d4f9a7fc97ce03ec63afb847d132633d48b1430aeda/ffpass-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "31e8a7364695fcb5000cac7cfd020a32", "sha256": "d123a985c07739e19b1cb07d8d87efc3d716aa6c89089addf18bd8bc4595cbd9" }, "downloads": -1, "filename": "ffpass-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "31e8a7364695fcb5000cac7cfd020a32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8670, "upload_time": "2021-01-30T23:20:51", "upload_time_iso_8601": "2021-01-30T23:20:51.938051Z", "url": "https://files.pythonhosted.org/packages/13/a0/8b2bb1238f345c5de3b85706278884b8cd97e8a0cb0886f26f15f5c07556/ffpass-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0e9e239b0c6402476965031415aac225", "sha256": "4877566754449333650cc07aae761cb0d5a239cccb582ac8a6edee3fcc239a4e" }, "downloads": -1, "filename": "ffpass-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0e9e239b0c6402476965031415aac225", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8767, "upload_time": "2021-01-30T23:20:53", "upload_time_iso_8601": "2021-01-30T23:20:53.513796Z", "url": "https://files.pythonhosted.org/packages/29/73/43166c59b5e8df446d4f9a7fc97ce03ec63afb847d132633d48b1430aeda/ffpass-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }