Skip to content

Commit 475580c

Browse files
authored
Merge pull request #5 from wh201906/dev
V0.1.3
2 parents d6beafe + 3a577bd commit 475580c

File tree

4 files changed

+48
-19
lines changed

4 files changed

+48
-19
lines changed

Proxmark3GUI.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ qnx: target.path = /tmp/$${TARGET}/bin
5252
else: unix:!android: target.path = /opt/$${TARGET}/bin
5353
!isEmpty(target.path): INSTALLS += target
5454

55-
VERSION = 0.1.2
55+
VERSION = 0.1.3
5656
QMAKE_TARGET_PRODUCT = "Proxmark3GUI"
5757
QMAKE_TARGET_DESCRIPTION = "Proxmark3GUI"
5858
QMAKE_TARGET_COMPANY = "wh201906"

module/mifare.cpp

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ const Mifare::CardType Mifare::card_4k =
3636
const Mifare::AccessType Mifare::dataCondition[8][4] =
3737
{
3838
{ACC_KEY_AB, ACC_KEY_AB, ACC_KEY_AB, ACC_KEY_AB},
39-
{ACC_KEY_AB, ACC_NEVER, ACC_NEVER, ACC_NEVER},
4039
{ACC_KEY_AB, ACC_KEY_B, ACC_NEVER, ACC_NEVER},
40+
{ACC_KEY_AB, ACC_NEVER, ACC_NEVER, ACC_NEVER},
4141
{ACC_KEY_AB, ACC_KEY_B, ACC_KEY_B, ACC_KEY_AB},
4242
{ACC_KEY_AB, ACC_NEVER, ACC_NEVER, ACC_KEY_AB},
43-
{ACC_KEY_B, ACC_KEY_B, ACC_NEVER, ACC_NEVER},
4443
{ACC_KEY_B, ACC_NEVER, ACC_NEVER, ACC_NEVER},
44+
{ACC_KEY_B, ACC_KEY_B, ACC_NEVER, ACC_NEVER},
4545
{ACC_NEVER, ACC_NEVER, ACC_NEVER, ACC_NEVER},
4646
};
4747
const Mifare::AccessType Mifare::trailerReadCondition[8][3] =
4848
{
49-
{ACC_NEVER, ACC_KEY_A, ACC_KEY_A},
5049
{ACC_NEVER, ACC_KEY_A, ACC_KEY_A},
5150
{ACC_NEVER, ACC_KEY_AB, ACC_NEVER},
51+
{ACC_NEVER, ACC_KEY_A, ACC_KEY_A},
5252
{ACC_NEVER, ACC_KEY_AB, ACC_NEVER},
5353
{ACC_NEVER, ACC_KEY_A, ACC_KEY_A},
5454
{ACC_NEVER, ACC_KEY_AB, ACC_NEVER},
@@ -58,12 +58,12 @@ const Mifare::AccessType Mifare::trailerReadCondition[8][3] =
5858
const Mifare::AccessType Mifare::trailerWriteCondition[8][3] =
5959
{
6060
{ACC_KEY_A, ACC_NEVER, ACC_KEY_A},
61-
{ACC_NEVER, ACC_NEVER, ACC_NEVER},
6261
{ACC_KEY_B, ACC_NEVER, ACC_KEY_B},
6362
{ACC_NEVER, ACC_NEVER, ACC_NEVER},
63+
{ACC_NEVER, ACC_NEVER, ACC_NEVER},
6464
{ACC_KEY_A, ACC_KEY_A, ACC_KEY_A},
65-
{ACC_KEY_B, ACC_KEY_B, ACC_KEY_B},
6665
{ACC_NEVER, ACC_KEY_B, ACC_NEVER},
66+
{ACC_KEY_B, ACC_KEY_B, ACC_KEY_B},
6767
{ACC_NEVER, ACC_NEVER, ACC_NEVER},
6868
};
6969

@@ -597,7 +597,7 @@ void Mifare::writeOne(TargetType targetType)
597597
}
598598
}
599599

600-
QList<int> Mifare::writeSelected(TargetType targetType)
600+
void Mifare::writeSelected(TargetType targetType)
601601
{
602602
QList<int> failedBlocks;
603603
QList<int> selectedBlocks;
@@ -630,7 +630,39 @@ QList<int> Mifare::writeSelected(TargetType targetType)
630630
failedBlocks.append(item);
631631
}
632632
}
633-
return failedBlocks;
633+
if(failedBlocks.size() == 0)
634+
QMessageBox::information(parent, tr("Info"), tr("Successful!"));
635+
else
636+
{
637+
QString suffix = "";
638+
int counter = 0;
639+
for(int failedBlk : failedBlocks)
640+
{
641+
suffix += QString::number(failedBlk) + " ";
642+
counter++;
643+
counter %= 20;
644+
if(counter == 0)
645+
suffix += "\n";
646+
}
647+
QMessageBox::StandardButton res = QMessageBox::information(parent, tr("Info"), tr("Failed to write to these blocks:")
648+
+ "\n"
649+
+ suffix
650+
+ "\n"
651+
+ tr("Select them?"),
652+
QMessageBox::Yes | QMessageBox::No);
653+
if(res == QMessageBox::Yes)
654+
{
655+
for(int item : selectedBlocks)
656+
{
657+
ui->MF_dataWidget->item(item, 1)->setCheckState(Qt::Unchecked);
658+
}
659+
for(int failedBlk : failedBlocks)
660+
{
661+
ui->MF_dataWidget->item(failedBlk, 1)->setCheckState(Qt::Checked);
662+
}
663+
}
664+
665+
}
634666
}
635667

636668
void Mifare::dump()

module/mifare.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class Mifare : public QObject
7373
void readOne(TargetType targetType = TARGET_MIFARE);
7474
void readSelected(TargetType targetType = TARGET_MIFARE);
7575
void writeOne(TargetType targetType = TARGET_MIFARE);
76-
QList<int> writeSelected(TargetType targetType = TARGET_MIFARE);
76+
void writeSelected(TargetType targetType = TARGET_MIFARE);
7777
void dump();
7878
void restore();
7979

ui/mainwindow.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -580,9 +580,8 @@ void MainWindow::on_MF_RW_writeBlockButton_clicked()
580580

581581
void MainWindow::on_MF_RW_writeSelectedButton_clicked()
582582
{
583-
QList<int> failedBlocks;
584583
setState(false);
585-
failedBlocks = mifare->writeSelected(Mifare::TARGET_MIFARE);
584+
mifare->writeSelected(Mifare::TARGET_MIFARE);
586585
setState(true);
587586
}
588587

@@ -612,9 +611,8 @@ void MainWindow::on_MF_UID_readBlockButton_clicked()
612611

613612
void MainWindow::on_MF_UID_writeSelectedButton_clicked()
614613
{
615-
QList<int> failedBlocks;
616614
setState(false);
617-
failedBlocks = mifare->writeSelected(Mifare::TARGET_UID);
615+
mifare->writeSelected(Mifare::TARGET_UID);
618616
setState(true);
619617
}
620618

@@ -672,9 +670,8 @@ void MainWindow::on_MF_Sim_readSelectedButton_clicked()
672670

673671
void MainWindow::on_MF_Sim_writeSelectedButton_clicked()
674672
{
675-
QList<int> failedBlocks;
676673
setState(false);
677-
failedBlocks = mifare->writeSelected(Mifare::TARGET_EMULATOR);
674+
mifare->writeSelected(Mifare::TARGET_EMULATOR);
678675
setState(true);
679676
}
680677

@@ -891,7 +888,7 @@ void MainWindow::signalInit()
891888
connect(ui->MF_sniffGroupBox, &QGroupBox::clicked, this, &MainWindow::on_GroupBox_clicked);
892889
}
893890

894-
void MainWindow::setStatusBar(QLabel* target, const QString & text)
891+
void MainWindow::setStatusBar(QLabel * target, const QString & text)
895892
{
896893
if(target == PM3VersionBar)
897894
target->setText(tr("HW Version:") + text);
@@ -901,14 +898,14 @@ void MainWindow::setStatusBar(QLabel* target, const QString & text)
901898
target->setText(tr("State:") + text);
902899
}
903900

904-
void MainWindow::setTableItem(QTableWidget* widget, int row, int column, const QString& text)
901+
void MainWindow::setTableItem(QTableWidget * widget, int row, int column, const QString & text)
905902
{
906903
if(widget->item(row, column) == nullptr)
907904
widget->setItem(row, column, new QTableWidgetItem());
908905
widget->item(row, column)->setText(text);
909906
}
910907

911-
bool MainWindow::eventFilter(QObject *watched, QEvent *event) // drag support
908+
bool MainWindow::eventFilter(QObject * watched, QEvent * event) // drag support
912909
{
913910
if(event->type() == QEvent::DragEnter)
914911
{
@@ -986,7 +983,7 @@ void MainWindow::on_GroupBox_clicked(bool checked)
986983
settings->endGroup();
987984
}
988985

989-
void MainWindow::saveClientPath(const QString& path)
986+
void MainWindow::saveClientPath(const QString & path)
990987
{
991988
settings->beginGroup("Client_Path");
992989
settings->setValue("path", path);

0 commit comments

Comments
 (0)