The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

firefox-passwords - import and export passwords from firefox

VERSION

Version 1.21

USAGE

  $ firefox-passwords >logins.csv                                       # export from the default profile

  $ firefox-passwords --export logins.csv                               # same thing but exporting directly to the file

  $ firefox-passwords --list-profile-names                              # print out the available profile names

  $ firefox-passwords --profile new --import logins.csv                 # imports logins from logins.csv into the new profile

  $ firefox-passwords --profile new --import logins.csv --check-only    # exit with a zero if the import file can be recognised.  Do not import

  $ firefox-passwords --export | firefox --import --profile-name new    # export from the default profile into the new profile

  $ firefox-passwords --export --only-host-regex "(pause|github)"       # export logins with a host matching qr/(pause|github)/smx from the default profile

  $ firefox-passwords --export --only-user "me@example.org"             # export logins with user "me@example.org" from the default profile

  $ firefox-passwords --only-user "me@example.org" --password           # just print password for the me@example.org (assuming there is only one password)

DESCRIPTION

This program is intended to import and export passwords from firefox. It uses the Marionette protocol and the nsILoginManager interface to access the Password Manager. This has been tested to work with Firefox 24 and above and has been designed to work with Firefox Sync

REQUIRED ARGUMENTS

Either --export, --import or --list-profile-names must be specified. If none of these is specified, --export is the assumed default

OPTIONS

Option names can be abbreviated to uniqueness and can be stated with singe or double dashes, and option values can be separated from the option name by a space or '=' (as with Getopt::Long). Option names are also case- sensitive.

  • --help - This page.

  • --version - Print the current version of this binary to STDOUT.

  • --binary - Use this firefox binary instead of the default firefox instance

  • --export - export passwords to STDOUT or the file name specified.

  • --import - import passwords from STDIN or the file name specified.

  • --check-only - when combined with --import, exit with a zero (0) exit code if the import file can be processed

  • --list-profile-name - print out the available profile names

  • --profile-name - specify the name of the profile to work with.

  • --visible - allow firefox to be visible while exporting or importing logins

  • --debug - turn on debug to show binary execution and network traffic during exporting or importing logins

  • --console - make the browser javascript console appear during exporting or importing logins

  • --only-host-regex - restrict the export of logins to those that have a hostname matching the supplied regex.

  • --only-user - restrict the export of logins to those that have a user exactly matching the value.

  • --password - when exporting only print the password, and only print the password if all passwords in the export match

AUTOMATIC AND MANUAL PROFILE SELECTION

firefox-passwords will automatically work with the default Profile. You can select other profiles with the --profile-name option

PRIMARY PASSWORDS

firefox-passwords will request the Primary Password if required when importing or exporting from the Password Manager.

EXPORTING AND IMPORTING TO GOOGLE CHROME OR MICROSOFT EDGE

firefox-passwords will natively read and write login csv files for Google Chrome and Microsoft Edge.

PASSWORD IMPORT/EXPORT FORMAT

firefox-passwords will export data in CSV with the following column headers

  "url","username","password","httpRealm","formActionOrigin","guid","timeCreated","timeLastUsed","timePasswordChanged"

firefox-passwords will import data in CSV. It will recognise different formats for importing passwords, including the export format and the others listed below. Plrease let me know if other formats would be useful.

PASSWORD IMPORTING FROM BITWARDEN

firefox-passwords will also accept input data in Bitwarden csv format, which includes the following column headers;

  ...,"login_uri","login_username","login_password",...

PASSWORD IMPORTING FROM LASTPASS

firefox-passwords will also accept input data in LastPass CSV, which includes the following column headers;

  url,username,password,totp,extra,name,grouping,fav

The LastPass CSV export also can include an unusual "url" value of "http://sn" for server logins, database logins, etc. All logins with a "url" value of "http://sn" AND an "extra" value matching the regular expression /^NoteType:/ will be skipped (as there is no use for these types of login records in firefox.

PASSWORD IMPORTING FROM KEEPASS

firefox-passwords will also accept input data in KeePass CSV, which includes the following column headers;

  ...,"Login Name","Password","Web Site",...

PASSWORD IMPORTING FROM 1PASSWORD

firefox-passwords will also accept the 1Password Unencrypted Export format

CONFIGURATION

firefox-passwords requires no configuration files or environment variables.

DEPENDENCIES

firefox-passwords requires the following non-core Perl modules

DIAGNOSTICS

None.

INCOMPATIBILITIES

None known.

EXIT STATUS

This program will exit with a zero after successfully completing.

BUGS AND LIMITATIONS

To report a bug, or view the current list of bugs, please visit https://github.com/david-dick/firefox-marionette/issues

AUTHOR

David Dick <ddick@cpan.org>

LICENSE AND COPYRIGHT

Copyright (c) 2021, David Dick <ddick@cpan.org>. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See "perlartistic" in perlartistic.

DISCLAIMER OF WARRANTY

BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.