Git Product home page Git Product logo

fix-keeweb-kdbx's Introduction

Fix .KDBX files which are can be opened in KeeWeb, but not in KeePassXC

In some circumstances, KeePass databases created with KeeWeb will not open in KeePassXC due to the errors such as:

Invalid EnableSearching value

This is a tool to "repair" the .kdbx created by KeeWeb so that it can be opened in KeePassXC.

โš ๏ธ Disclaimer

This tool is operating on your sensitive data such as your user names and passwords. The author assumes no liability for any data loss that might result from using this script. Make sure to personally review the contents of the scripts you are running, to ensure that none of your data is at risk.

To view the source code of this script, go to the following URL: https://github.com/eliandoran/fix-keeweb-kdbx/blob/master/recover.sh

If you have any question or concerns regarding the implementation of the script, feel free to open an issue.

How it works

If you are interested in how the tool manages to fix the files, see the following file: How-it-works.md.

Supported platforms

  • GNU/Linux, should work on most distributions provided keepassxc-cli is installed and available in the system path (see below).
  • macOS, provided the official KeePassXC application is installed in /Applications/KeePassXC.app.

Prerequisites

The "KeepassXC CLI" is required for parsing the .xml file of the "bad" database and creating a fresh .kdbx file. Without it, the tool will not work. If you are using Linux, it should already be available via your KeePassXC installation.

To test if the tool is available, type the following command in your favourite terminal:

keepassxc-cli

Running this command should output some information about the KeepassXC CLI. If you get command not found or similar errors, it means that it is not available.

Running the tool

First, clone the repository and make the script executable. This should only be done once.

git clone https://github.com/eliandoran/fix-keeweb-kdbx.git
cd fix-keeweb-kdbx
chmod +x recover.sh

Afterwards, the tool can simply be run via:

./recover.sh

Using the tool

Step 1. Start the tool

Because there are multiple versions of KeePass databases, as well as differing encryption algorithms, it is outside the scope of the tool to actually decrypt the databases. For that, we are going to use KeeWeb itself.

The downside is that the password database has to be exported as an .xml file. The .XML file is the raw contents of the database, without any encryption. So it must be stored somewhere safe because your passwords are exposed in plain-text.

When the tool is first started, it will create a temporary directory for you to export the database from KeeWeb. Under most Linux systems, this directory is created under /tmp, which is not saved to disk, but is kept in RAM. This means that the decrypted passwords are safer since they will not be persisted after a reboot. The tool makes sure the temporary directory is removed after it is run, to protect your data.

Run the tool by going to the directory where you cloned the repository. Open a terminal in that directory and run the following command:

./recovery.sh

You will be greeted by the following message:

In KeeWeb, go to the file settings and select "Save to...", then select "XML".
Save the XML to the following temporary directory: /tmp/tmp.Ds521R
Please don't save it anywhere else to avoid security issues. The XML files are not encrypted.
After placing all your exported XML files, press Enter to continue.

In this case, the /tmp/tmp.Ds521R is the path to the temporary directory. This will differ each time you run the tool. Note this path as it will be used in all the next steps. The directory should also be opened automatically for you in the file manager, if your system allows it.

Step 2. Export the .kdbx file to .xml files

To decrypt the .kdbx and generate the .xml files:

  1. Start KeeWeb and open the .kdbx file which generates errors in KeePassXC.
  2. After opening the file, look for the file button in the bottom-left of the KeeWeb window. It should display the name of the life next to a "lock" icon. Press it to reveal the file settings.
  3. A screen indicating the file settings will appear. Press "Save to..." to reveal the file export settings.
  4. Pressing "Save to..." will display a list of supported file formats for exporting. Press the "XML" button.
  5. A popup warning that the passwords will not be encrypted is shown. Press "Yes" to proceed.
  6. In the save file dialog, make sure that the directory where the .xml file is saved is the temporary directory from step 1 (e.g. /tmp/tmp.Ds521R).
    • Saving the .xml file somewhere else is not recommended because the passwords will be saved unencrypted to your disks.
    • Make sure the file extension is .xml, otherwise the tool will be unable to find it.
    • Depending on your OS, you might be able to type the full path directly in the "Name" field (e.g. /tmp/tmp.Ds521R/myfile.xml).

If you have multiple .kdbx files, simply repeat the steps. In the end, you should have multiple .xml files in the temporary directory.

Step 3. Fixing the files

After making sure that the .xml files were added to the temporary directory, go back to the terminal where the tool is run and press Enter. This will proceed to the next step.

Afterwards, the tool will open each .xml file and try to fix its errors. After the file is patched, it will try to export it back to .kdbx so that it can be opened in KeePassXC. The name of the resulting .kdbx is going to be the same as the .xml file, plus the right extension (e.g. db.xml becomes db.xml.kdbx).

At this point, the tool uses the KeePassXC CLI utility to export the .kdbx file. This means that you will have instant feedback to see if the file was successfully repaired. If you have errors at this step, please check the Reporting issues section.

For each file a .kdbx file will be created, and each file can be password protected. For this, you will have to enter a password at each of these prompts:

Exporting db.xml to KDBX: db.xml.kdbx
Enter password to encrypt database (optional):

Step 4. Finishing up

If the previous step finished completely, you should get the following message:

The files have been successfully fixed. Move the KDBX files to somewhere safe and press ENTER.
The temporary directory '/tmp/tmp.wYFqr7' will be removed.

Using your file manager, copy/move the new .kdbx files in a directory of your choice. The unencrypted .xml files should already be removed at this point. Afterwards, go back to the tool and press Enter to close it. This will cause the temporary directory to be removed entirely.

Reporting issues

If you get errors such as:

Invalid EnableAutoType value
Invalid EnableSearching value
Invalid number value
Invalid uuid value

Make sure to report them to the Issues section of the repository: https://github.com/eliandoran/fix-keeweb-kdbx/issues

Check if the issue has not already been reported. If it is a new issue, press the "New issue" button, write a short summary of the error and press "Submit new issue".

Please make sure you are not submitting any sensitive information such as your .xml file, or any of your passwords.

fix-keeweb-kdbx's People

Contributors

eliandoran avatar diskun00 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.