From 4ddd7eb43232d8de44a129f32334c42be2857a30 Mon Sep 17 00:00:00 2001 From: Thiago Rocha Date: Wed, 27 Aug 2014 12:32:01 -0300 Subject: [PATCH] Json gerado pela coleta sendo criptografado e armazenado em gercols.json, junto ao IV. --- gercols/gercols.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- gercols/gercols.h | 2 ++ src/ccacic.cpp | 23 ++++++++++++++++++++--- src/ccacic.h | 2 ++ src/ccoleta.cpp | 7 +++++-- 5 files changed, 78 insertions(+), 6 deletions(-) diff --git a/gercols/gercols.cpp b/gercols/gercols.cpp index 536c187..40b79ad 100644 --- a/gercols/gercols.cpp +++ b/gercols/gercols.cpp @@ -22,6 +22,31 @@ Gercols::Gercols(QObject *parent) oCacic.setJsonToFile(configTeste,"configReq.json"); /******************************************/ + // Inicializa o objeto de comunicação e seta chave criptográfica + oCacicComm = CacicComm("http://teste.cacic.cc", + "rG/HcIDVTZ3pPKCf[[MAIS]]I6aigUb7OMeij3FfC7qNaznk0rBRYb6q6kSK3eNfjgptS8BfwW5yJqCvD2ai7xlw9I6P21j6cvQUqlHmAJpCbfwR13urdRE9AhjfokMcPrH6R1/zXPGMHveLRRgKLcqWu2X96rmoQQdRq9EW1SXmYUAx1dCV[[MAIS]]3Ha61XBw5pq58q35zH8Gjt998rTi3ecV8ShXXevqyK[[MAIS]]W07xpgTjbbd6Fbs/35gPfdRRgMNFjq7Gq[[MAIS]]llFgYMJ6UcEhw8f0ZLQo2oL/eRW/CNyeBW6wG0hIo6EIdpi/Ht0/95Uwn2Og[[MAIS]]2UPXsmKKuTMeGwUvPdbEfexlinUO0[[MAIS]]j9qIa2dpjtl0Y5Fyk1Bvw2ZYRTXwgJpUHsBboWmtTFpgX3wSGOWMipE80K8ktRTVYOp[[MAIS]]4qS/SzKWXpfCuZoCncfwE0lCEoreTH[[MAIS]]MLrTkHJP2oqYMAyFyQcjC0UGr3BQGa2edSNXjG7jrTdddga/SODUiF94jgh/QBwhiZby34b__CRYPTED__", + "P198PVwtz5F5CfZPSUrzuaQA/QG1sTnwzl/rBnj8M7y5MglANGodG5LLD4q7oY809HuDR4g5tL64lZRBKvKPmEgWd9iAZKvT4UAm9XWN3nKKLGaznCaJohmntNGqrJP1Zd9riTHGu10mPbg/Uh3TCbBHVOICvu5sDlINlCR6A3[[MAIS]]a55RhfKNidvr5uX0kozCxr5t2DyOb5oPocEGyJKyHLQ==__CRYPTED__", + "1", + "0", + "0", + "YwpgjzZ86/eCsjvOki1KkQ==__CRYPTED__", + "8PT6U445MPNr3S7WHFa20ge/8NJSspSYE/UL3zf[[MAIS]]wkEfNZ7p1B/2o6i89gTZ44Ok__CRYPTED__", + "wshPlZWvLPhbUEQFQ1aQmA==__CRYPTED__", + "E9aKtVz/OSmGv7v1xW4FwaFukOob3qQ/HFDIz916K3ys82qfX9vBDz[[MAIS]]M2cdoYedhNkXt[[MAIS]]UVb10nD[[MAIS]]tOfbn7mlOlTDoGzUl9CgdPCsb[[MAIS]]Qa4wzuCrMw0BcCuaKfr62E3b8vh6Ug4JJbOgBo3ohG3x5O7Ap0D94GKtAWjMuTXRBbhGxPrRS4M6AhzvaN5P8pWd9FikrCLWuMs4ebnRlftef3RmVKScBDQ5zmK6sKxYNmX[[MAIS]]kKn/Gi2[[MAIS]]HftZ7HD9JLvZBpYhp4yjqShblQ67d6PlWgrRWXxwDseIiJe3NlF70zrCPBBelkeAhVDXMXnsYtLms3ElsLzxa3c5vpWzTfgyE[[MAIS]]hvALy4ivew7zaxEwrg2KY1T7GOSWZ7vljIvbhVZJgtzbnYiulFjJTtm5W4uJMKLuUJNzB0rxMkzToIE9/kDmeO2OKiwFbIfbe2Wdq0VpllOkjKtj9WM676iBSpYAXG0MsmLMj9CZ/sNi06hGF[[MAIS]]rXxiOSk66M0Hq[[MAIS]]OeUBh4z3Ra6f9yPJn0K9hIQyT[[MAIS]]Dr/QW/QdJIOkLTW8ZyyAF4DW9ojiTlUdySvB5EB1jyZ5nNTpzyE38qIdg7uM1tdWdm9FZGYxMdHwi1tS2dBeIWkDfWEjih01xiVt2dmdRgo0zIZvmmYDJ9LhCU3XPDlwdeQ8[[MAIS]]F7fnxDfxGqZQjZJ[[MAIS]]Y/Q8bdLpgbhcd3gt3SzjMLE0M[[MAIS]]hTmHG1KP2CzCibZ7grFAN3Y3jSPjmEj5Fzs26tdhdjNzSIt1FCueea8P2c4NmxPYkJCg0D1mgNrkH3L5svsO[[MAIS]]6YYrl3df4s[[MAIS]]fcK/to9s/pnkKfBKrAPF6Z4s2WPsALUPBDS5ty7RC2vqXRvH6hPR4o7xhXzQOQ/1xytr/RoEWEVeZ2wgHVVbbtFsALul/IDc7B45wmwxBx9iZHVwpQJVlNZZUBtwKqKhnXz5pM[[MAIS]]7yUAkfhMcO09pPd5kB2MBdRJs[[MAIS]]2FIk0GRUw05IHkc1rZEX5Ow==__CRYPTED__", + "Yot8BeM9lOh431SB7dYQXw==__CRYPTED__", + "Dcr8b5IfZOJjt6qyH5dGyw==__CRYPTED__", + "2.5.1.1.256.32", + "2.8.1.7", + "2.8.1.6"); + oCacicComm.setUrlSsl("https://10.1.0.137/cacic/web/app_dev.php"); + oCacicComm.setUsuario("cacic"); + oCacicComm.setPassword("cacic123"); + + bool ok; + QJsonObject jsonReply = oCacicComm.login(&ok); + QJsonObject sessionvalue = jsonReply["reply"].toObject(); + oCacic.setChaveCrypt(sessionvalue["chavecrip"].toString()); + qDebug() << "TESTE"; oColeta = new CColeta(); @@ -45,9 +70,32 @@ void Gercols::run() //emite sinal para começar a coleta emit iniciaColeta(); + oCacic.deleteFile("configReq.json"); + //salva json em arquivo oCacic.setJsonToFile(oColeta->toJsonObject(), "coleta.json"); - oCacic.deleteFile("configReq.json"); + + QFile coletaFile("coleta.json"); + if (!coletaFile.open(QIODevice::ReadWrite)) { + qDebug() << "Não foi possível abrir o coleta.json"; + emit finished(); + } + + QString coletaString; + coletaString = coletaFile.readAll(); + coletaFile.close(); +// oCacic.deleteFile("coleta.json"); + + //IV sendo gerado como uma string de 32 caracteres + std::string strIv = oCacic.genRandomString(); + + QString coletaEncriptada = oCacic.enCrypt(coletaString.toStdString(), strIv); + + QJsonObject gercolsJson; + gercolsJson["coleta"] = QJsonValue::fromVariant(coletaEncriptada); + gercolsJson["iv"] = QJsonValue::fromVariant( QString::fromStdString(strIv) ); + oCacic.setJsonToFile(gercolsJson, "gercols.json"); + //emite sinal "finished" pra finalizar a aplicação emit finished(); } diff --git a/gercols/gercols.h b/gercols/gercols.h index a6fa6bd..be59e52 100644 --- a/gercols/gercols.h +++ b/gercols/gercols.h @@ -4,11 +4,13 @@ #include #include #include +#include class Gercols : public QObject { Q_OBJECT private: + CacicComm oCacicComm; CCacic oCacic; CColeta *oColeta; QJsonObject configReq; diff --git a/src/ccacic.cpp b/src/ccacic.cpp index 6dbd803..21e9338 100644 --- a/src/ccacic.cpp +++ b/src/ccacic.cpp @@ -95,9 +95,9 @@ bool CCacic::deleteFolder(QString path) */ bool CCacic::deleteFile(QString path) { - QDir folder(path); - if (folder.exists()) - return folder.remove(path); + QFile file(path); + if (file.exists()) + return file.remove(path); else return true; } @@ -295,6 +295,23 @@ QString CCacic::convertDouble(const double &number, const int &precision) return QString::fromStdString(ss.str()); } +std::string CCacic::genRandomString(const int &len) +{ + char* s; + + static const char alphanum[] = + "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; + + for (int i = 0; i < len; ++i) { + s[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; + } + + s[len] = 0; + return std::string(s); +} + /*Getters/Setters * End. */ diff --git a/src/ccacic.h b/src/ccacic.h index 0f0e678..81e5edd 100644 --- a/src/ccacic.h +++ b/src/ccacic.h @@ -13,6 +13,7 @@ #include #include #include +#include #include "../src/crypto++/include/aes.h" #include "../src/crypto++/include/base64.h" #include "../src/crypto++/include/modes.h" @@ -41,6 +42,7 @@ public: QVariant getValueFromRegistry(QString organization, QString application, QString key); void removeRegistry(QString organization, QString application); QString convertDouble(const double &number, const int &precision = 10); + std::string genRandomString(const int &len = 32); //Geters/seters: diff --git a/src/ccoleta.cpp b/src/ccoleta.cpp index 3a322fb..5df27f1 100644 --- a/src/ccoleta.cpp +++ b/src/ccoleta.cpp @@ -7,15 +7,18 @@ CColeta::CColeta(QObject *parent) void CColeta::coletaHardware() { - qDebug() << "coletaHardware() executado"; + + qDebug() << "coletaHardware() começando sua execução"; oHardware.iniciaColeta(); + qDebug() << "coletaHardware() executado"; } void CColeta::coletaSoftware() { - qDebug() << "coletaSoftware() executado"; + qDebug() << "coletaSoftware() começando sua execução"; oSoftware.iniciaColeta(); + qDebug() << "coletaSoftware() executado"; } -- libgit2 0.21.2