Replace QRegExp with QRegularExpression(Uncompleted)

This commit is contained in:
wh201906
2020-08-05 22:46:41 +08:00
parent ef6ebea568
commit eb5fa7ec9a
5 changed files with 77 additions and 41 deletions
+70 -35
View File
@@ -9,42 +9,45 @@ Mifare::Mifare(Ui::MainWindow *ui, Util *addr, QWidget *parent): QObject(parent)
keyAList = new QStringList();
keyBList = new QStringList();
dataList = new QStringList();
data_clearKey(); // fill with blank Qstring
data_clearData(); // fill with blank Qstring
data_clearKey(); // fill with blank QString
data_clearData(); // fill with blank QString
dataPattern = new QRegExp("([0-9a-fA-F]{2} ){15}[0-9a-fA-F]{2}");
chkKeyPattern = new QRegExp("\\|\\d{3}\\|.+\\|.+\\|");
nestedKeyPattern = new QRegExp("\\|\\d{3}\\|.+\\|.+\\|.+\\|.+\\|");
keyPattern_res = new QRegularExpression("\\|\\d{3}\\|.+?\\|.+?\\|.+?\\|.+?\\|");
keyPattern = new QRegularExpression("\\|\\d{3}\\|.+?\\|.+?\\|");
}
QString Mifare::info(bool isRequiringOutput)
{
if(isRequiringOutput)
if(util->getClientType() == Util::CLIENTTYPE_OFFICIAL || util->getClientType() == Util::CLIENTTYPE_ICEMAN)
{
QString result = util->execCMDWithOutput("hf 14a info", 500);
qDebug() << result << result.indexOf(QRegExp(ui->MF_RW_dataEdit->text()), 0);
result.replace("UID :", "|");
result.replace("ATQA :", "|");
result.replace("SAK :", "|");
result.replace("TYPE :", "|");
QStringList lis = result.split("|");
if(lis.length() > 4)
if(isRequiringOutput)
{
qDebug() << lis[1] + lis[2] + lis[3];
return lis[1] + lis[2] + lis[3];
QString result = util->execCMDWithOutput("hf 14a info", 500);
result.replace("UID :", "|||");
result.replace("ATQA :", "|||");
result.replace("SAK :", "|||");
result.replace("TYPE :", "|||");
QStringList lis = result.split("|||");
if(lis.length() > 4)
{
qDebug() << lis[1] + lis[2] + lis[3];
return lis[1] + lis[2] + lis[3];
}
else
return "";
}
else
{
util->execCMD("hf 14a info");
ui->funcTab->setCurrentIndex(1);
return "";
}
else
{
util->execCMD("hf 14a info");
ui->funcTab->setCurrentIndex(1);
return "";
}
}
}
void Mifare::chk()
{
QRegularExpressionMatch reMatch;
QString result = util->execCMDWithOutput(
"hf mf chk *"
+ QString::number(cardType.type)
@@ -53,21 +56,53 @@ void Mifare::chk()
qDebug() << result;
int offset = 0;
QString tmp, tmp2;
for(int i = 0; i < cardType.sector_size; i++)
QString data;
if(util->getClientType() == Util::CLIENTTYPE_OFFICIAL)
{
offset = chkKeyPattern->indexIn(result, offset);
// offset = result.indexOf(*chkKeyPattern, offset);
tmp = result.mid(offset, 39).toUpper();
offset += 39;
qDebug() << tmp << offset;
tmp2 = tmp.mid(7, 12).trimmed();
if(tmp2 != "?")
keyAList->replace(i, tmp2);
tmp2 = tmp.mid(24, 12).trimmed();
if(tmp2 != "?")
keyBList->replace(i, tmp2);
for(int i = 0; i < cardType.sector_size; i++)
{
reMatch = keyPattern->match(result, offset);
offset = reMatch.capturedStart();
if(reMatch.hasMatch())
{
data = reMatch.captured().toUpper();
offset += data.length();
QStringList cells = data.remove(" ").split("|");
if(!cells.at(2).contains("?"))
{
keyAList->replace(i, cells.at(2));
}
if(!cells.at(3).contains("?"))
{
keyBList->replace(i, cells.at(3));
}
}
}
}
else if(util->getClientType() == Util::CLIENTTYPE_ICEMAN)
{
for(int i = 0; i < cardType.sector_size; i++)
{
reMatch = keyPattern_res->match(result, offset);
offset = reMatch.capturedStart();
if(reMatch.hasMatch())
{
data = reMatch.captured().toUpper();
offset += data.length();
QStringList cells = data.remove(" ").split("|");
if(cells.at(3) == "1")
{
keyAList->replace(i, cells.at(2));
}
if(cells.at(5) == "1")
{
keyBList->replace(i, cells.at(4));
}
}
}
}
data_syncWithKeyWidget();
}
@@ -82,7 +117,7 @@ void Mifare::nested()
QString tmp;
for(int i = 0; i < cardType.sector_size; i++)
{
offset = nestedKeyPattern->indexIn(result, offset);
// offset = nestedKeyPattern->indexIn(result, offset);
// offset = result.indexOf(*nestedKeyPattern, offset);
tmp = result.mid(offset, 47).toUpper();
offset += 47;
+2 -2
View File
@@ -135,8 +135,8 @@ private:
QStringList* keyBList;
QStringList* dataList;
QRegExp* dataPattern;
QRegExp* chkKeyPattern;
QRegExp* nestedKeyPattern;
QRegularExpression* keyPattern_res;
QRegularExpression* keyPattern;
QRegExp* UIDPattern;
QString bin2text(const QByteArray& buff, int start, int length);