diff --git a/Proxmark3GUI.pro b/Proxmark3GUI.pro index 872d42e..926190c 100644 --- a/Proxmark3GUI.pro +++ b/Proxmark3GUI.pro @@ -46,7 +46,7 @@ qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target -VERSION = 0.0.1 +VERSION = 0.1 QMAKE_TARGET_PRODUCT = "Proxmark3GUI" QMAKE_TARGET_DESCRIPTION = "Proxmark3GUI" QMAKE_TARGET_COMPANY = "wh201906" diff --git a/lang/en_US.ts b/lang/en_US.ts index 80fd2cf..729872e 100644 --- a/lang/en_US.ts +++ b/lang/en_US.ts @@ -33,7 +33,7 @@ - Target Block: + Target Block: @@ -41,7 +41,7 @@ MF_UID_parameterDialog - Dialog + Set Parameter @@ -59,410 +59,550 @@ SAK: - - - The parameter will not change if you leave it empty. - - MainWindow - + Proxmark3GUI - + Path: - + Refresh - + Connect - + Disconnect - + Mifare - + >> - + << - + + F + + + + Card Type - + MINI - + 1K - + 2K - + 4K - + File - - + + Load - - + + Save - - + + Data - + Key - + Attack - + Card Info - + Check Default - + Nested - + Hardnested - + Read/Write - + Block: - + Key: - + Key Type: - + A - + B - + Normal(Require Password) - - + + Read Block - - + + Write Block - - - + + + Read All - - + + Write All - + Dump - + Restore - + Chinese Magic Card(Without Password) - + Lock UFUID Card - + + About UID Card - + Set Parameter - + Wipe - - + + Simulate - + Load from data above - + + Clear - - + + Sniff - + List Sniff Data - + RawCommand - - + + History: - + ClearHistory - + Send - + ClearOutput - - - - + + + + + + + + + Info - + Plz choose a port first - + Connected - - + + Not Connected - - When Changeing card type, the data and keys in this app will be cleard. -Continue? + + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml);;All Files(*.*) - - Plz choose the data file: + + + Failed to open - - Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml);;All Files(*.*) + + When Changeing card type, the data and keys in this app will be cleard. - - - Failed to open + + Continue? + + + + + Plz select the font of data widget and key widget + + + + + Data must consists of 32 Hex symbols(Whitespace is allowed) + + + + + + Key must consists of 12 Hex symbols(Whitespace is allowed) + + + + + Plz select the data file: + + + + + Plz select the key file: + + + + + Binary Key Files(*.bin *.dump);;Binary Data Files(*.bin *.dump);;All Files(*.*) + + + + + Plz select the location to save data file: + + + + + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml) + + + + + + Failed to save to + + + + + Plz select the location to save key file: + + + + + Binary Key Files(*.bin *.dump) - - Plz choose the key file: + + Normally, the Block 0 of a typical Mifare card, which contains the UID, is locked during the manufacture. Users cannot write anything to Block 0 or set a new UID to a normal Mifare card. - - Binary Key Files(*.bin *.dump);;All Files(*.*) + + Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it. - - Save data to + + There are two versions of Chinese Magic Cards, the Gen1 and the Gen2. - - Bin Files(*.bin *.dump);;Text Files(*.txt *.eml) + + Gen1: - + + also called UID card in China. It responses to some backdoor commands so you can access any blocks without password. The Proxmark3 has a bunch of related commands(csetblk, cgetblk, ...) to deal with this type of card, and my GUI also support these commands. + + + + + Gen2: + + + + + doesn't response to the backdoor commands, which means that a reader cannot detect whether it is a Chinese Magic Card or not by sending backdoor commands. + + + + + There are some types of Chinese Magic Card Gen2. + + + + + CUID Card: + + + + + the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command. + + + + + (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>) + + + + + FUID Card: + + + + + you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to). + + + + + (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.) + + + + + UFUID Card: + + + + + It behaves like a CUID card(or UID card? I'm not sure) before you send some special command to lock it. Once it is locked, you cannot change its Block 0(just like a typical Mifare card). + + + + + Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key). + + + + + Idle - - + + Sec - + Blk - + KeyA - + KeyB - + HW Version: - + PM3: - + State: + + + Running + + Mifare - - + + Success! - - - - + + + + + Info - - + + Failed! + + + Failed to read card. + + diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts index eb7e8a3..921ff20 100644 --- a/lang/zh_CN.ts +++ b/lang/zh_CN.ts @@ -37,16 +37,24 @@ - Target Block: + Target Block: 目标块: + + Target Block: + 目标块: + MF_UID_parameterDialog - Dialog - 对话框 + 对话框 + + + + Set Parameter + 设置卡参数 @@ -64,387 +72,546 @@ - The parameter will not change if you leave it empty. - 如果留空,则对应参数将保持不变 + 如果留空,则对应参数将保持不变 MainWindow - + Proxmark3GUI - + Path: 路径: - + Refresh 刷新端口 - + Connect 连接 - + Disconnect 断开 - + Mifare - Mifare卡 + Mifare(IC)卡 - + >> - + << - + + F + + + + Card Type 卡类型 - + MINI - + 1K - + 2K - + 4K - + File 文件 - - + + Load 加载 - - + + Save 保存 - - + + Data - + Key - + Attack 破解 - + Card Info 读卡片信息 - + Check Default 验证默认密码 - + Nested Nested攻击 - + Hardnested Hardested攻击 - + Read/Write 读/写 - + Block: - + Key: - + Key Type: Key类型: - + A - + B - + Normal(Require Password) 普通卡(需要密码) - - + + Read Block 读单个块 - - + + Write Block 写单个块 - - - + + + Read All 读所有块 - - + + Write All 写所有块 - + Dump Dump命令 - + Restore Restore命令 - + Chinese Magic Card(Without Password) UID卡(不需要密码) - + Lock UFUID Card 锁定UFUID卡 - + + About UID Card 关于UID卡 - + Set Parameter 设置卡参数 - + Wipe 擦除 - - + + Simulate 模拟 - + Load from data above 从上方数据导入 - + + Clear 清空 - - + + Sniff 嗅探 - + List Sniff Data 列出嗅探数据 - + RawCommand 原始命令 - - + + History: 命令历史: - + ClearHistory 清空历史 - + Send 发送 - + ClearOutput 清空输出 - - - - + + + + + + + + + Info 信息 - + Plz choose a port first 请先选择端口 - + Connected 已连接 - - + + Not Connected 未连接 - When Changeing card type, the data and keys in this app will be cleard. Continue? - 更改卡容量后,窗口中的data和key会被清空\n要继续吗? + 更改卡容量后,窗口中的data和key会被清空\n要继续吗? - Plz choose the data file: - 请选择data文件: + 请选择data文件: - + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml);;All Files(*.*) 二进制Data文件(*.bin *.dump);;文本Data文件(*.txt *.eml);;所有文件(*.*) - - + + Failed to open - 打开失败: + 无法打开 - Plz choose the key file: - 请选择key文件: + 请选择key文件: - Binary Key Files(*.bin *.dump);;All Files(*.*) - 二进制Key文件(*.bin *.dump);;所有文件(*.*) + 二进制Key文件(*.bin *.dump);;所有文件(*.*) - Save data to - 保存数据至 + 保存数据至 + + + + When Changeing card type, the data and keys in this app will be cleard. + 卡片容量改变后,上方的所有Data和Key会被清空。 + + + + Continue? + 确定? - - Bin Files(*.bin *.dump);;Text Files(*.txt *.eml) - + + Plz select the font of data widget and key widget + 请选择Data窗口和Key窗口的字体 - + + Data must consists of 32 Hex symbols(Whitespace is allowed) + Data必须由32个十六进制字符组成(中间可含有空格) + + + + + Key must consists of 12 Hex symbols(Whitespace is allowed) + Key必须由12个十六进制字符组成(中间可含有空格) + + + + Plz select the data file: + 请选择data文件: + + + + Plz select the key file: + 请选择key文件: + + + + Binary Key Files(*.bin *.dump);;Binary Data Files(*.bin *.dump);;All Files(*.*) + 二进制Key文件(*.bin *.dump)二进制Data文件(*.bin *.dump);;所有文件(*.*) + + + + Plz select the location to save data file: + 请选择文件保存的位置: + + + + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml) + 二进制Data文件(*.bin *.dump);;文本Data文件(*.txt *.eml) + + + + + Failed to save to + 无法保存至 + + + + Plz select the location to save key file: + 请选择key文件保存的位置: + + + + Binary Key Files(*.bin *.dump) + 二进制Key文件(*.bin *.dump) + + + + Normally, the Block 0 of a typical Mifare card, which contains the UID, is locked during the manufacture. Users cannot write anything to Block 0 or set a new UID to a normal Mifare card. + 普通Mifare卡的Block0无法写入,UID也不能更改 + + + + Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it. + UID卡(在国外叫Chinese Magic Card)的Block0可写,UID可变 + + + + There are two versions of Chinese Magic Cards, the Gen1 and the Gen2. + 国外把UID卡分为Chinese Magic Card Gen1和Gen2 + + + + Gen1: + + + + + also called UID card in China. It responses to some backdoor commands so you can access any blocks without password. The Proxmark3 has a bunch of related commands(csetblk, cgetblk, ...) to deal with this type of card, and my GUI also support these commands. + 指通常所说的UID卡,可以通过后门指令直接读写块而无需密码,在PM3和此GUI中有特殊命令处理这类卡片 + + + + Gen2: + + + + + doesn't response to the backdoor commands, which means that a reader cannot detect whether it is a Chinese Magic Card or not by sending backdoor commands. + 这个叫法在国内比较罕见,在国外指CUID/FUID/UFUID这类对后门指令不响应的卡(防火墙卡) + + + + There are some types of Chinese Magic Card Gen2. + 以下是Gen2卡的详细介绍 + + + + CUID Card: + CUID卡: + + + + the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command. + 可通过普通的写块命令来写Block0,可重复擦写 + + + + (hf mf wrbl 0 A FFFFFFFFFFFF <the data you want to write>) + (hf mf wrbl 0 A FFFFFFFFFFFF <待写入数据>) + + + + FUID Card: + FUID卡: + + + + you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to). + Block0只能写入一次 + + + + (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.) + (更高级的穿防火墙卡,可以过一些能识别出CUID卡的读卡器) + + + + UFUID Card: + UFUID卡: + + + + It behaves like a CUID card(or UID card? I'm not sure) before you send some special command to lock it. Once it is locked, you cannot change its Block 0(just like a typical Mifare card). + 锁卡前和普通UID/CUID卡一样可以反复读写Block0,用特殊命令锁卡后就和FUID卡一样了 + + + + Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key). + 所有UID卡都似乎更容易被Nested攻击破解 + + + + Idle 空闲 - - + + Sec - + Blk - + KeyA - + KeyB - + HW Version: 固件版本: - + PM3: 连接状态: - + State: 运行状态: + + + Running + 运行中 + Mifare @@ -453,24 +620,30 @@ Continue? 信息: - - + + Success! 成功! - - - - + + + + + Info 信息 - - + + Failed! 失败! + + + Failed to read card. + 读卡失败。 + diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp index f631bcb..042c840 100644 --- a/ui/mainwindow.cpp +++ b/ui/mainwindow.cpp @@ -8,6 +8,11 @@ MainWindow::MainWindow(QWidget *parent) ui->setupUi(this); ui->MF_simGroupBox->setVisible(false); // developing... ui->MF_sniffGroupBox->setVisible(false); // developing... + myInfo = new QAction("wh201906", this); + connect(myInfo, &QAction::triggered, [ = ]() { + QDesktopServices::openUrl(QUrl("https://github.com/wh201906")); + }); + this->addAction(myInfo); pm3Thread = new QThread(this); pm3 = new PM3Process(pm3Thread); @@ -171,7 +176,7 @@ void MainWindow::MF_onTypeChanged(int id, bool st) qDebug() << id << typeBtnGroup->checkedId(); if(!st) { - int result = QMessageBox::question(this, tr("Info"), tr("When Changeing card type, the data and keys in this app will be cleard.\nContinue?"), QMessageBox::Yes | QMessageBox::No); + int result = QMessageBox::question(this, tr("Info"), tr("When Changeing card type, the data and keys in this app will be cleard.") + "\n" + tr("Continue?"), QMessageBox::Yes | QMessageBox::No); if(result == QMessageBox::Yes) { qDebug() << "Yes"; @@ -438,21 +443,21 @@ void MainWindow::on_MF_UID_wipeButton_clicked() void MainWindow::on_MF_UID_aboutUIDButton_clicked() { QString msg; - msg += tr(" Normally, the Block 0 of a typical Mifare card, which contains the UID, is locked during the manufacture. Users cannot write anything to Block 0 or set a new UID to a normal Mifare card.\n"); - msg += tr(" Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it.\n"); + msg += tr(" Normally, the Block 0 of a typical Mifare card, which contains the UID, is locked during the manufacture. Users cannot write anything to Block 0 or set a new UID to a normal Mifare card.") + "\n"; + msg += tr(" Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it.") + "\n"; msg += "\n"; - msg += tr("There are two versions of Chinese Magic Cards, the Gen1 and the Gen2.\n"); - msg += tr(" Gen1:\n also called UID card in China. It responses to some backdoor commands so you can access any blocks without password. The Proxmark3 has a bunch of related commands(csetblk, cgetblk, ...) to deal with this type of card, and my GUI also support these commands.\n"); - msg += tr(" Gen2:\n doesn't response to the backdoor commands, which means that a reader cannot detect whether it is a Chinese Magic Card or not by sending backdoor commands.\n"); + msg += tr("There are two versions of Chinese Magic Cards, the Gen1 and the Gen2.") + "\n"; + msg += tr(" Gen1:") + "\n" + tr(" also called UID card in China. It responses to some backdoor commands so you can access any blocks without password. The Proxmark3 has a bunch of related commands(csetblk, cgetblk, ...) to deal with this type of card, and my GUI also support these commands.") + "\n"; + msg += tr(" Gen2:") + "\n" + tr(" doesn't response to the backdoor commands, which means that a reader cannot detect whether it is a Chinese Magic Card or not by sending backdoor commands.") + "\n"; msg += "\n"; - msg += tr("There are some types of Chinese Magic Card Gen2.\n"); - msg += tr(" CUID Card:\n the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command.\n"); - msg += tr(" (hf mf wrbl 0 A FFFFFFFFFFFF )\n"); - msg += tr(" FUID Card:\n you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to).\n"); - msg += tr(" (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.)\n"); - msg += tr(" UFUID Card:\n It behaves like a CUID card(or UID card? I'm not sure) before you send some special command to lock it. Once it is locked, you cannot change its Block 0(just like a typical Mifare card).\n"); + msg += tr("There are some types of Chinese Magic Card Gen2.") + "\n"; + msg += tr(" CUID Card:") + "\n" + tr(" the Block 0 is writeable, you can write to this block repeatedly by normal wrbl command.") + "\n"; + msg += tr(" (hf mf wrbl 0 A FFFFFFFFFFFF )") + "\n"; + msg += tr(" FUID Card:") + "\n" + tr(" you can only write to Block 0 once. After that, it seems like a typical Mifare card(Block 0 cannot be written to).") + "\n"; + msg += tr(" (some readers might try changing the Block 0, which could detect the CUID Card. In that case, you should use FUID card.)") + "\n"; + msg += tr(" UFUID Card:") + "\n" + tr(" It behaves like a CUID card(or UID card? I'm not sure) before you send some special command to lock it. Once it is locked, you cannot change its Block 0(just like a typical Mifare card).") + "\n"; msg += "\n"; - msg += tr(" Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key).\n"); + msg += tr(" Seemingly, these Chinese Magic Cards are more easily to be compromised by Nested Attack(it takes little time to get an unknown key).") + "\n"; QMessageBox::information(this, tr("About UID Card"), msg); } diff --git a/ui/mainwindow.h b/ui/mainwindow.h index 1d892ac..17dcf8f 100644 --- a/ui/mainwindow.h +++ b/ui/mainwindow.h @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include "common/pm3process.h" #include "module/mifare.h" @@ -123,6 +125,7 @@ private: QLabel* connectStatusBar; QLabel* programStatusBar; QLabel* PM3VersionBar; + QAction* myInfo; void uiInit(); diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui index 356256a..9e0722d 100644 --- a/ui/mainwindow.ui +++ b/ui/mainwindow.ui @@ -16,6 +16,9 @@ 770 + + Qt::ActionsContextMenu + Proxmark3GUI @@ -103,7 +106,7 @@ - 0 + 1 @@ -144,6 +147,9 @@ 12 + + Qt::PreventContextMenu + true @@ -287,6 +293,9 @@ 12 + + Qt::PreventContextMenu + true @@ -1033,6 +1042,9 @@ 0 + + Qt::PreventContextMenu + diff --git a/ui/mf_attack_hardnesteddialog.ui b/ui/mf_attack_hardnesteddialog.ui index d6af01d..9463564 100644 --- a/ui/mf_attack_hardnesteddialog.ui +++ b/ui/mf_attack_hardnesteddialog.ui @@ -92,7 +92,7 @@ - Target Block: + Target Block: