diff --git a/Proxmark3GUI.pro b/Proxmark3GUI.pro
index fd00f45..736a328 100644
--- a/Proxmark3GUI.pro
+++ b/Proxmark3GUI.pro
@@ -56,7 +56,7 @@ qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
-VERSION = 0.2.0
+VERSION = 0.2.1
QMAKE_TARGET_PRODUCT = "Proxmark3GUI"
QMAKE_TARGET_DESCRIPTION = "Proxmark3GUI"
QMAKE_TARGET_COMPANY = "wh201906"
diff --git a/README.md b/README.md
index 4c562f9..e7311e3 100644
--- a/README.md
+++ b/README.md
@@ -65,6 +65,11 @@ Great thanks to him.
## Update Log:
+### V0.2.1
++ Optimize MIFARE Classic reading logic
++ Fix bug #16
++ Fix bug #15 partially (the path can contain spaces now)
+
### V0.2
+ Use Dock widget for more flexible layout
+ Support basic LF commands
diff --git a/README/doc/README_zh_CN.md b/README/doc/README_zh_CN.md
index 6c2d0b4..95f54df 100644
--- a/README/doc/README_zh_CN.md
+++ b/README/doc/README_zh_CN.md
@@ -64,6 +64,11 @@ release页面中有含客户端的GUI。这个GUI也可以搭配你自己的客
## 更新日志:
+### V0.2.1
++ 优化MIFARE Classic读卡逻辑
++ 修复 #16 (配合新版RRG固件时无法读取扇区数据)
++ 修复 #15 (路径中支持空格)
+
### V0.2
+ 使用浮动窗口,界面配置更加灵活
+ 支持部分低频命令
diff --git a/lang/en_US.ts b/lang/en_US.ts
index cf98a07..6843248 100644
--- a/lang/en_US.ts
+++ b/lang/en_US.ts
@@ -330,230 +330,231 @@ It could make the whole sector blocked irreversibly!
-
+
-
+
-
+
320
-
+
1024
-
+
2048
-
+
4096
-
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
@@ -573,234 +574,425 @@ When setting the freq, the "hw setlfdivisor" will also be called.
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -858,30 +1050,30 @@ or "-p <port> -f"
-
+
-
-
+
+
-
+
-
-
-
+
+
+
-
+
@@ -901,227 +1093,227 @@ or "-p <port> -f"
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1129,18 +1321,18 @@ or "-p <port> -f"
Mifare
-
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -1150,35 +1342,35 @@ or "-p <port> -f"
-
-
+
+
-
+
-
+
-
+
-
+
-
+
diff --git a/lang/zh_CN.qm b/lang/zh_CN.qm
index cbb3dad..e3fed7d 100644
Binary files a/lang/zh_CN.qm and b/lang/zh_CN.qm differ
diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts
index f0f2166..2006b95 100644
--- a/lang/zh_CN.ts
+++ b/lang/zh_CN.ts
@@ -334,178 +334,179 @@ It could make the whole sector blocked irreversibly!
Mifare(IC)卡
-
+
选中密码块
-
+
卡片类型
-
+
320
-
+
1024
-
+
2048
-
+
4096
-
+
文件
-
-
+
+
加载
-
-
-
+
+
+
保存
-
-
+
+
数据
-
+
密钥
-
+
破解
-
+
读卡信息
-
+
验证默认密码
-
+
Nested攻击
-
+
Hardested攻击
-
+
Darkside攻击
-
+
读/写
-
+
块:
-
+
密钥:
-
+
密钥类型:
-
+
列出嗅探数据
-
+
+
数据:
-
+
普通卡(需要密码)
-
+
Dump命令
-
+
Restore命令
-
+
UID卡(不需要密码)
-
+
锁定UFUID卡
-
-
+
+
关于UID卡
-
+
设置卡参数
-
+
擦除
-
-
+
+
模拟
-
-
+
+
清空
@@ -525,142 +526,142 @@ It could make the whole sector blocked irreversibly!
刷新端口
-
+
全选
-
+
密码区->密码
-
+
密码区<-密码
-
+
填充密码
-
+
Trailer解码
-
+
设置字体
-
-
+
+
读取单个块
-
-
+
+
写入单个块
-
-
-
+
+
+
读取选中块
-
-
-
+
+
+
写入选中块
-
-
-
+
+
+
嗅探
-
+
嗅探(14a)
-
+
低频配置
-
+
频率
-
+
-
+
-
+
抽取(Decimation):
-
+
平均化(Averaging):
-
+
重置
-
+
低频操作
-
+
搜索
-
+
读卡并寻找已知类型的卡
-
+
读取
-
+
激活低频电磁场并读取原始信号。
该功能用于获取卡片原始数据。
-
+
调谐
-
+
@@ -669,7 +670,7 @@ On Iceman/RRG repo, press the button on PM3 to stop measuring
在冰人版固件下,如果需要停止测量,请按下PM3侧面的按钮
-
+
@@ -678,53 +679,244 @@ or the communication between a tag and a reader.
或者卡片与读卡器的交互过程。
-
+
-
+
+
+ 基本配置区(页0 块0)
+
+
+
+
+
+ 16进制:
+
+
+
+
+
+ 2进制:
+
+
+
+
+
+ 从数据区导入
+
+
+
+
+
+ 导出到数据区
+
+
+
+
+
+ 锁定(Locked):
+
+
+
+
+
+
+
+
+
+ 数据比特率(Data Bit Rate):
+
+
+
+
+ 扩展模式(eXtended Mode):
+
+
+
+
+
+ 调制方式(Modulation):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 密码(Password):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 模拟前端选项区(页1 块3)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T55xx读卡配置区
+
+
+
+
+ 比特率(Bit Rate):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
原始命令
-
-
+
+
命令历史:
-
+
清空历史
-
+
发送
-
+
清空输出
-
+
设置
-
+
客户端
-
+
预加载脚本路径:
-
+
@@ -732,34 +924,34 @@ then put the path of the script there
如果客户端需要配置环境变量才能正常运行,可以将配置环境变量所需的脚本文件(Windows系统内为*.bat,linux系统内为*.sh)路径填入此处
-
+
客户端工作路径:
-
+
-
+
注意:
在Windows系统中,客户端工作路径与GUI程序所在路径不能相同,否则客户端会使用错误的.dll文件。
-
+
启动参数
-
+
-
+
或"-p <port> -f"
-
+
在PM3断开后保持客户端运行(实验性功能)
-
+
语言:
-
+
选择语言
-
+
(重启此程序以使用新语言)
-
+
保持所有按钮可点击,即使未连接客户端或有任务正在运行
-
+
低频
-
+
其它
-
+
分频系数(Divisor):
-
+
实际频率: 125.000kHz
-
+
@@ -824,47 +1016,47 @@ When setting the freq, the "hw setlfdivisor" will also be called.
-
+
采样精度(Bit per sample):
-
+
触发阈值(Trigger threshold):
-
+
跳过前n个采样(Samples to skip):
-
+
获取当前配置
-
+
改变当前配置
-
+
图形化界面
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
信息
@@ -874,30 +1066,30 @@ When setting the freq, the "hw setlfdivisor" will also be called.请先选择端口
-
+
已连接
-
-
+
+
未连接
-
+
二进制数据文件(*.bin *.dump);;文本数据文件(*.txt *.eml);;所有文件(*.*)
-
-
-
+
+
+
无法打开
-
+
确定?
@@ -917,227 +1109,227 @@ When setting the freq, the "hw setlfdivisor" will also be called.检查更新
-
+
部分数据和密码将被清除
-
+
请选择数据窗口和密钥窗口的字体
-
+
数据必须由32个十六进制字符组成(中间可含有空格)
-
-
+
+
密钥必须由12个十六进制字符组成(中间可含有空格)
-
+
请选择数据文件:
-
+
请选择密钥文件:
-
+
二进制密钥文件(*.bin *.dump)二进制密钥文件(*.bin *.dump);所有文件(*.*)
-
+
请选择数据文件保存的位置:
-
+
二进制数据文件(*.bin *.dump);文本数据文件(*.txt *.eml)
-
-
-
+
+
+
无法保存至
-
+
请选择密钥文件保存的位置:
-
+
二进制密码文件(*.bin *.dump)
-
+
普通Mifare卡的块0无法写入,卡号也不能更改
-
+
UID卡(在国外叫Chinese Magic Card)的块0可写,卡号可变。
-
+
国外把UID卡分为Chinese Magic Card Gen1和Gen2
-
+
-
+
指通常所说的UID卡,可以通过后门指令直接读写块而无需密码,在PM3和此GUI中有特殊命令处理这类卡片
-
+
-
+
这个叫法在国内比较罕见,在国外指CUID/FUID/UFUID这类对后门指令不响应的卡(防火墙卡)
-
+
以下是Gen2卡的详细介绍
-
+
CUID卡:
-
+
可通过普通的写块命令来写块0,可重复擦写
-
+
(hf mf wrbl 0 A FFFFFFFFFFFF <待写入数据>)
-
+
FUID卡:
-
+
块0只能写入一次
-
+
(更高级的穿防火墙卡,可以过一些能识别出CUID卡的读卡器)
-
+
UFUID卡:
-
+
锁卡前和普通UID/CUID卡一样可以反复读写块0,用特殊命令锁卡后就和FUID卡一样了
-
+
所有UID卡都似乎更容易被Nested攻击破解
-
+
请选择trace文件:
-
+
Trace文件(*.trc);;所有文件(*.*)
-
+
请选择trace文件保存的位置:
-
+
Trace文件(*.trc)
-
-
+
+
空闲
-
+
停止
-
-
+
+
扇区
-
+
块
-
+
密钥A
-
+
密钥B
-
+
固件版本:
-
+
连接状态:
-
+
运行状态:
-
+
正在运行
-
+
实际频率:
@@ -1145,18 +1337,18 @@ When setting the freq, the "hw setlfdivisor" will also be called.
Mifare
-
+
成功!
-
-
-
-
-
-
+
+
+
+
+
+
信息
@@ -1166,13 +1358,13 @@ When setting the freq, the "hw setlfdivisor" will also be called.请至少提供一个已知密码
-
-
+
+
失败!
-
+
@@ -1181,22 +1373,22 @@ Continue to write?
确定要写入吗?
-
+
成功!
-
+
写入以下块失败:
-
+
选中这些块?
-
+
读卡失败。
diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp
index 6023266..b2a928a 100644
--- a/ui/mainwindow.cpp
+++ b/ui/mainwindow.cpp
@@ -137,15 +137,14 @@ void MainWindow::on_PM3_connectButton_clicked()
envSetProcess.start("sh -c \' . \"" + envScriptPath.absoluteFilePath() + "\">>/dev/null && env");
#endif
envSetProcess.waitForReadyRead(10000);
- QString test = QString(envSetProcess.readAll());
- clientEnv = test.split(QRegExp("[\r\n]{1,2}"), QString::SkipEmptyParts);
+ QString envSetResult = QString(envSetProcess.readAll());
+ clientEnv = envSetResult.split(QRegExp("[\r\n]{1,2}"), QString::SkipEmptyParts);
if(clientEnv.size() > 2) // the first element is "set" and the last element is the current path
{
clientEnv.removeFirst();
clientEnv.removeLast();
emit setProcEnv(&clientEnv);
}
- qDebug() << clientEnv;
// qDebug() << "Get Env List" << clientEnv;
}
else