Loading include/MainWindow.h +3 −1 Original line number Diff line number Diff line Loading @@ -87,9 +87,11 @@ private: QMessageBox waitBox; QVBoxLayout * layoutCharset = nullptr; QVBoxLayout * layoutLength = nullptr; QVBoxLayout * layoutSimple = nullptr; QVBoxLayout * layoutAdvanced = nullptr; ProgressThread* progressThread = nullptr; int firstTime=1; double initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, double & percentageTotal, double & percentageSecurity); double initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, QPieSeries* pieSimple, QPieSeries* pieAdvanced, double & percentageTotal, double & percentageSecurity); }; Loading include/Statsgen.h +2 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,8 @@ public: inline int getNbThreads() const { return nbThread; } inline const IntOccurrence& getStatsLength() const { return stats_length; } inline const StringOccurrence& getStatsCharsets() const { return stats_charactersets; } inline const StringOccurrence& getStatsSimple() const { return stats_simplemasks; } inline const StringOccurrence& getStatsAdvanced() const { return stats_advancedmasks; } inline const thread_data* getThreadsData() const { return td; } private: Loading src/gui/MainWindow.cpp +66 −20 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ void MainWindow::startGame() { delete layoutLength; delete layoutCharset; delete layoutSimple; WorkerThread *workerThread = new WorkerThread(stats); connect(workerThread, SIGNAL(resultReady()), this, SLOT(handleResults())); Loading @@ -198,7 +199,7 @@ void MainWindow::disableWithCount() ui->withcountButton->setChecked(false); } double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, double & percentageTotal, double & percentageSecurity) { double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, QPieSeries* pieSimple, QPieSeries* pieAdvanced, double & percentageTotal, double & percentageSecurity) { double total = stats.getTotalCounter(); double filter = stats.getTotalFilter(); percentageTotal = percentage(filter, total); Loading Loading @@ -246,9 +247,65 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh } } pieCharset->append("Other charsets", nbHideC); /* SIMPLE PIECHART */ multimap<uint64_t, string> reverseS = flip_map<string>(stats.getStatsSimple()); int top_simple = 0; uint64_t nbHideS = 0; MapIterator<uint64_t, string> itS; for(itS = reverseS.end(); itS != reverseS.begin(); itS--) { if (itS == reverseS.end()) continue; top_simple++; if (top_simple <= 10) { pieSimple->append(QString::fromStdString(itS->second), itS->first); } else { nbHideS += itS->first; } } pieSimple->append("Other Masks", nbHideS); /* ADVANCED PIECHART */ multimap<uint64_t, string> reverseA = flip_map<string>(stats.getStatsAdvanced()); int top_advanced = 0; uint64_t nbHideA = 0; MapIterator<uint64_t, string> itA; for(itA = reverseA.end(); itA != reverseA.begin(); itA--) { if (itA == reverseA.end()) continue; top_advanced++; if (top_advanced <= 10) { pieAdvanced->append(QString::fromStdString(itA->second), itA->first); } else { nbHideA += itA->first; } } pieAdvanced->append("Other Masks", nbHideA); return maxPercLength; } QVBoxLayout* drawPieChart(QPieSeries* qps, QVBoxLayout* layout, const string& title){ qps->setLabelsVisible(); QPieSlice *slice = qps->slices().at(0); slice->setExploded(); slice->setLabelVisible(); slice->setPen(QPen(Qt::darkGreen, 2)); slice->setBrush(Qt::green); QChart *chart = new QChart(); chart->addSeries(qps); chart->setTitle(QString::fromStdString(title)); chart->legend()->hide(); QChartView *chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); layout = new QVBoxLayout(); layout->addWidget(chartView); return layout; } void MainWindow::handleResults() { Loading Loading @@ -278,9 +335,11 @@ void MainWindow::handleResults() QBarSeries * barLength = new QBarSeries(); QPieSeries * pieCharset = new QPieSeries(); QPieSeries * pieSimple = new QPieSeries(); QPieSeries * pieAdvanced = new QPieSeries(); double percentageTotal, percentageSecurity, maxPercLength; maxPercLength = initGraphicalStats(barLength, pieCharset, percentageTotal, percentageSecurity); maxPercLength = initGraphicalStats(barLength, pieCharset, pieSimple, pieAdvanced, percentageTotal, percentageSecurity); /* HISTOGRAM FOR LENGTH */ QChart *chartL = new QChart(); Loading @@ -302,26 +361,13 @@ void MainWindow::handleResults() /* PIECHART FOR CHARSET */ pieCharset->setLabelsVisible(); QPieSlice *slice = pieCharset->slices().at(0); slice->setExploded(); slice->setLabelVisible(); slice->setPen(QPen(Qt::darkGreen, 2)); slice->setBrush(Qt::green); QChart *chartC = new QChart(); chartC->addSeries(pieCharset); chartC->setTitle("Charset"); chartC->legend()->hide(); QChartView *chartViewC = new QChartView(chartC); chartViewC->setRenderHint(QPainter::Antialiasing); ui->charsetWidget->setLayout(drawPieChart(pieCharset, layoutCharset, "Charset")); layoutCharset = new QVBoxLayout(); layoutCharset->addWidget(chartViewC); ui->charsetWidget->setLayout(layoutCharset); /* PIECHART FOR SIMPLE */ ui->simpleMasksWidget->setLayout(drawPieChart(pieSimple, layoutSimple, "Simple masks")); /* PIECHART FOR ADVANCED */ ui->advancedMasksWidget->setLayout(drawPieChart(pieAdvanced, layoutAdvanced, "Advanced masks")); /* LABELS */ Loading src/gui/MainWindow.ui +22 −16 Original line number Diff line number Diff line Loading @@ -303,40 +303,46 @@ <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,0,1,1,0"> <item> <widget class="QLabel" name="AnalyzedLabel"> <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,1,1,0"> <item row="2" column="0"> <widget class="QWidget" name="lengthWidget" native="true"/> </item> <item row="4" column="0"> <widget class="QLabel" name="resultLabel"> <property name="text"> <string/> </property> </widget> </item> <item> <item row="1" column="0"> <widget class="QLabel" name="securityLabel"> <property name="text"> <string/> </property> </widget> </item> <item> <widget class="QWidget" name="lengthWidget" native="true"> <item row="0" column="0"> <widget class="QLabel" name="AnalyzedLabel"> <property name="text"> <string/> </property> </widget> </item> <item row="3" column="1"> <widget class="QWidget" name="advancedMasksWidget" native="true"/> </item> <item row="2" column="1"> <widget class="QWidget" name="charsetWidget" native="true"> <property name="minimumSize"> <size> <width>800</width> <width>500</width> <height>0</height> </size> </property> </widget> </item> <item> <widget class="QWidget" name="charsetWidget" native="true"/> </item> <item> <widget class="QLabel" name="resultLabel"> <property name="text"> <string/> </property> </widget> <item row="3" column="0"> <widget class="QWidget" name="simpleMasksWidget" native="true"/> </item> </layout> </widget> Loading Loading
include/MainWindow.h +3 −1 Original line number Diff line number Diff line Loading @@ -87,9 +87,11 @@ private: QMessageBox waitBox; QVBoxLayout * layoutCharset = nullptr; QVBoxLayout * layoutLength = nullptr; QVBoxLayout * layoutSimple = nullptr; QVBoxLayout * layoutAdvanced = nullptr; ProgressThread* progressThread = nullptr; int firstTime=1; double initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, double & percentageTotal, double & percentageSecurity); double initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, QPieSeries* pieSimple, QPieSeries* pieAdvanced, double & percentageTotal, double & percentageSecurity); }; Loading
include/Statsgen.h +2 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,8 @@ public: inline int getNbThreads() const { return nbThread; } inline const IntOccurrence& getStatsLength() const { return stats_length; } inline const StringOccurrence& getStatsCharsets() const { return stats_charactersets; } inline const StringOccurrence& getStatsSimple() const { return stats_simplemasks; } inline const StringOccurrence& getStatsAdvanced() const { return stats_advancedmasks; } inline const thread_data* getThreadsData() const { return td; } private: Loading
src/gui/MainWindow.cpp +66 −20 Original line number Diff line number Diff line Loading @@ -174,6 +174,7 @@ void MainWindow::startGame() { delete layoutLength; delete layoutCharset; delete layoutSimple; WorkerThread *workerThread = new WorkerThread(stats); connect(workerThread, SIGNAL(resultReady()), this, SLOT(handleResults())); Loading @@ -198,7 +199,7 @@ void MainWindow::disableWithCount() ui->withcountButton->setChecked(false); } double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, double & percentageTotal, double & percentageSecurity) { double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, QPieSeries* pieSimple, QPieSeries* pieAdvanced, double & percentageTotal, double & percentageSecurity) { double total = stats.getTotalCounter(); double filter = stats.getTotalFilter(); percentageTotal = percentage(filter, total); Loading Loading @@ -246,9 +247,65 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh } } pieCharset->append("Other charsets", nbHideC); /* SIMPLE PIECHART */ multimap<uint64_t, string> reverseS = flip_map<string>(stats.getStatsSimple()); int top_simple = 0; uint64_t nbHideS = 0; MapIterator<uint64_t, string> itS; for(itS = reverseS.end(); itS != reverseS.begin(); itS--) { if (itS == reverseS.end()) continue; top_simple++; if (top_simple <= 10) { pieSimple->append(QString::fromStdString(itS->second), itS->first); } else { nbHideS += itS->first; } } pieSimple->append("Other Masks", nbHideS); /* ADVANCED PIECHART */ multimap<uint64_t, string> reverseA = flip_map<string>(stats.getStatsAdvanced()); int top_advanced = 0; uint64_t nbHideA = 0; MapIterator<uint64_t, string> itA; for(itA = reverseA.end(); itA != reverseA.begin(); itA--) { if (itA == reverseA.end()) continue; top_advanced++; if (top_advanced <= 10) { pieAdvanced->append(QString::fromStdString(itA->second), itA->first); } else { nbHideA += itA->first; } } pieAdvanced->append("Other Masks", nbHideA); return maxPercLength; } QVBoxLayout* drawPieChart(QPieSeries* qps, QVBoxLayout* layout, const string& title){ qps->setLabelsVisible(); QPieSlice *slice = qps->slices().at(0); slice->setExploded(); slice->setLabelVisible(); slice->setPen(QPen(Qt::darkGreen, 2)); slice->setBrush(Qt::green); QChart *chart = new QChart(); chart->addSeries(qps); chart->setTitle(QString::fromStdString(title)); chart->legend()->hide(); QChartView *chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); layout = new QVBoxLayout(); layout->addWidget(chartView); return layout; } void MainWindow::handleResults() { Loading Loading @@ -278,9 +335,11 @@ void MainWindow::handleResults() QBarSeries * barLength = new QBarSeries(); QPieSeries * pieCharset = new QPieSeries(); QPieSeries * pieSimple = new QPieSeries(); QPieSeries * pieAdvanced = new QPieSeries(); double percentageTotal, percentageSecurity, maxPercLength; maxPercLength = initGraphicalStats(barLength, pieCharset, percentageTotal, percentageSecurity); maxPercLength = initGraphicalStats(barLength, pieCharset, pieSimple, pieAdvanced, percentageTotal, percentageSecurity); /* HISTOGRAM FOR LENGTH */ QChart *chartL = new QChart(); Loading @@ -302,26 +361,13 @@ void MainWindow::handleResults() /* PIECHART FOR CHARSET */ pieCharset->setLabelsVisible(); QPieSlice *slice = pieCharset->slices().at(0); slice->setExploded(); slice->setLabelVisible(); slice->setPen(QPen(Qt::darkGreen, 2)); slice->setBrush(Qt::green); QChart *chartC = new QChart(); chartC->addSeries(pieCharset); chartC->setTitle("Charset"); chartC->legend()->hide(); QChartView *chartViewC = new QChartView(chartC); chartViewC->setRenderHint(QPainter::Antialiasing); ui->charsetWidget->setLayout(drawPieChart(pieCharset, layoutCharset, "Charset")); layoutCharset = new QVBoxLayout(); layoutCharset->addWidget(chartViewC); ui->charsetWidget->setLayout(layoutCharset); /* PIECHART FOR SIMPLE */ ui->simpleMasksWidget->setLayout(drawPieChart(pieSimple, layoutSimple, "Simple masks")); /* PIECHART FOR ADVANCED */ ui->advancedMasksWidget->setLayout(drawPieChart(pieAdvanced, layoutAdvanced, "Advanced masks")); /* LABELS */ Loading
src/gui/MainWindow.ui +22 −16 Original line number Diff line number Diff line Loading @@ -303,40 +303,46 @@ <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,0,1,1,0"> <item> <widget class="QLabel" name="AnalyzedLabel"> <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,1,1,0"> <item row="2" column="0"> <widget class="QWidget" name="lengthWidget" native="true"/> </item> <item row="4" column="0"> <widget class="QLabel" name="resultLabel"> <property name="text"> <string/> </property> </widget> </item> <item> <item row="1" column="0"> <widget class="QLabel" name="securityLabel"> <property name="text"> <string/> </property> </widget> </item> <item> <widget class="QWidget" name="lengthWidget" native="true"> <item row="0" column="0"> <widget class="QLabel" name="AnalyzedLabel"> <property name="text"> <string/> </property> </widget> </item> <item row="3" column="1"> <widget class="QWidget" name="advancedMasksWidget" native="true"/> </item> <item row="2" column="1"> <widget class="QWidget" name="charsetWidget" native="true"> <property name="minimumSize"> <size> <width>800</width> <width>500</width> <height>0</height> </size> </property> </widget> </item> <item> <widget class="QWidget" name="charsetWidget" native="true"/> </item> <item> <widget class="QLabel" name="resultLabel"> <property name="text"> <string/> </property> </widget> <item row="3" column="0"> <widget class="QWidget" name="simpleMasksWidget" native="true"/> </item> </layout> </widget> Loading