Portable Passwords (launcher2)

USB installation is one of the best features of Opera: you can have as many independent profiles as many you want and creating a new one is as easy as cloning a folder. I have a lot of profile, a profile for everyday browsing, a profile for online banking and shopping, a profile for social networks, a profile for testing, etc.

But USB profiles are not fully portable, saved passwords are limited to the same computer, same Windows installation, same Windows user due to the Chromium heritage of the new Opera. Saved passwords are stored in the logins table in the Login Data database file. On OSX and Linux passwords are stored cleartext, but on Windows they are encrypted using the CryptProtectData Win32 API function. Let's see the remarks section in MSDN:

Typically, only a user with logon credentials that match those of the user who encrypted the data can decrypt the data. In addition, decryption usually can only be done on the computer where the data was encrypted. However, a user with a roaming profile can decrypt the data from another computer on the network.

That is relatively clear: Chromium uses the wrong API function to encrypt passwords. If you reinstall your Windows, all passwords are lost. If you have a dual boot system, you cannot use your passwords in the other Windows installation. If you copy your profile to a second computer, you cannot use your passwords on that one.

After this quick investigation I decided to create a small tool called launcher2.exe to correct this shortcoming and make Opera portable profiles truly portable.

On Opera startup launcher2.exe copies Login Data database from the Portable Passwords subfolder to your profile, and encrypts all passwords to their non-portable form. After these operations it starts Opera with launcher.exe.

On Opera exit launcher2.exe decrypts all passwords from their non-portable form to the Portable Passwords subfolder.

Installation
Copy launcher2.exe into the Opera application folder where launcher.exe is located. Start Opera with launcher2.exe in the future. Do not delete launcher.exe, this tool does not replace it, it completes it and executes it internally.

Although launcher2.exe has extensive error checking functionality and creates backup files on each run, it is recommended to backup your profile before starting to use this tool.

Questions and answers
Are only USB installations supported?
No, normal installations are supported also, but this kind of usage is not recommended. You have to modify manually all shortcuts (desktop, Start menu, taskbar) and all file associations to execute launcher2.exe instead of launcher.exe after each Opera update.

How can I remove launcher2.exe?
Delete launcher2.exe, rename Login Data.backup to Login Data and Login Data.backup-journal to Login Data-journal in your profile folder.

Are the passwords stored encrypted in the Portable Passwords folder?
No, they are stored intentionally cleartext, like in Chrome/Chromium on Linux for cross-platform cross-browser compatibility. I have an idea how to support master password, but I have limited free time, launcher3.exe will arrive later this year.

Download: PortablePasswords.zip
Source code: GitHub repository

2 Replies to “Portable Passwords (launcher2)”

  1. Very interesting… I’m still with O12 (and I will stay with it for long time for what I can see) so I didn’t know about this… shame? :rolleyes: I always managed my Opera installations as portable ones since Opera 9, with a complete control over every file stored in the profile folder… and now I’ve to see this other shame? :yuck: I hope that your awesome work will be considered by devs and officially integrated in their launcher as as soon as possible

  2. Thanks for your article.
    Now i can proof, that Opera/Chrome does not work as portable versions without patches or other starters.

    Many Opera Stable fanboyz are not willing to recognize that using Windows API with CryptProtectData and binding password decryption to one Windows account is stupid.

Leave a Reply

Your email address will not be published. Required fields are marked *