MrC's Convert to 1Password Utility (mrc-converter-suite)

14647495152

Comments

  • MrCMrC Community Moderator

    Cheers, @creed_erickson .

  • Thank you so much MrC... i have been wanting to jump ship from another password manager to 1P for years but the daunting task of doing all those command line operations kept me away.. i finally decided to face my fears today and managed to do it. Subbed for the yearly plan... All because of your incredible work in detailing the steps. Thank you my friend :)

  • MrCMrC Community Moderator

    @twistedmind ,

    You're welcome. That's excellent news, and thanks for the follow-up posting. It helps others feel more confident they'll succeed as well.

    Enjoy 1Password!

  • Thank you very very much @MrC

    I'm just trying out 1Password and was so happy to discover your solutions and everyone's contribution to make the transition from Safari seamless.

  • MrCMrC Community Moderator

    You're very welcome @timmehthekid .

    At first glance, I read your name as Tim Meth Kid! :-)

    Happy New Year, and Enjoy 1Password!

  • bill8102bill8102
    edited January 5

    Hi MrC, really appreciate your work.
    Now I'm trying to extra passwords from iClound keychain
    //Don't have 1password yet
    OS: macOS Sierra (version 10.12.6)
    using the latest stable bits

    when I run AppleScript_Conversion_Helper following instructions, I got the following:
    "Examined 416 items
    Skipped 416 non-login items
    Skipped 0 duplicate items
    Imported 0 items
    Exported 0 total items"

    wondering what can I do for this? And I tried to manually select items in keychain, all types are not exportable (the button is grey)

  • MrCMrC Community Moderator
    edited January 7

    Hi @bill8102 ,

    Use the converter package in Testing Bits. See how that works out.

    [ bill8102 - I don't know why my comment didn't post the other day. It was sitting in my Drafts area. Sorry about that!]

  • MrCMrC Community Moderator

    News:

    • There is a new Firefox native converter in the 1.11 version of the converter suite. It is in Testing Bits.
    • I've included the Get_Safari11_Passwords and Get_Safari12_Passwords applescripts into the suite. Eventually I'll get them called via the AppleScript_Conversion_Helper.
    • I will be eliminating the Stable Bits / Testing Bits concept very soon, and will instead just post updates to a singular update. This should eliminate a lot of confusion, and ensure users have access to the latest version. For in-development work, and customizations that will be shared narrowly, I'll use a sharing area such as In Progress (or something like that).
  • I am using Mac OS X High Sierra 10.13.6. I downloaded convert_to_ip4 today (so I have the latest version, apparently 1.11), and I am using Roboform 8.5.3. I successfully used the export function in Roboform 8 to export a csv file, and then successfully imported the logins in 1Password.com. All good.

    However, now I want to import the Safenotes from Roboform 8. Using Roboform's Print List feature I created pm_export_safenotes.html as instructed in your ReadMe file. But when I use either the AppleScript_Conversion_Helper, or entering the terminal command manually, I receive the message "Unexpected RoboForm print list format; please report your platform and version of RoboForm" on the terminal. I have this same problem if I try to convert pm_export_logins.html or pm_export_identities.html .

    I read the February 2018 conversation in this forum with @tajchiu and @sjk and @mrc's response, but I am not clear what action I am supposed to take. For one thing, I don't see how to download V1.09.

  • MrCMrC Community Moderator
    edited January 14

    @mkassarjian ,

    Can you tell me how you exported (saved) your SafeNotes? You'd want to use File > Print list > Safenotes.

    I just tested this on Windows and it worked. I'm checking macOS now...

  • MrCMrC Community Moderator
    edited January 14

    @mkassarjian ,

    I just tested v8 macOS and it worked for me, so I'll await your reply.

    Version 1.11 in Testing Bits is what you want.

    $ perl convert_to_1p4.pl  roboform -vd ~/Desktop/RoboForm\ Safenotes\ 2019-01-13\ 19-16-05.html
    
    main                : Runninng script from '/Users/MrC/Documents/Coding/1P4_converters/convert_to_1p4'
    main                : Command Line: roboform -vd /Users/MrC/Desktop/RoboForm Safenotes 2019-01-13 19-16-05.html
    main                : Output file: /Users/MrC/Desktop/1P_import.1pif
    print_fileinfo      : Input file info: "/Users/MrC/Desktop/RoboForm Safenotes 2019-01-13 19-16-05.html"
    print_fileinfo      :   size: 540
    print_fileinfo      :   kind: HTML document text, UTF-8 Unicode (with BOM) text, with CRLF, LF line terminators
    print_fileinfo      :   mime: text/html; charset=utf-8
    get_export_file_info: RoboForm export version: mac; type: safenotes
    do_import           :   notes => unfold_and_chop Testing
    
    abc
    ø ∫ ß ∂ î
    DONE
    do_import           :   title => a safe note
    find_card_type      :       type defaulting to 'note'
    print_record        : title: a safe note
                          tags:
                          notes: Testing<CR><CR>abc<CR>ø ∫ ß ∂ î <CR>DONE
    Imported 1 item
    create_pif_record   : Title: a safe note
    create_pif_record   :   notes: Testing<CR><CR>abc<CR>ø ∫ ß ∂ î <CR>DONE
    Exported 1 note item
    Exported 1 total item
    You may now import the file /Users/MrC/Desktop/1P_import.1pif into 1Password
    

    Edit: I re-read - you exported as CSV. Don't use that method. See the README.pdf for directions on how to export from Roboform.

  • Yay! Import of Roboform 8 Safenotes worked beautifully. Thank you so much for being there for us!
    I successfully exported the Print List file and saved it using these steps: (1) Open Robofom 8 app on OS X (2) Select File/PrintList / Safenotes. This opens the PrintList file on my Chrome Browser, but I ignored that. At the same time, a PrintList file was written automatically to my desktop (no "Save" needed) with the Safenotes in it, which I was then able to successfully convert.

    (What I did wrong the first time was go to my Chrome Browser where the PrintList file was open, and then select File/Save Page As... This created a file on my desktop which was unreadable by your converter.)

  • MrCMrC Community Moderator

    Excellent, and you're welcome, @mkassarjian ,

    Enjoy 1Password!

  • edited January 15

    On Testing Bits 1.11 I keep getting

    C:\Users\xxx\Downloads\convert_to_1p4_1.11> perl .\convert_to_1p4.pl keepass2 --help
    Can't use an undefined value as an ARRAY reference at .\convert_to_1p4.pl line
            93 (#1)
        (F) A value used as either a hard reference or a symbolic reference must
        be a defined value.  This helps to delurk some insidious errors.
    
    Uncaught exception from user code:
            Can't use an undefined value as an ARRAY reference at .\convert_to_1p4.pl line 93.
    

    on Windows 10, with Strawberry Perl 5, version 28, subversion 1 (v5.28.1) built for MSWin32-x64-multi-thread

    Please note that this is specific to the Keepass2 converter, others seem to work fine.

  • MrCMrC Community Moderator
    edited January 15

    @sebastianhaas ,

    Sorry about that. I'd re-worked the options processing code and missed one situation. I've just posted the fix in the 1.11 update.

  • @MrC nothing to be sorry about, I just wanted to let you know. After all, it's a test release and stable was working just fine for me. Thanks for your time and the great tool.

  • MrCMrC Community Moderator

    @sebastianhaas ,

    Thanks for the kind words. Your bug above, also revealed something else I was not handling well, and had never encountered. I've fixed this, and will post the update soon:

    • convert_to_1p4.pl was not handling the situation where multiple conversion files were
      passed on the command line and a converter supported only a single file. Converters can now
      signal that they can accept a file list. Converters updated: roboform, txt2notes.
  • @MrC
    I am on windows 10 and installed the x32 portable perl as per the instructions. I am attempting to convert my 450 line password list from firefox. Here is my output on a missing module. Please advise if you have a chance. Thanks for your diligent work.
    Cheers,
    Ryan

    C:\Users\Owner\Desktop\convert_to_1p4>perl convert_to_1p4.pl --help
    Can't locate UUID/Tiny.pm in @INC (you may need to install the UUID::Tiny module) (@INC contains: C:/Users/Owner/Desktop/convert_to_1p4/. C:/Users/Owner/Desktop/convert_to_1p4/lib C:/myperl/perl/site/lib C:/myperl/perl/vendor/lib C:/myperl/perl/lib) at C:/Users/Owner/Desktop/convert_to_1p4/./Utils/PIF.pm line 17.
    BEGIN failed--compilation aborted at C:/Users/Owner/Desktop/convert_to_1p4/./Utils/PIF.pm line 17.
    Compilation failed in require at convert_to_1p4.pl line 18.
    BEGIN failed--compilation aborted at convert_to_1p4.pl line 18 (#1)
    (F) You said to do (or require, or use) a file that couldn't be found.
    Perl looks for the file in all the locations mentioned in @INC, unless
    the file name included the full path to the file. Perhaps you need
    to set the PERL5LIB or PERL5OPT environment variable to say where the
    extra library is, or maybe the script needs to add the library name
    to @INC. Or maybe you just misspelled the name of the file. See
    "require" in perlfunc and lib.

    Uncaught exception from user code:
    Can't locate UUID/Tiny.pm in @INC (you may need to install the UUID::Tiny module) (@INC contains: C:/Users/Owner/Desktop/convert_to_1p4/. C:/Users/Owner/Desktop/convert_to_1p4/lib C:/myperl/perl/site/lib C:/myperl/perl/vendor/lib C:/myperl/perl/lib) at C:/Users/Owner/Desktop/convert_to_1p4/./Utils/PIF.pm line 17.
    BEGIN failed--compilation aborted at C:/Users/Owner/Desktop/convert_to_1p4/./Utils/PIF.pm line 17.
    Compilation failed in require at convert_to_1p4.pl line 18.
    BEGIN failed--compilation aborted at convert_to_1p4.pl line 18.

  • MrCMrC Community Moderator
    edited January 17

    @rashaunny ,

    Sorry about that. A future change slipped into the 1.11 version I posted yesterday. I've updated the 1.11 archive.

    However, the fix for you is easy. Just rename the folder Modules to lib (in lowercase, its an abbreviation for library).

  • Hi Awesome article! I have just installed 1password version 7.3.657 and wish to import a keepass2 xml file. I am using keepass version 2.41 on Windows 10 and have downloaded the stablebits.zip but cant seem to locate the perl zip, is it a seperate download? Thanks

  • Ok, Just read the readme properly and Have found the download link so ignore the last comment. thanks

  • Sorted after a couple of hours wrestling with windows 10 !! Nothing wrong with your code but had an issue with the userprofile variable, once I had sorted that out and read the instructions PROPERLY it worked like a dream and imported my Keepass2 database without any errors. Thank you so much for your expert coding and instructions. :)

  • MrCMrC Community Moderator

    @jalfreziboy ,

    Good to hear you got it sorted out.

    However, you should use version 1.11 in Testing Bits. It include some changes for KeePass2.

  • Hi,
    Many thanks for your effort writing such a usefull program!

    I just wanted to convert my firefox passwords to safe them more secure in 1password. I have Windows 7 x64, downloaded Strawberry Perl 5.28.1.1, executed the install_modules.bat and then used the version 1.11 of your script.

    Unfortunately my user folder includes the umlaut ö, which was a problem several times before, so I think ist might be the issue here to:

    C:\Users\göllner.thomas\Desktop\convert_to_1p4>perl convert_to_1p4.pl firefox -vd
    main : Runninng script from 'C:/Users/g├Âllner.thomas/Desktop/convert_to_1p4'
    main : Command Line: firefox -vd
    main : Output file: C:\Users\g├Âllner.thomas\Desktop\1P_import.1pif
    print_fileinfo : Input file info: "C:\Users\g├Âllner.thomas/AppData/Roaming/Mozilla/Firefox/Profiles/rjeqc3ze.default/key4.db"
    print_fileinfo : size: 294912
    print_fileinfo : Input file info: "C:\Users\g├Âllner.thomas/AppData/Roaming/Mozilla/Firefox/Profiles/rjeqc3ze.default/logins.json"
    print_fileinfo : size: 70097
    Profile 'default' at C:\Users\g├Âllner.thomas/AppData/Roaming/Mozilla/Firefox/Profiles/rjeqc3ze.default
    Convert it? [Y to convert, N to skip] y
    Enter the profiles master password [just hit Enter if none]:
    getKey : *** Connecting to Firefox key4.db key database
    DBI connect('dbname=C:\Users\g├Âllner.thomas/AppData/Roaming/Mozilla/Firefox/Profiles/rjeqc3ze.default/key4.db','',...) failed: unable to open database file at
    C:/Users/g├Âllner.thomas/Desktop/convert_to_1p4/./Converters/Firefox.pm line 224.
    Unable to open Firefox key4.db DB file: C:\Users\g├Âllner.thomas/AppData/Roaming/Mozilla/Firefox/Profiles/rjeqc3ze.default/key4.db
    unable to open database file

    Can you please have a look into it and maybe even fix it? May it be a workaround to copy the key4.db file to another folder? How can I then specify the folder to the converter?

    Best regards,
    Thomas

  • MrCMrC Community Moderator

    @goelli ,

    I'll take a look now. Rookie mistake on my part for not dealing with the UTF-8 !

  • MrCMrC Community Moderator

    @goelli ,

    I've just updated 1.11 in Testing Bits. Please give it a try.

  • I'm sorry, with this new line added it makes nothing at all:

    C:\Users\göllner.thomas\Desktop\convert_to_1p4>perl convert_to_1p4.pl firefox -d
    main : Runninng script from 'C:/Users/g├Âllner.thomas/Desktop/convert_to_1p4'
    main : Command Line: firefox -d
    main : Output file: C:\Users\g├Âllner.thomas\Desktop\1P_import.1pif

    C:\Users\göllner.thomas\Desktop\convert_to_1p4>

  • MrCMrC Community Moderator
    edited January 19

    @goelli

    Very sorry about that. I had created a test profile with a Unicode character in the profile name, but didn't think to create a Windows user profile. This means, I missed checking for the Firefox "profile.ini", and the update I posted missed ALL profiles for Windows users! Oops.

    The changes were more significant than I realized. But that's OK, since it encouraged me to write some code I wanted to complete anyway. Since the code change was significant, I limited it to only affect this single converter until I've had a chance to test it across the converters. I also have more changes to do, to really better handle various code pages in Windows. It doesn't appear from your profile name that it will matter for you.

    I just posted an update - give it a try!

  • It doesn't work for me and I don't know why. Could someone please help me out?

    Error: failed to load converter module 'firefox'

    Can't locate Win32/Unicode/File.pm in @INC (you may need to install the Win32::Unicode::File module) (@INC contains: C:/Users/Enterhaken/Desktop/convert_to_1p4/. C:/Users/Enterhaken/Desktop/convert_to_1p4/Modules C:/myperl/perl/site/lib C:/myperl/perl/vendor/lib C:/myperl/perl/lib .) at C:/myperl/perl/lib/if.pm line 15.
    BEGIN failed--compilation aborted at C:/Users/Enterhaken/Desktop/convert_to_1p4/./Utils/File.pm line 16.
    Compilation failed in require at C:/Users/Enterhaken/Desktop/convert_to_1p4/./Converters/Firefox.pm line 40.
    BEGIN failed--compilation aborted at C:/Users/Enterhaken/Desktop/convert_to_1p4/./Converters/Firefox.pm line 40.
    Compilation failed in require at convert_to_1p4.pl line 50.

    Usage: convert_to_1p4.pl firefox ...
    Use of uninitialized value $_[0] in split at
    C:/Users/Enterhaken/Desktop/convert_to_1p4/./Utils/Utils.pm line 184 (#1)
    (W uninitialized) An undefined value was used as if it were already
    defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
    To suppress this warning assign a defined value to your variables.

    To help you figure out what was undefined, perl will try to tell you
    the name of the variable (if any) that was undefined.  In some cases
    it cannot do this, so it also tells you what operation you used the
    undefined value in.  Note, however, that perl optimizes your program
    and the operation displayed in the warning may not necessarily appear
    literally in your program.  For example, "that $foo" is usually
    optimized into "that " . $foo, and the warning will refer to the
    concatenation (.) operator, even though there is no . in
    your program.
    

    Options:

    Supported import types:

    Supported export types:

  • It doesn't work for me and I don't know why. Could someone please help me out?

    Error: failed to load converter module 'firefox'
    Can't locate Win32/Unicode/File.pm in @INC (you may need to install the Win32::Unicode::File module) (@INC contains: C:/Users> /Enterhaken/Desktop/convert_to_1p4/. C:/Users/Enterhaken/Desktop/convert_to_1p4/Modules C:/myperl/perl/site/lib C:/myperl/perl/vendor/lib C:/myperl/perl/lib .) at C:/myperl/perl/lib/if.pm line 15.
    BEGIN failed--compilation aborted at C:/Users/Enterhaken/Desktop/convert_to_1p4/./Utils/File.pm line 16.
    Compilation failed in require at C:/Users/Enterhaken/Desktop/convert_to_1p4/./Converters/Firefox.pm line 40.
    BEGIN failed--compilation aborted at C:/Users/Enterhaken/Desktop/convert_to_1p4/./Converters/Firefox.pm line 40.
    Compilation failed in require at convert_to_1p4.pl line 50.

    Usage: convert_to_1p4.pl firefox ...
    Use of uninitialized value $_[0] in split at
    C:/Users/Enterhaken/Desktop/convert_to_1p4/./Utils/Utils.pm line 184 (#1)
    (W uninitialized) An undefined value was used as if it were already
    defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
    To suppress this warning assign a defined value to your variables.

    To help you figure out what was undefined, perl will try to tell you
    the name of the variable (if any) that was undefined. In some cases
    it cannot do this, so it also tells you what operation you used the
    undefined value in. Note, however, that perl optimizes your program
    and the operation displayed in the warning may not necessarily appear
    literally in your program. For example, "that $foo" is usually
    optimized into "that " . $foo, and the warning will refer to the
    concatenation (.) operator, even though there is no . in
    your program.

    Options:

    Supported import types:

    Supported export types:

This discussion has been closed.