diff --git a/lang/en_US.ts b/lang/en_US.ts
index 729872e..1cb5ab4 100644
--- a/lang/en_US.ts
+++ b/lang/en_US.ts
@@ -37,6 +37,84 @@
+
+ MF_Sim_simDialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MF_UID_parameterDialog
@@ -88,250 +166,255 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -345,6 +428,8 @@
+
+
@@ -361,7 +446,7 @@
-
+
@@ -373,6 +458,7 @@
+
@@ -430,6 +516,7 @@
+
@@ -529,49 +616,69 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -579,28 +686,28 @@
Mifare
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
+
diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts
index 921ff20..3ae33f8 100644
--- a/lang/zh_CN.ts
+++ b/lang/zh_CN.ts
@@ -45,6 +45,92 @@
目标块:
+
+ MF_Sim_simDialog
+
+
+ 对话框
+
+
+
+
+ 模拟
+
+
+
+
+
+
+
+
+
+ 4或7字节的UID,如果不指定,则使用模拟器内存中的4字节UID
+
+
+
+
+
+
+
+
+
+ 在读卡器读取<n>个块后自动退出模拟,n为0或不指定时永远不退出
+
+
+
+
+
+
+
+
+
+ 交互模式,勾选后PM3客户端将在模拟完成或者模拟中断后才可继续使用
+
+
+
+
+
+
+
+
+
+ 破解,对读卡器进行攻击,通过nr/ar攻击来钓出密码(无卡嗅探)
+
+
+
+
+
+
+
+
+
+ 在获得密码后自动将密码写入模拟器内存(自动勾选x和i)
+
+
+
+
+
+
+
+
+
+ 从<filename.txt>当中获取用于破解读卡器的UID(批量模拟)(自动勾选x和i)
+
+
+
+
+
+
+
+
+
+ 生成随机nonce而不是顺序的nonce,这种情况下PM3将不对读卡器进行标准攻击,只进行moebius攻击
+
+
+
+ 生成随机nonce而不是顺序的nonce,这种情况下PM3将不对读卡器进行标准攻击,只进行moebius攻击
+
+
MF_UID_parameterDialog
@@ -104,250 +190,255 @@
断开
-
+
Mifare(IC)卡
-
+
-
+
-
+
-
+
卡类型
-
+
-
+
-
+
-
+
-
+
文件
-
-
+
+
加载
-
-
+
+
保存
-
-
+
+
-
+
-
+
破解
-
+
读卡片信息
-
+
验证默认密码
-
+
Nested攻击
-
+
Hardested攻击
-
+
读/写
-
+
-
+
-
+
Key类型:
-
+
-
+
-
+
+
+
+
+
+
普通卡(需要密码)
-
-
+
+
读单个块
-
-
+
+
写单个块
-
-
-
+
+
+
读所有块
-
-
+
+
写所有块
-
+
Dump命令
-
+
Restore命令
-
+
UID卡(不需要密码)
-
+
锁定UFUID卡
-
+
关于UID卡
-
+
设置卡参数
-
+
擦除
-
-
+
+
模拟
-
+
从上方数据导入
-
-
+
+
清空
-
-
+
+
嗅探
-
+
列出嗅探数据
-
+
原始命令
-
+
命令历史:
-
+
清空历史
-
+
发送
-
+
清空输出
@@ -361,6 +452,8 @@
+
+
信息
@@ -377,7 +470,7 @@
-
+
未连接
@@ -398,6 +491,7 @@ Continue?
+
无法打开
@@ -467,6 +561,7 @@ Continue?
+
无法保存至
@@ -566,49 +661,69 @@ Continue?
所有UID卡都似乎更容易被Nested攻击破解
-
-
+
+
+ 请选择trace文件:
+
+
+
+
+ Trace文件(*.trc);;所有文件(*.*)
+
+
+
+
+ 请选择trace文件保存的位置:
+
+
+
+
+ Trace文件(*.trc)
+
+
+
+
空闲
-
-
+
+
-
+
-
+
-
+
-
+
固件版本:
-
+
连接状态:
-
+
运行状态:
-
+
运行中
@@ -620,28 +735,28 @@ Continue?
信息:
-
-
+
+
成功!
-
-
-
-
-
+
+
+
+
+
信息
-
-
+
+
失败!
-
+
读卡失败。
diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp
index a396480..7259805 100644
--- a/ui/mainwindow.cpp
+++ b/ui/mainwindow.cpp
@@ -50,7 +50,6 @@ void MainWindow::initUI() // will be called by main.app
void MainWindow::on_PM3_refreshPortButton_clicked()
{
ui->PM3_portBox->clear();
- ui->PM3_portBox->addItem("");
QSerialPort serial;
QStringList serialList;
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
@@ -493,6 +492,55 @@ void MainWindow::on_MF_Sim_clearButton_clicked()
mifare->wipeE();
}
+void MainWindow::on_MF_Sim_simButton_clicked()
+{
+ mifare->simulate();
+}
+
+void MainWindow::on_MF_Sniff_loadButton_clicked() // use a tmp file to support complicated path
+{
+ QString title = "";
+ QString filename = "";
+
+ title = tr("Plz select the trace file:");
+ filename = QFileDialog::getOpenFileName(this, title, "./", tr("Trace Files(*.trc);;All Files(*.*)"));
+ qDebug() << filename;
+ if(filename != "")
+ {
+ QString tmpFile = "tmp" + QString::number(QDateTime::currentDateTime().toTime_t()) + ".trc";
+ if(QFile::copy(filename, "./" + tmpFile))
+ {
+ mifare->loadSniff(tmpFile);
+ QFile::remove("./" + tmpFile);
+ }
+ else
+ {
+ QMessageBox::information(this, tr("Info"), tr("Failed to open") + "\n" + filename);
+ }
+ }
+}
+
+void MainWindow::on_MF_Sniff_saveButton_clicked()
+{
+ QString title = "";
+ QString filename = "";
+
+ title = tr("Plz select the location to save trace file:");
+ filename = QFileDialog::getSaveFileName(this, title, "./", tr("Trace Files(*.trc)"));
+ qDebug() << filename;
+ if(filename != "")
+ {
+ QString tmpFile = "tmp" + QString::number(QDateTime::currentDateTime().toTime_t()) + ".trc";
+ mifare->saveSniff(tmpFile);
+ if(!QFile::copy("./" + tmpFile, filename))
+ {
+ QMessageBox::information(this, tr("Info"), tr("Failed to save to") + "\n" + filename);
+ }
+ QFile::remove("./" + tmpFile);
+ }
+
+}
+
void MainWindow::on_MF_Sniff_sniffButton_clicked()
{
setState(false);
@@ -674,50 +722,4 @@ void MainWindow::setState(bool st)
-void MainWindow::on_MF_Sim_simButton_clicked()
-{
- mifare->simulate();
-}
-
-void MainWindow::on_MF_Sniff_loadButton_clicked() // use a tmp file to support complicated path
-{
- QString title = "";
- QString filename = "";
- title = tr("Plz select the trace file:");
- filename = QFileDialog::getOpenFileName(this, title, "./", tr("Trace Files(*.trc);;All Files(*.*)"));
- qDebug() << filename;
- if(filename != "")
- {
- QString tmpFile = "tmp" + QString::number(QDateTime::currentDateTime().toTime_t()) + ".trc";
- if(QFile::copy(filename, "./" + tmpFile))
- {
- mifare->loadSniff(tmpFile);
- QFile::remove("./" + tmpFile);
- }
- else
- {
- QMessageBox::information(this, tr("Info"), tr("Failed to open") + "\n" + filename);
- }
- }
-}
-
-void MainWindow::on_MF_Sniff_saveButton_clicked()
-{
- QString title = "";
- QString filename = "";
-
- title = tr("Plz select the location to save trace file:");
- filename = QFileDialog::getSaveFileName(this, title, "./", tr("Trace Files(*.trc)"));
- qDebug() << filename;
- if(filename != "")
- {
- QString tmpFile = "tmp" + QString::number(QDateTime::currentDateTime().toTime_t()) + ".trc";
- mifare->saveSniff(tmpFile);
- if(!QFile::copy("./" + tmpFile, filename))
- {
- QMessageBox::information(this, tr("Info"), tr("Failed to save to") + "\n" + filename);
- }
- }
-
-}
diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui
index 94e2915..8e90e42 100644
--- a/ui/mainwindow.ui
+++ b/ui/mainwindow.ui
@@ -608,6 +608,13 @@
+ -
+
+
+ Data:
+
+
+
-
diff --git a/ui/mf_sim_simdialog.ui b/ui/mf_sim_simdialog.ui
index 97b4edf..1a9c15a 100644
--- a/ui/mf_sim_simdialog.ui
+++ b/ui/mf_sim_simdialog.ui
@@ -11,7 +11,7 @@
- Dialog
+ Simulate
@@ -299,7 +299,7 @@
- Generate random nonces instead of sequential nonces. Standard reader attack won't work with this option, only moebius attack works.
+ Generate random nonces instead of sequential nonces. Standard reader attack won't work with this option, only moebius attack works
true