From 6080ac7d7cbc30dbe87d0d4ad3b170bb4041560e Mon Sep 17 00:00:00 2001 From: wh201906 Date: Sun, 26 Apr 2020 21:50:55 +0800 Subject: [PATCH] Add key2data and data2key function --- module/mifare.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ module/mifare.h | 9 +++++---- ui/mainwindow.cpp | 10 ++++++++++ ui/mainwindow.h | 4 ++++ 4 files changed, 63 insertions(+), 4 deletions(-) diff --git a/module/mifare.cpp b/module/mifare.cpp index 2230dbe..9feab89 100644 --- a/module/mifare.cpp +++ b/module/mifare.cpp @@ -642,3 +642,47 @@ bool Mifare::data_loadKeyFile(const QString& filename) return false; } } + +void Mifare::data_key2Data() +{ + for(int i = 0; i < cardType.sectors; i++) + { + QString tmp = ""; + dataList->replace(cardType.blks[i] + cardType.blk[i] - 1, "????????????FF078069????????????"); + if(data_isKeyValid(keyAList->at(i))) + tmp += keyAList->at(i); + else + tmp += "????????????"; + + if(dataList->at(cardType.blks[i] + cardType.blk[i] - 1) == "") + tmp += "FF078069"; // default control bytes + else + tmp += dataList->at(cardType.blks[i] + cardType.blk[i] - 1).mid(12, 8); + + if(data_isKeyValid(keyBList->at(i))) + tmp += keyBList->at(i); + else + tmp += "????????????"; + + dataList->replace(cardType.blks[i] + cardType.blk[i] - 1, tmp); + data_syncWithDataWidget(); + } +} + +void Mifare::data_data2Key() +{ + for(int i = 0; i < cardType.sectors; i++) + { + if(dataList->at(cardType.blks[i] + cardType.blk[i] - 1) == "") + { + keyAList->replace(i, "????????????"); + keyBList->replace(i, "????????????"); + } + else + { + keyAList->replace(i, dataList->at(cardType.blks[i] + cardType.blk[i] - 1).left(12)); + keyBList->replace(i, dataList->at(cardType.blks[i] + cardType.blk[i] - 1).right(12)); + } + data_syncWithKeyWidget(); + } +} diff --git a/module/mifare.h b/module/mifare.h index 6877c9b..dc1dde7 100644 --- a/module/mifare.h +++ b/module/mifare.h @@ -94,11 +94,10 @@ public: void wipeC(); void setParameterC(); - QStringList* keyAList; - QStringList* keyBList; - QStringList* dataList; bool data_loadDataFile(const QString &filename); bool data_loadKeyFile(const QString &filename); + void data_key2Data(); + void data_data2Key(); public slots: signals: @@ -107,7 +106,9 @@ private: Ui::MainWindow *ui; Util* util; - + QStringList* keyAList; + QStringList* keyBList; + QStringList* dataList; QRegExp* dataPattern; QRegExp* chkKeyPattern; QRegExp* nestedKeyPattern; diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp index 8d46c8c..356300c 100644 --- a/ui/mainwindow.cpp +++ b/ui/mainwindow.cpp @@ -182,6 +182,16 @@ void MainWindow::MF_onTypeChanged(int id, bool st) typeBtnGroup->blockSignals(false); } +void MainWindow::on_MF_data2KeyBotton_clicked() +{ + mifare->data_data2Key(); +} + +void MainWindow::on_MF_key2DataBotton_clicked() +{ + mifare->data_key2Data(); +} + void MainWindow::on_MF_File_loadButton_clicked() { QString title = ""; diff --git a/ui/mainwindow.h b/ui/mainwindow.h index d707eb0..7909c3c 100644 --- a/ui/mainwindow.h +++ b/ui/mainwindow.h @@ -94,6 +94,10 @@ private slots: void on_MF_File_saveButton_clicked(); + void on_MF_data2KeyBotton_clicked(); + + void on_MF_key2DataBotton_clicked(); + private: Ui::MainWindow* ui; QButtonGroup* typeBtnGroup;