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! - + Select Trailer - + Card Type - + MINI 320 - + 1K 1024 - + 2K 2048 - + 4K 4096 - + File - - + + Load - - - + + + Save - - + + Data - + Key - + Attack - + Card Info - + Check Default - + Nested - + Hardnested - + Darkside - + Read/Write - + Block: - + Key: - + Key Type: - + List Data - + LF - + other - + Divisor: - + Actural Freq: 125.000kHz - + Note: You might need a modified LF antenna if the freq is not 125k/134k. When setting the freq, the "hw setlfdivisor" will also be called. - + Bit per sample: - + Trigger threshold: - + Samples to skip: - + Get Config - + Set Config - + + Data: - + Normal(Require Password) - + Dump - + Restore - + Chinese Magic Card(Without Password) - + Lock UFUID Card - - + + About UID Card - + Set Parameter - + Wipe - - + + Simulate - - + + Clear @@ -573,234 +574,425 @@ When setting the freq, the "hw setlfdivisor" will also be called. - + Select All - + KeyBlocks->Key - + KeyBlocks<-Key - + Fill Keys - + Trailer Decoder - + Set Fonts - - + + Read One - - + + Write One - - - + + + Read Selected - - - + + + Write Selected - - - + + + Sniff - + Sniff(14a) - + LF Config - + Frequency - + 125k - + 134k - + Decimation: - + Averaging: - + Reset - + LF Operation - + Search - + Read and search for valid known tag. - + Read - + Sniff low frequency signal with LF field ON. Use this to get raw data from a tag. - + Tune - + Measure LF antenna tuning. If the antenna voltage has a obvious drop after putting card on the antenna, it is likely that the tag is a LF tag. On Iceman/RRG repo, press the button on PM3 to stop measuring - + Sniff low frequency signal with LF field OFF. Use this to get raw data from a reader or the communication between a tag and a reader. - + T55xx - + + Basic Configuration(Page 0 Block 0) + + + + + + Hex: + + + + + + Bin: + + + + + + Get from Data + + + + + + Set to Data + + + + + + Locked: + + + + + Master Key: + + + + + Data Bit Rate: + + + + + eXtended Mode: + + + + + + Modulation: + + + + + PSK Clock Freq: + + + + + Answer on Request: + + + + + One Time Pad: + + + + + Max Block: + + + + + Password: + + + + + Seq. Terminator: + + + + + Seq. Start Marker: + + + + + Fast Downlink: + + + + + Inverse Data: + + + + + Init-Delay: + + + + + Analog Front-End Option(Page 1 Block 3) + + + + + Option Key: + + + + + Soft Modulation: + + + + + Clamp Voltage: + + + + + Modulation Voltage: + + + + + Clock Detection Threshold: + + + + + Gap Detection Threshold: + + + + + Write Dampling: + + + + + Demod Delay: + + + + + Downlink Protocol: + + + + + T55xx Read Config + + + + + Bit Rate: + + + + + Seq. Term. + + + + + Offset: + + + + + Inverted: + + + + + T5577 + + + + + T5555 + + + + RawCommand - - + + History: - + ClearHistory - + Send - + ClearOutput - + Settings - + Client - + Preload script path: - + Note: If the client requires some enviroment variables, you can make a script file(*.bat on Windows or *.sh on Linux) to configure them, then put the path of the script there - + Client working directory: - + ../data - + Note: On Windows, the client working directory should not be identical to the path of GUI, otherwise the client will use the wrong .dll file. - + Start arguments - + <port> -f - + Note: -f is necessary because the GUI need to handle the output in time In some cases the arguments should be set to "-p /dev/<port> -f" @@ -808,47 +1000,47 @@ or "-p <port> -f" - + Keep buttons enabled even the client is running or disconnected - + Keep te client active even the PM3 hardware is disconnected.(Experimental) - + GUI - + Language: - + Choose Language - + (Restart this app to use new language) - - - - - - - - - - + + + + + + + + + + Info @@ -858,30 +1050,30 @@ or "-p <port> -f" - + Connected - - + + Not Connected - + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml);;All Files(*.*) - - - + + + Failed to open - + Continue? @@ -901,227 +1093,227 @@ or "-p <port> -f" - + Some of the data and key will be cleared. - + 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) - + 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. - + Chinese Magic Cards(aka UID Cards) are some special cards whose Block 0 are writeable. And you can change UID by writing to it. - + There are two versions of Chinese Magic Cards, the Gen1 and the 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. - + 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). - + Plz select the trace file: - + Trace Files(*.trc);;All Files(*.*) - + Plz select the location to save trace file: - + Trace Files(*.trc) - - + + Idle - + Stop - - + + Sec - + Blk - + KeyA - + KeyB - + HW Version: - + PM3: - + State: - + Running - + Actural Freq: @@ -1129,18 +1321,18 @@ or "-p <port> -f" Mifare - + Success! - - - - - - + + + + + + Info @@ -1150,35 +1342,35 @@ or "-p <port> -f" - - + + Failed! - + The Access Bits is invalid! It could make the whole sector blocked irreversibly! Continue to write? - + Successful! - + Failed to write to these blocks: - + Select them? - + Failed to read card. 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)卡 - + Select Trailer 选中密码块 - + Card Type 卡片类型 - + MINI 320 - + 1K 1024 - + 2K 2048 - + 4K 4096 - + File 文件 - - + + Load 加载 - - - + + + Save 保存 - - + + Data 数据 - + Key 密钥 - + Attack 破解 - + Card Info 读卡信息 - + Check Default 验证默认密码 - + Nested Nested攻击 - + Hardnested Hardested攻击 - + Darkside Darkside攻击 - + Read/Write 读/写 - + Block: 块: - + Key: 密钥: - + Key Type: 密钥类型: - + List Data 列出嗅探数据 - + + Data: 数据: - + Normal(Require Password) 普通卡(需要密码) - + Dump Dump命令 - + Restore Restore命令 - + Chinese Magic Card(Without Password) UID卡(不需要密码) - + Lock UFUID Card 锁定UFUID卡 - - + + About UID Card 关于UID卡 - + Set Parameter 设置卡参数 - + Wipe 擦除 - - + + Simulate 模拟 - - + + Clear 清空 @@ -525,142 +526,142 @@ It could make the whole sector blocked irreversibly! 刷新端口 - + Select All 全选 - + KeyBlocks->Key 密码区->密码 - + KeyBlocks<-Key 密码区<-密码 - + Fill Keys 填充密码 - + Trailer Decoder Trailer解码 - + Set Fonts 设置字体 - - + + Read One 读取单个块 - - + + Write One 写入单个块 - - - + + + Read Selected 读取选中块 - - - + + + Write Selected 写入选中块 - - - + + + Sniff 嗅探 - + Sniff(14a) 嗅探(14a) - + LF Config 低频配置 - + Frequency 频率 - + 125k - + 134k - + Decimation: 抽取(Decimation): - + Averaging: 平均化(Averaging): - + Reset 重置 - + LF Operation 低频操作 - + Search 搜索 - + Read and search for valid known tag. 读卡并寻找已知类型的卡 - + Read 读取 - + Sniff low frequency signal with LF field ON. Use this to get raw data from a tag. 激活低频电磁场并读取原始信号。 该功能用于获取卡片原始数据。 - + Tune 调谐 - + Measure LF antenna tuning. If the antenna voltage has a obvious drop after putting card on the antenna, it is likely that the tag is a LF tag. On Iceman/RRG repo, press the button on PM3 to stop measuring @@ -669,7 +670,7 @@ On Iceman/RRG repo, press the button on PM3 to stop measuring 在冰人版固件下,如果需要停止测量,请按下PM3侧面的按钮 - + Sniff low frequency signal with LF field OFF. Use this to get raw data from a reader or the communication between a tag and a reader. @@ -678,53 +679,244 @@ or the communication between a tag and a reader. 或者卡片与读卡器的交互过程。 - + T55xx - + + Basic Configuration(Page 0 Block 0) + 基本配置区(页0 块0) + + + + + Hex: + 16进制: + + + + + Bin: + 2进制: + + + + + Get from Data + 从数据区导入 + + + + + Set to Data + 导出到数据区 + + + + + Locked: + 锁定(Locked): + + + + Master Key: + + + + + Data Bit Rate: + 数据比特率(Data Bit Rate): + + + + eXtended Mode: + 扩展模式(eXtended Mode): + + + + + Modulation: + 调制方式(Modulation): + + + + PSK Clock Freq: + + + + + Answer on Request: + + + + + One Time Pad: + + + + + Max Block: + + + + + Password: + 密码(Password): + + + + Seq. Terminator: + + + + + Seq. Start Marker: + + + + + Fast Downlink: + + + + + Inverse Data: + + + + + Init-Delay: + + + + + Analog Front-End Option(Page 1 Block 3) + 模拟前端选项区(页1 块3) + + + + Option Key: + + + + + Soft Modulation: + + + + + Clamp Voltage: + + + + + Modulation Voltage: + + + + + Clock Detection Threshold: + + + + + Gap Detection Threshold: + + + + + Write Dampling: + + + + + Demod Delay: + + + + + Downlink Protocol: + + + + + T55xx Read Config + T55xx读卡配置区 + + + + Bit Rate: + 比特率(Bit Rate): + + + + Seq. Term. + + + + + Offset: + + + + + Inverted: + + + + + T5577 + + + + + T5555 + + + + RawCommand 原始命令 - - + + History: 命令历史: - + ClearHistory 清空历史 - + Send 发送 - + ClearOutput 清空输出 - + Settings 设置 - + Client 客户端 - + Preload script path: 预加载脚本路径: - + Note: If the client requires some enviroment variables, you can make a script file(*.bat on Windows or *.sh on Linux) to configure them, then put the path of the script there @@ -732,34 +924,34 @@ then put the path of the script there 如果客户端需要配置环境变量才能正常运行,可以将配置环境变量所需的脚本文件(Windows系统内为*.bat,linux系统内为*.sh)路径填入此处 - + Client working directory: 客户端工作路径: - + ../data - + Note: On Windows, the client working directory should not be identical to the path of GUI, otherwise the client will use the wrong .dll file. 注意: 在Windows系统中,客户端工作路径与GUI程序所在路径不能相同,否则客户端会使用错误的.dll文件。 - + Start arguments 启动参数 - + <port> -f - + Note: -f is necessary because the GUI need to handle the output in time In some cases the arguments should be set to "-p /dev/<port> -f" @@ -770,52 +962,52 @@ or "-p <port> -f" 或"-p <port> -f" - + Keep te client active even the PM3 hardware is disconnected.(Experimental) 在PM3断开后保持客户端运行(实验性功能) - + Language: 语言: - + Choose Language 选择语言 - + (Restart this app to use new language) (重启此程序以使用新语言) - + Keep buttons enabled even the client is running or disconnected 保持所有按钮可点击,即使未连接客户端或有任务正在运行 - + LF 低频 - + other 其它 - + Divisor: 分频系数(Divisor): - + Actural Freq: 125.000kHz 实际频率: 125.000kHz - + Note: You might need a modified LF antenna if the freq is not 125k/134k. When setting the freq, the "hw setlfdivisor" will also be called. @@ -824,47 +1016,47 @@ When setting the freq, the "hw setlfdivisor" will also be called. - + Bit per sample: 采样精度(Bit per sample): - + Trigger threshold: 触发阈值(Trigger threshold): - + Samples to skip: 跳过前n个采样(Samples to skip): - + Get Config 获取当前配置 - + Set Config 改变当前配置 - + GUI 图形化界面 - - - - - - - - - - + + + + + + + + + + Info 信息 @@ -874,30 +1066,30 @@ When setting the freq, the "hw setlfdivisor" will also be called.请先选择端口 - + Connected 已连接 - - + + Not Connected 未连接 - + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml);;All Files(*.*) 二进制数据文件(*.bin *.dump);;文本数据文件(*.txt *.eml);;所有文件(*.*) - - - + + + Failed to open 无法打开 - + Continue? 确定? @@ -917,227 +1109,227 @@ When setting the freq, the "hw setlfdivisor" will also be called.检查更新 - + Some of the data and key will be cleared. 部分数据和密码将被清除 - + Plz select the font of data widget and key widget 请选择数据窗口和密钥窗口的字体 - + Data must consists of 32 Hex symbols(Whitespace is allowed) 数据必须由32个十六进制字符组成(中间可含有空格) - - + + Key must consists of 12 Hex symbols(Whitespace is allowed) 密钥必须由12个十六进制字符组成(中间可含有空格) - + Plz select the data file: 请选择数据文件: - + Plz select the key file: 请选择密钥文件: - + Binary Key Files(*.bin *.dump);;Binary Data Files(*.bin *.dump);;All Files(*.*) 二进制密钥文件(*.bin *.dump)二进制密钥文件(*.bin *.dump);所有文件(*.*) - + Plz select the location to save data file: 请选择数据文件保存的位置: - + Binary Data Files(*.bin *.dump);;Text Data Files(*.txt *.eml) 二进制数据文件(*.bin *.dump);文本数据文件(*.txt *.eml) - - - + + + Failed to save to 无法保存至 - + Plz select the location to save key file: 请选择密钥文件保存的位置: - + Binary Key Files(*.bin *.dump) 二进制密码文件(*.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卡的块0无法写入,卡号也不能更改 - + 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)的块0可写,卡号可变。 - + 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. 可通过普通的写块命令来写块0,可重复擦写 - + (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). 块0只能写入一次 - + (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卡一样可以反复读写块0,用特殊命令锁卡后就和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攻击破解 - + Plz select the trace file: 请选择trace文件: - + Trace Files(*.trc);;All Files(*.*) Trace文件(*.trc);;所有文件(*.*) - + Plz select the location to save trace file: 请选择trace文件保存的位置: - + Trace Files(*.trc) Trace文件(*.trc) - - + + Idle 空闲 - + Stop 停止 - - + + Sec 扇区 - + Blk - + KeyA 密钥A - + KeyB 密钥B - + HW Version: 固件版本: - + PM3: 连接状态: - + State: 运行状态: - + Running 正在运行 - + Actural Freq: 实际频率: @@ -1145,18 +1337,18 @@ When setting the freq, the "hw setlfdivisor" will also be called. Mifare - + Success! 成功! - - - - - - + + + + + + Info 信息 @@ -1166,13 +1358,13 @@ When setting the freq, the "hw setlfdivisor" will also be called.请至少提供一个已知密码 - - + + Failed! 失败! - + The Access Bits is invalid! It could make the whole sector blocked irreversibly! Continue to write? @@ -1181,22 +1373,22 @@ Continue to write? 确定要写入吗? - + Successful! 成功! - + Failed to write to these blocks: 写入以下块失败: - + Select them? 选中这些块? - + Failed to read card. 读卡失败。 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