Proxmark3GUI/mainwindow.cpp

142 lines
4 KiB
C++
Raw Normal View History

2020-04-06 23:48:08 +08:00
#include "mainwindow.h"
2020-04-08 18:18:53 +08:00
#include "mainwindow.h"
#include "mainwindow.h"
2020-04-06 23:48:08 +08:00
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
pm3=new PM3Process;
2020-04-07 23:57:56 +08:00
mifare=new Mifare;
2020-04-07 18:16:00 +08:00
connect(pm3,&PM3Process::readyRead,this,&MainWindow::refresh);
connect(ui->commandEdit,&QLineEdit::editingFinished,this,&MainWindow::sendMSG);
2020-04-09 09:10:47 +08:00
uiInit();
2020-04-06 23:48:08 +08:00
}
MainWindow::~MainWindow()
{
delete ui;
}
2020-04-07 18:16:00 +08:00
void MainWindow::on_connectButton_clicked()
2020-04-06 23:48:08 +08:00
{
2020-04-07 18:16:00 +08:00
QString port=ui->portBox->currentText();
if(port=="")
QMessageBox::information(NULL, "Info", "Plz choose a port first", QMessageBox::Ok);
else
qDebug()<<pm3->start(ui->PM3PathEdit->text(),port);
2020-04-06 23:48:08 +08:00
}
2020-04-07 18:16:00 +08:00
void MainWindow::on_sendButton_clicked()
2020-04-06 23:48:08 +08:00
{
2020-04-08 18:18:53 +08:00
if(ui->CMDHistoryWidget->count()==0 || ui->CMDHistoryWidget->item(ui->CMDHistoryWidget->count()-1)->text()!=ui->commandEdit->text())
ui->CMDHistoryWidget->addItem(ui->commandEdit->text());
2020-04-07 18:16:00 +08:00
qDebug()<<(ui->commandEdit->text().toLocal8Bit());
pm3->write((ui->commandEdit->text()+"\r\n").toLocal8Bit());
2020-04-06 23:48:08 +08:00
pm3->waitForBytesWritten(3000);
}
2020-04-07 18:16:00 +08:00
void MainWindow::refresh()
2020-04-06 23:48:08 +08:00
{
2020-04-07 23:57:56 +08:00
QString btay=pm3->readLine();
2020-04-07 18:16:00 +08:00
while(btay!="")
{
qDebug()<<btay;
ui->outputEdit->insertPlainText(btay);
btay=pm3->readLine();
}
ui->outputEdit->moveCursor(QTextCursor::End);
}
void MainWindow::sendMSG()
{
if(ui->commandEdit->hasFocus())
on_sendButton_clicked();
}
void MainWindow::on_disconnectButton_clicked()
{
pm3->kill();
}
void MainWindow::on_clearButton_clicked()
{
ui->outputEdit->clear();
2020-04-06 23:48:08 +08:00
}
2020-04-07 23:57:56 +08:00
void MainWindow::on_portButton_clicked()
{
ui->portBox->clear();
ui->portBox->addItem("");
foreach(QString port,pm3->findPort())
{
ui->portBox->addItem(port);
}
}
2020-04-08 18:18:53 +08:00
void MainWindow::on_moreFuncCheckBox_stateChanged(int arg1)
{
if(ui->moreFuncCheckBox->isChecked())
{
2020-04-09 09:10:47 +08:00
ui->CMDTreeWidget->setVisible(true);
2020-04-08 18:18:53 +08:00
ui->CMDTreeLabel->setVisible(true);
ui->CMDHistoryWidget->setVisible(true);
ui->CMDHistoryLabel->setVisible(true);
ui->clearHistoryButton->setVisible(true);
}
else
{
2020-04-09 09:10:47 +08:00
ui->CMDTreeWidget->setVisible(false);
2020-04-08 18:18:53 +08:00
ui->CMDTreeLabel->setVisible(false);
ui->CMDHistoryWidget->setVisible(false);
ui->CMDHistoryLabel->setVisible(false);
ui->clearHistoryButton->setVisible(false);
}
}
void MainWindow::on_clearHistoryButton_clicked()
{
ui->CMDHistoryWidget->clear();
}
void MainWindow::on_CMDHistoryWidget_itemDoubleClicked(QListWidgetItem *item)
{
ui->commandEdit->setText(item->text());
ui->commandEdit->setFocus();
}
2020-04-09 09:10:47 +08:00
void MainWindow::uiInit()
{
ui->MFDataWidget->setColumnCount(3);
ui->MFDataWidget->setRowCount(64);
ui->MFDataWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("Sector"));
ui->MFDataWidget->setHorizontalHeaderItem(1,new QTableWidgetItem("Block"));
ui->MFDataWidget->setHorizontalHeaderItem(2,new QTableWidgetItem("Data"));
for(int i=0;i<64;i++)
ui->MFDataWidget->setItem(i,1,new QTableWidgetItem(QString::number(i)));
for(int i=0;i<16;i++)
ui->MFDataWidget->setItem(i*4,0,new QTableWidgetItem(QString::number(i)));
ui->MFDataWidget->verticalHeader()->setVisible(false);
ui->MFDataWidget->setColumnWidth(0,50);
ui->MFDataWidget->setColumnWidth(1,40);
ui->MFDataWidget->setColumnWidth(2,400);
ui->MFKeyWidget->setColumnCount(3);
ui->MFKeyWidget->setRowCount(16);
ui->MFKeyWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("Sector"));
ui->MFKeyWidget->setHorizontalHeaderItem(1,new QTableWidgetItem("KeyA"));
ui->MFKeyWidget->setHorizontalHeaderItem(2,new QTableWidgetItem("KeyB"));
for(int i=0;i<16;i++)
ui->MFKeyWidget->setItem(i,0,new QTableWidgetItem(QString::number(i)));
ui->MFKeyWidget->verticalHeader()->setVisible(false);
ui->MFKeyWidget->setColumnWidth(0,50);
ui->MFKeyWidget->setColumnWidth(1,200);
ui->MFKeyWidget->setColumnWidth(2,200);
on_moreFuncCheckBox_stateChanged(0);
on_portButton_clicked();
}