diff options
author | Louis-Bertrand Varin <louisv@unito.io> | 2017-01-31 03:18:35 +0300 |
---|---|---|
committer | Louis-Bertrand Varin <louisbvarin@gmail.com> | 2017-03-16 17:09:50 +0300 |
commit | 52991f3d66eb5e7d7a5098dfe3b9bb7106466f52 (patch) | |
tree | 673f3455f9fdf957bf55ad6e3fa4448b912c9dac /utils | |
parent | 37441e3fac8f8356d5379995348aa0f0b6eb1cb9 (diff) |
Add first keepassxc-cli version.
Diffstat (limited to 'utils')
-rw-r--r-- | utils/CMakeLists.txt | 36 | ||||
-rw-r--r-- | utils/kdbx-extract.cpp | 90 | ||||
-rw-r--r-- | utils/kdbx-merge.cpp | 138 |
3 files changed, 0 insertions, 264 deletions
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt deleted file mode 100644 index 83f00b4bc..000000000 --- a/utils/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 or (at your option) -# version 3 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -include_directories(../src) - -add_executable(kdbx-extract kdbx-extract.cpp) -target_link_libraries(kdbx-extract - keepassx_core - Qt5::Core - ${GCRYPT_LIBRARIES} - ${GPGERROR_LIBRARIES} - ${ZLIB_LIBRARIES}) - -add_executable(kdbx-merge kdbx-merge.cpp) -target_link_libraries(kdbx-merge - keepassx_core - Qt5::Core - ${GCRYPT_LIBRARIES} - ${GPGERROR_LIBRARIES} - ${ZLIB_LIBRARIES}) - - -add_executable(entropy-meter entropy-meter.cpp) -target_link_libraries(entropy-meter zxcvbn) diff --git a/utils/kdbx-extract.cpp b/utils/kdbx-extract.cpp deleted file mode 100644 index 255f5d003..000000000 --- a/utils/kdbx-extract.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 or (at your option) - * version 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <stdio.h> - -#include <QCommandLineParser> -#include <QCoreApplication> -#include <QFile> -#include <QStringList> -#include <QTextStream> - -#include "core/Database.h" -#include "crypto/Crypto.h" -#include "format/KeePass2Reader.h" -#include "keys/CompositeKey.h" -#include "keys/FileKey.h" -#include "keys/PasswordKey.h" - -int main(int argc, char **argv) -{ - QCoreApplication app(argc, argv); - - QCommandLineParser parser; - parser.setApplicationDescription(QCoreApplication::translate("main", - "Extract and print a KeePassXC database file.")); - parser.addPositionalArgument("database", QCoreApplication::translate("main", "path of the database to extract.")); - parser.addHelpOption(); - parser.process(app); - - const QStringList args = parser.positionalArguments(); - if (args.size() != 1) { - parser.showHelp(); - return 1; - } - - if (!Crypto::init()) { - qFatal("Fatal error while testing the cryptographic functions:\n%s", qPrintable(Crypto::errorString())); - } - - static QTextStream inputTextStream(stdin, QIODevice::ReadOnly); - QString line = inputTextStream.readLine(); - CompositeKey key = CompositeKey::readFromLine(line); - - QString databaseFilename = args.at(0); - QFile dbFile(databaseFilename); - if (!dbFile.exists()) { - qCritical("File %s does not exist.", qPrintable(databaseFilename)); - return 1; - } - if (!dbFile.open(QIODevice::ReadOnly)) { - qCritical("Unable to open file %s.", qPrintable(databaseFilename)); - return 1; - } - - KeePass2Reader reader; - reader.setSaveXml(true); - Database* db = reader.readDatabase(&dbFile, key); - delete db; - - QByteArray xmlData = reader.xmlData(); - - if (reader.hasError()) { - if (xmlData.isEmpty()) { - qCritical("Error while reading the database:\n%s", qPrintable(reader.errorString())); - return 1; - } - else { - qWarning("Error while parsing the database:\n%s\n", qPrintable(reader.errorString())); - } - } - - QTextStream out(stdout); - out << xmlData.constData() << "\n"; - - return 0; -} diff --git a/utils/kdbx-merge.cpp b/utils/kdbx-merge.cpp deleted file mode 100644 index da780ea1b..000000000 --- a/utils/kdbx-merge.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 or (at your option) - * version 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <stdio.h> - -#include <QCommandLineParser> -#include <QCoreApplication> -#include <QFile> -#include <QSaveFile> -#include <QStringList> -#include <QTextStream> - -#include "core/Database.h" -#include "crypto/Crypto.h" -#include "format/KeePass2Reader.h" -#include "format/KeePass2Writer.h" -#include "keys/CompositeKey.h" - -int main(int argc, char **argv) -{ - - QCoreApplication app(argc, argv); - - QCommandLineParser parser; - parser.setApplicationDescription(QCoreApplication::translate("main", "Merge 2 KeePassXC database files.")); - parser.addPositionalArgument("database1", QCoreApplication::translate("main", "path of the database to merge into.")); - parser.addPositionalArgument("database2", QCoreApplication::translate("main", "path of the database to merge from.")); - - QCommandLineOption samePasswordOption(QStringList() << "s" << "same-password", - QCoreApplication::translate("main", "use the same password for both database files.")); - - parser.addHelpOption(); - parser.addOption(samePasswordOption); - parser.process(app); - - const QStringList args = parser.positionalArguments(); - if (args.size() != 2) { - parser.showHelp(); - return 1; - } - - if (!Crypto::init()) { - qFatal("Fatal error while testing the cryptographic functions:\n%s", qPrintable(Crypto::errorString())); - } - - static QTextStream inputTextStream(stdin, QIODevice::ReadOnly); - - QString line1 = inputTextStream.readLine(); - CompositeKey key1 = CompositeKey::readFromLine(line1); - - CompositeKey key2; - if (parser.isSet("same-password")) { - key2 = *key1.clone(); - } - else { - QString line2 = inputTextStream.readLine(); - key2 = CompositeKey::readFromLine(line2); - } - - - QString databaseFilename1 = args.at(0); - QFile dbFile1(databaseFilename1); - if (!dbFile1.exists()) { - qCritical("File %s does not exist.", qPrintable(databaseFilename1)); - return 1; - } - if (!dbFile1.open(QIODevice::ReadOnly)) { - qCritical("Unable to open file %s.", qPrintable(databaseFilename1)); - return 1; - } - - KeePass2Reader reader1; - Database* db1 = reader1.readDatabase(&dbFile1, key1); - - if (reader1.hasError()) { - qCritical("Error while parsing the database:\n%s\n", qPrintable(reader1.errorString())); - return 1; - } - - - QString databaseFilename2 = args.at(1); - QFile dbFile2(databaseFilename2); - if (!dbFile2.exists()) { - qCritical("File %s does not exist.", qPrintable(databaseFilename2)); - return 1; - } - if (!dbFile2.open(QIODevice::ReadOnly)) { - qCritical("Unable to open file %s.", qPrintable(databaseFilename2)); - return 1; - } - - KeePass2Reader reader2; - Database* db2 = reader2.readDatabase(&dbFile2, key2); - - if (reader2.hasError()) { - qCritical("Error while parsing the database:\n%s\n", qPrintable(reader2.errorString())); - return 1; - } - - db1->merge(db2); - - QSaveFile saveFile(databaseFilename1); - if (!saveFile.open(QIODevice::WriteOnly)) { - qCritical("Unable to open file %s for writing.", qPrintable(databaseFilename1)); - return 1; - } - - KeePass2Writer writer; - writer.writeDatabase(&saveFile, db1); - - if (writer.hasError()) { - qCritical("Error while updating the database:\n%s\n", qPrintable(writer.errorString())); - return 1; - } - - if (!saveFile.commit()) { - qCritical("Error while updating the database:\n%s\n", qPrintable(writer.errorString())); - return 0; - } - - qDebug("Successfully merged the database files.\n"); - return 1; - -} |