autosize support for integrated tools
This commit is contained in:
parent
da9ebfb8aa
commit
b8f9f9fe65
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@ -196,7 +197,7 @@ namespace MifareOneTool
|
||||
}
|
||||
public Sector(byte[] uid)
|
||||
{
|
||||
if (uid.Length != 4) { throw new Exception("不恰当的4字节UID长度"); }
|
||||
if (uid.Length != 4) { throw new Exception(Resources.不恰当的4字节UID长度); }
|
||||
this._isSector0 = true;
|
||||
this.Wipe();
|
||||
byte bcc = (byte)(uid[0] ^ uid[1] ^ uid[2] ^ uid[3]);
|
||||
@ -240,7 +241,7 @@ namespace MifareOneTool
|
||||
}
|
||||
public string Info(int sec)
|
||||
{
|
||||
string info = "扇区" + sec.ToString();
|
||||
string info = Resources.扇区 + sec.ToString();
|
||||
if (Enumerable.SequenceEqual(
|
||||
new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
||||
this._sector[0]) &&
|
||||
@ -251,15 +252,15 @@ namespace MifareOneTool
|
||||
new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
||||
this._sector[2]))
|
||||
{
|
||||
info += " 空扇区";
|
||||
info += Resources._空扇区;
|
||||
}
|
||||
else
|
||||
{
|
||||
info += " 有数据";
|
||||
info += Resources._有数据;
|
||||
}
|
||||
if (this.Verify() != 0x00)
|
||||
{
|
||||
info += " 有错误";
|
||||
info += Resources._有错误;
|
||||
}
|
||||
return info;
|
||||
}
|
||||
@ -333,7 +334,7 @@ namespace MifareOneTool
|
||||
public S50(byte[] uid)
|
||||
{
|
||||
_sectors.Capacity = 16;
|
||||
if (uid.Length != 4) { throw new Exception("不恰当的4字节UID长度"); }
|
||||
if (uid.Length != 4) { throw new Exception(Resources.不恰当的4字节UID长度); }
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
if (i == 0) { _sectors.Add(new Sector(uid)); }
|
||||
@ -365,17 +366,17 @@ namespace MifareOneTool
|
||||
}
|
||||
public void LoadFromMfd(string file)
|
||||
{
|
||||
if (!File.Exists(file)) { throw new IOException("加载的文件不存在。"); }
|
||||
if (new FileInfo(file).Length != 1024) { throw new IOException("加载的S50卡文件大小异常。"); }
|
||||
if (!File.Exists(file)) { throw new IOException(Resources.加载的文件不存在); }
|
||||
if (new FileInfo(file).Length != 1024) { throw new IOException(Resources.加载的S50卡文件大小异常); }
|
||||
byte[] loadByte = File.ReadAllBytes(file);
|
||||
this.Wipe();
|
||||
this.SectorsRaw = (byte[])loadByte;
|
||||
}
|
||||
public void LoadFromMctTxt(string file)
|
||||
{
|
||||
if (!File.Exists(file)) { throw new IOException("加载的文件不存在。"); }
|
||||
if (!File.Exists(file)) { throw new IOException(Resources.加载的文件不存在); }
|
||||
long fileLength=new FileInfo(file).Length;
|
||||
if (fileLength < 2200 || fileLength > 2400) { throw new IOException("加载的S50卡文件大小异常。"); }
|
||||
if (fileLength < 2200 || fileLength > 2400) { throw new IOException(Resources.加载的S50卡文件大小异常); }
|
||||
List<string> lines = new List<string>(File.ReadAllLines(file));
|
||||
List<string> invaild = new List<string>();
|
||||
foreach (string line in lines)
|
||||
@ -391,7 +392,7 @@ namespace MifareOneTool
|
||||
}
|
||||
if (lines.Count != 64)
|
||||
{
|
||||
throw new Exception("文件内不是含有64个块数据,可能不完整或不兼容。");
|
||||
throw new Exception(Resources.文件内不是含有64个块数据_可能不完整或不兼容);
|
||||
}
|
||||
this.Wipe();
|
||||
for (int i = 0; i < lines.Count; i++)
|
||||
@ -409,7 +410,7 @@ namespace MifareOneTool
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
sb.AppendLine("+Sector: " + i.ToString());
|
||||
sb.AppendLine(Resources._Sector + i.ToString());
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
sb.AppendLine(Utils.Hex2Str(this._sectors[i].Block[j]));
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@ -29,8 +30,8 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonListDev_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
if (Properties.Settings.Default.NewScan)
|
||||
{ File.Delete("libnfc.conf"); }
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
@ -47,7 +48,7 @@ namespace MifareOneTool
|
||||
cfg += "device.name = \"NFC-Device\"\n";
|
||||
cfg += "device.connstring = \"" + devstr + "\"";
|
||||
File.WriteAllText("libnfc.conf", cfg);
|
||||
curDevice.Text = "设备串口:" + devstr.Replace("pn532_uart:", "").Replace(":115200", "");
|
||||
curDevice.Text = Resources.设备串口 + devstr.Replace("pn532_uart:", "").Replace(":115200", "");
|
||||
}
|
||||
|
||||
void default_rpt(object sender, ProgressChangedEventArgs e)
|
||||
@ -56,7 +57,7 @@ namespace MifareOneTool
|
||||
{
|
||||
logAppend((string)e.UserState);
|
||||
logAppend("");
|
||||
Text = "MifareOne Tool - 运行完毕";
|
||||
Text = Resources.MifareOne_Tool_运行完毕;
|
||||
}
|
||||
else if (e.ProgressPercentage == 101)
|
||||
{
|
||||
@ -72,12 +73,12 @@ namespace MifareOneTool
|
||||
File.Delete(filename);
|
||||
}
|
||||
File.Move(omfd, filename);
|
||||
logAppend("##已自动保存-" + filename + "##");
|
||||
logAppend(Resources._已自动保存 + filename + "##");
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Delete(omfd);
|
||||
logAppend("##缓存文件异常##");
|
||||
logAppend(Resources._缓存文件异常);
|
||||
}
|
||||
lastuid = "";
|
||||
}
|
||||
@ -86,9 +87,9 @@ namespace MifareOneTool
|
||||
SaveFileDialog ofd = new SaveFileDialog();
|
||||
ofd.AddExtension = true;
|
||||
//ofd.DefaultExt = ".mfd";
|
||||
ofd.Title = "请选择MFD文件保存位置及文件名";
|
||||
ofd.Title = Resources.请选择MFD文件保存位置及文件名;
|
||||
ofd.OverwritePrompt = true;
|
||||
ofd.Filter = "DUMP文件|*.dump|MFD文件|*.mfd";
|
||||
ofd.Filter = Resources.DUMP文件_dump_MFD文件_mfd;
|
||||
if (File.Exists(omfd) && new FileInfo(omfd).Length > 1)
|
||||
{
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
@ -98,36 +99,36 @@ namespace MifareOneTool
|
||||
File.Delete(ofd.FileName);
|
||||
}
|
||||
File.Move(omfd, ofd.FileName);
|
||||
logAppend("##已保存-" + ofd.FileName + "##");
|
||||
logAppend(Resources._已保存 + ofd.FileName + "##");
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Delete(omfd);
|
||||
logAppend("##未保存##");
|
||||
logAppend(Resources._未保存);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
File.Delete(omfd);
|
||||
logAppend("##缓存文件异常##");
|
||||
logAppend(Resources._缓存文件异常);
|
||||
}
|
||||
}
|
||||
omfd = "";
|
||||
logAppend("");
|
||||
Text = "MifareOne Tool - 运行完毕";
|
||||
Text = Resources.MifareOne_Tool_运行完毕;
|
||||
}
|
||||
else if (e.ProgressPercentage == 102)
|
||||
{
|
||||
logAppend((string)e.UserState);
|
||||
logAppend("##Nonce收集完毕##");
|
||||
logAppend("您可以上传到云计算服务节点进行计算。");
|
||||
logAppend(Resources._Nonce收集完毕);
|
||||
logAppend(Resources.您可以上传到云计算服务节点进行计算);
|
||||
logAppend("");
|
||||
|
||||
Text = "MifareOne Tool - 运行完毕";
|
||||
Text = Resources.MifareOne_Tool_运行完毕;
|
||||
}
|
||||
else if (e.ProgressPercentage == 103)
|
||||
{
|
||||
logAppend("识别了以下设备:");
|
||||
logAppend(Resources.识别了以下设备);
|
||||
List<string> myReaders = (List<string>)(e.UserState);
|
||||
foreach (string reader in myReaders)
|
||||
{
|
||||
@ -135,7 +136,7 @@ namespace MifareOneTool
|
||||
}
|
||||
if (myReaders.Count > 0)
|
||||
{
|
||||
logAppend("将自动选择首个设备:" + myReaders.First());
|
||||
logAppend(Resources.将自动选择首个设备 + myReaders.First());
|
||||
writeConfig(myReaders.First());
|
||||
SetDeviceCombo.Items.Clear();
|
||||
SetDeviceCombo.Items.AddRange(myReaders.ToArray());
|
||||
@ -143,8 +144,8 @@ namespace MifareOneTool
|
||||
}
|
||||
else
|
||||
{
|
||||
logAppend("没有发现任何有效的NFC设备。");
|
||||
logAppend("请检查接线是否正确/驱动是否正常安装/设备电源是否已经打开(对于具有电源开关的型号)。");
|
||||
logAppend(Resources.没有发现任何有效的NFC设备);
|
||||
logAppend(Resources.请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -171,7 +172,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行检测设备……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行检测设备); running = true;
|
||||
List<string> myReader = new List<string>();
|
||||
process.OutputDataReceived += (s, _e) =>
|
||||
{
|
||||
@ -196,13 +197,13 @@ namespace MifareOneTool
|
||||
lprocess = false;
|
||||
running = false;
|
||||
b.ReportProgress(103, myReader);
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
logAppend("#软件版本 " + Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
||||
localVersionLabel.Text = "本地版本 " + Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
logAppend(Resources._软件版本 + Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
||||
localVersionLabel.Text = Resources.本地版本 + Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
Directory.CreateDirectory("auto_keys");
|
||||
checkBoxAutoABN.Checked = Properties.Settings.Default.AutoABN;
|
||||
checkBoxWriteProtect.Checked = Properties.Settings.Default.WriteCheck;
|
||||
@ -228,7 +229,7 @@ namespace MifareOneTool
|
||||
{
|
||||
if (line.StartsWith("device.connstring = \"pn532_uart:"))
|
||||
{
|
||||
curDevice.Text = "设备串口:" + line.Replace("device.connstring = \"pn532_uart:", "").Replace(":115200\"", "");
|
||||
curDevice.Text = Resources.设备串口 + line.Replace("device.connstring = \"pn532_uart:", "").Replace(":115200\"", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -237,7 +238,7 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonScanCard_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
bgw.DoWork += new DoWorkEventHandler(list_tag);
|
||||
bgw.WorkerReportsProgress = true;
|
||||
@ -256,7 +257,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0,"开始执行扫描卡片……");
|
||||
b.ReportProgress(0,Resources.开始执行扫描卡片);
|
||||
running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
@ -265,7 +266,7 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
string omfd = "";
|
||||
@ -300,14 +301,14 @@ namespace MifareOneTool
|
||||
return;
|
||||
}
|
||||
if (uid.Length < 8) { return; }
|
||||
logAppend("正在检索是否存在key.mfd…");
|
||||
logAppend(Resources.正在检索是否存在key_mfd);
|
||||
List<string> files = Directory.EnumerateFiles("auto_keys", "*.mfd").ToList<string>();
|
||||
files.Reverse();//保证拿到最新的
|
||||
for (int i = 0; i < files.Count; i++)
|
||||
{
|
||||
if (files[i].StartsWith("auto_keys\\" + uid))
|
||||
{
|
||||
logAppend("已找到!K=" + files[i]);
|
||||
logAppend(Resources.已找到_K + files[i]);
|
||||
keymfd = files[i];
|
||||
buttonSelectKey.Text = "K=" + files[i];
|
||||
return;
|
||||
@ -320,7 +321,7 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonMfRead_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = "MfRead.tmp";
|
||||
string kt = "A";
|
||||
string nn = "";
|
||||
@ -337,11 +338,11 @@ namespace MifareOneTool
|
||||
if (checkBoxAutoABN.Checked && keymfd != "")
|
||||
{
|
||||
kt = "C";
|
||||
logAppend("正在使用智能KeyABN…");
|
||||
logAppend(Resources.正在使用智能KeyABN);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (MessageBox.Show("使用KeyA(是)或KeyB(否),还是不使用(用于全新白卡)(取消)?", "KeyA/B/N", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
|
||||
switch (MessageBox.Show(Resources.使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_, "KeyA/B/N", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
|
||||
{
|
||||
case DialogResult.No:
|
||||
kt = "B";
|
||||
@ -378,7 +379,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行读取卡片……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行读取卡片); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -388,11 +389,11 @@ namespace MifareOneTool
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
b.ReportProgress(101, "##运行完毕##");
|
||||
b.ReportProgress(101, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
File.Delete(args[0]);
|
||||
}
|
||||
}
|
||||
@ -410,8 +411,8 @@ namespace MifareOneTool
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd|DUMP文件|*.dump";
|
||||
ofd.Title = "请选择一个包含目标卡密钥的MFD文件(通常是已经破解出的该卡的MFD文件)";
|
||||
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
|
||||
ofd.Title = Resources.请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -421,7 +422,7 @@ namespace MifareOneTool
|
||||
else
|
||||
{
|
||||
keymfd = "";
|
||||
buttonSelectKey.Text = "选择key.mfd";
|
||||
buttonSelectKey.Text = Resources.选择key_mfd;
|
||||
}
|
||||
}
|
||||
|
||||
@ -436,7 +437,7 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ioe.Message, Resources.打开出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return false;
|
||||
}
|
||||
if (card.Verify()[16] == 0x00)
|
||||
@ -451,12 +452,12 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonMfWrite_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = "";
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd;*.dump";
|
||||
ofd.Title = "请选择需要写入的MFD文件";
|
||||
ofd.Filter = Resources.MFD文件_mfd_dump;
|
||||
ofd.Title = Resources.请选择需要写入的MFD文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -466,17 +467,17 @@ namespace MifareOneTool
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!writecheck(rmfd)) { MessageBox.Show("将要写入的文件存在错误,请用高级模式中的Hex工具打开查看。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
if (!writecheck(rmfd)) { MessageBox.Show(Resources.将要写入的文件存在错误_请用高级模式中的Hex工具打开查看, Resources.错误, MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
string kt = "A";
|
||||
string nn = "";
|
||||
if (checkBoxAutoABN.Checked && keymfd != "")
|
||||
{
|
||||
kt = "C";
|
||||
logAppend("正在使用智能KeyABN…");
|
||||
logAppend(Resources.正在使用智能KeyABN);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (MessageBox.Show("使用KeyA(是)或KeyB(否),还是不使用(用于全新白卡)(取消)?", "KeyA/B/N", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
|
||||
switch (MessageBox.Show(Resources.使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_, Resources.KeyA_B_N, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
|
||||
{
|
||||
case DialogResult.No:
|
||||
kt = "B";
|
||||
@ -511,7 +512,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行写入M1卡片……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行写入M1卡片); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -519,17 +520,17 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonMfoc_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = "Mfoc.tmp";
|
||||
string key = "";
|
||||
if (Control.ModifierKeys == Keys.Control)
|
||||
{
|
||||
string[] ks = Interaction.InputBox("请输入已知的Key,以英文半角逗号分隔。", "请输入已知Key", Properties.Settings.Default.LastTryKey, -1, -1).Trim().Split(',');
|
||||
string[] ks = Interaction.InputBox(Resources.请输入已知的Key_以英文半角逗号分隔, Resources.请输入已知Key, Properties.Settings.Default.LastTryKey, -1, -1).Trim().Split(',');
|
||||
if (ks.Length > 0)
|
||||
{
|
||||
Properties.Settings.Default.LastTryKey = string.Join(",", ks);
|
||||
@ -568,7 +569,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行MFOC解密……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行MFOC解密); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -578,18 +579,18 @@ namespace MifareOneTool
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
b.ReportProgress(101, "##运行完毕##");
|
||||
b.ReportProgress(101, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
File.Delete(args[0]);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonUidReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
bgw.DoWork += new DoWorkEventHandler(reset_uid);
|
||||
bgw.WorkerReportsProgress = true;
|
||||
@ -623,7 +624,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行重置UID卡片卡号……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行重置UID卡片卡号); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -631,13 +632,13 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonUidFormat_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (MessageBox.Show("该操作将会清空UID卡内全部数据!!!\n清空后不可恢复!请确认是否要继续操作?", "危险操作警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
if (MessageBox.Show(Resources.该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否, Resources.危险操作警告, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
{ return; }
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
bgw.DoWork += new DoWorkEventHandler(format_uid);
|
||||
@ -661,7 +662,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行UID卡片全格……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行UID卡片全格); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -669,12 +670,12 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonBmfRead_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
string rmfd = "BmfRead.tmp";
|
||||
if (checkBoxAutoSave.Checked)
|
||||
{
|
||||
@ -701,7 +702,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行UID卡片读取……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行UID卡片读取); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -711,23 +712,23 @@ namespace MifareOneTool
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
b.ReportProgress(101, "##运行完毕##");
|
||||
b.ReportProgress(101, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
File.Delete(args[0]);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonBmfWrite_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
string rmfd = "";
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd;*.dump";
|
||||
ofd.Title = "请选择需要写入的MFD文件";
|
||||
ofd.Title = Resources.请选择需要写入的MFD文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -761,7 +762,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行UID卡片写入……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行UID卡片写入); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -769,7 +770,7 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonConClr_Click(object sender, EventArgs e)
|
||||
@ -781,22 +782,22 @@ namespace MifareOneTool
|
||||
{
|
||||
string logtext = richTextBox1.Text;
|
||||
File.WriteAllText("m1t.log", logtext, Encoding.UTF8);
|
||||
MessageBox.Show("终端内容已保存至m1t.log文件", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
MessageBox.Show(Resources.终端内容已保存至m1t_log文件, Resources.Information, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void buttonUidWrite_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
byte[] buid = new byte[4];
|
||||
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
|
||||
rng.GetNonZeroBytes(buid);
|
||||
string uid = Interaction.InputBox("请输入需要写入的UID卡号,共8位十六进制数,如E44A3BF1。", "请输入UID号", hex(buid), -1, -1).Trim();
|
||||
string uid = Interaction.InputBox(Resources.请输入需要写入的UID卡号_共8位十六进制数_如E44A3B, Resources.请输入UID号, hex(buid), -1, -1).Trim();
|
||||
string pat = "[0-9A-Fa-f]{8}";
|
||||
if (!Regex.IsMatch(uid, pat))
|
||||
{
|
||||
MessageBox.Show("输入的UID号不合法", "InputError", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(Resources.输入的UID号不合法, "InputError", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
@ -818,7 +819,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行UID卡片设定卡号……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行UID卡片设定卡号); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -826,13 +827,13 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonMfcuk_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
Text = Resources.MifareOne_Tool_运行中;
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
bgw.DoWork += new DoWorkEventHandler(Mfcuk);
|
||||
bgw.WorkerReportsProgress = true;
|
||||
@ -842,29 +843,29 @@ namespace MifareOneTool
|
||||
|
||||
void Mfcuk(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
ProcessStartInfo psi = new ProcessStartInfo("cmd");
|
||||
psi.Arguments = "/k mfcuk.exe -v 3 -C -R -1 -s 250 -S 250";
|
||||
psi.WorkingDirectory = "nfc-bin";
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行全加密卡片爆破……");
|
||||
b.ReportProgress(0, Resources.开始执行全加密卡片爆破);
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
bool cuidKeyOver = false;
|
||||
|
||||
private void buttonCmfWrite_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = "";
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd;*.dump";
|
||||
ofd.Title = "请选择需要写入的MFD文件";
|
||||
ofd.Filter = Resources.MFD文件_mfd_dump;
|
||||
ofd.Title = Resources.请选择需要写入的MFD文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -874,7 +875,7 @@ namespace MifareOneTool
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!writecheck(rmfd)) { MessageBox.Show("将要写入的文件存在错误,请用高级模式中的Hex工具打开查看。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
if (!writecheck(rmfd)) { MessageBox.Show(Resources.将要写入的文件存在错误_请用高级模式中的Hex工具打开查看, Resources.错误, MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
if (keymfd == "" && Properties.Settings.Default.CuidKeyOver)
|
||||
{
|
||||
cuidKeyOver = true;
|
||||
@ -882,18 +883,18 @@ namespace MifareOneTool
|
||||
S50 empty = new S50(Utils.Hex2Block(uid, 4));
|
||||
empty.ExportToMfd("cuid_empty.kmf");
|
||||
keymfd = "cuid_empty.kmf";
|
||||
logAppend("已启用CUID空卡写入补丁");
|
||||
logAppend(Resources.已启用CUID空卡写入补丁);
|
||||
}
|
||||
string kt = "A";
|
||||
string nn = "";
|
||||
if (checkBoxAutoABN.Checked && keymfd != "")
|
||||
{
|
||||
kt = "C";
|
||||
logAppend("正在使用智能KeyABN…");
|
||||
logAppend(Resources.正在使用智能KeyABN);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (MessageBox.Show("使用KeyA(是)或KeyB(否),还是不使用(用于全新白卡)(取消)?", "KeyA/B/N", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
|
||||
switch (MessageBox.Show(Resources.使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_, "KeyA/B/N", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information))
|
||||
{
|
||||
case DialogResult.No:
|
||||
kt = "B";
|
||||
@ -928,7 +929,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行CUID/FUID卡片写入……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行CUID_FUID卡片写入); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -942,7 +943,7 @@ namespace MifareOneTool
|
||||
cuidKeyOver = false;
|
||||
File.Delete("cuid_empty.kmf");
|
||||
}
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonKill_Click(object sender, EventArgs e)
|
||||
@ -952,16 +953,16 @@ namespace MifareOneTool
|
||||
if (process.HasExited == false)
|
||||
{
|
||||
process.Kill();
|
||||
Form1.ActiveForm.Text = "MifareOne Tool - 已终止";
|
||||
logAppend("##程序已被强制停止##");
|
||||
Form1.ActiveForm.Text = Resources.MifareOne_Tool_已终止;
|
||||
logAppend(Resources._程序已被强制停止);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonLockUfuid_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (MessageBox.Show("该操作将会锁死UFUID卡片!!!\n锁死后不可恢复!无法再次更改0块!请确认是否要继续操作?", "危险操作警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
if (MessageBox.Show(Resources.该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0, Resources.危险操作警告, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
{ return; }
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
bgw.DoWork += new DoWorkEventHandler(lock_ufuid);
|
||||
@ -985,7 +986,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行UFUID卡片锁定……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行UFUID卡片锁定); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -993,23 +994,23 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonMfFormat_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
if (keymfd == "") { MessageBox.Show("未选择有效key.mfd。", "无密钥", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
if (keymfd == "") { MessageBox.Show(Resources.未选择有效key_mfd, Resources.无密钥, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = keymfd;
|
||||
string kt = "A";
|
||||
if (checkBoxAutoABN.Checked && keymfd != "")
|
||||
{
|
||||
kt = "C";
|
||||
logAppend("正在使用智能KeyABN…");
|
||||
logAppend(Resources.正在使用智能KeyABN);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (MessageBox.Show("使用KeyA(是)或KeyB(否)?", "KeyA/B", MessageBoxButtons.YesNo, MessageBoxIcon.Information))
|
||||
switch (MessageBox.Show(Resources.使用KeyA_是_或KeyB_否, "KeyA/B", MessageBoxButtons.YesNo, MessageBoxIcon.Information))
|
||||
{
|
||||
case DialogResult.No:
|
||||
kt = "B";
|
||||
@ -1037,7 +1038,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行格式化M1卡片……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行格式化M1卡片); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -1045,7 +1046,7 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonEMfoc_Click(object sender, EventArgs e)
|
||||
@ -1065,10 +1066,10 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonECmfoc_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = "Mfoc.tmp";
|
||||
string key = "";
|
||||
string[] ks = Interaction.InputBox("请输入已知的Key,以英文半角逗号分隔。", "请输入已知Key", "FFFFFFFFFFFF", -1, -1).Trim().Split(',');
|
||||
string[] ks = Interaction.InputBox(Resources.请输入已知的Key_以英文半角逗号分隔, Resources.请输入已知Key, "FFFFFFFFFFFF", -1, -1).Trim().Split(',');
|
||||
if (ks.Length > 0)
|
||||
{
|
||||
foreach (string k in ks)
|
||||
@ -1125,48 +1126,48 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonEnAcr122u_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (MessageBox.Show("同时打开ACR122U支持可能会引起操作速度下降。\n请确认是否要继续操作?", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
if (MessageBox.Show(Resources.同时打开ACR122U支持可能会引起操作速度下降_请确认是否, Resources.提示信息, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
|
||||
{ Text = "MifareOne Tool"; return; }
|
||||
lprocess = true;
|
||||
if (File.Exists("nfc-bin/libnfc(PN532Only).dll"))
|
||||
{
|
||||
logAppend("ACR122U支持已经打开过。");
|
||||
logAppend(Resources.ACR122U支持已经打开过);
|
||||
}
|
||||
if (File.Exists("nfc-bin/libnfc(ACR122U).dll"))
|
||||
{
|
||||
logAppend("正在打开ACR122U支持……");
|
||||
logAppend(Resources.正在打开ACR122U支持);
|
||||
File.Move("nfc-bin/libnfc.dll", "nfc-bin/libnfc(PN532Only).dll");
|
||||
File.Move("nfc-bin/libnfc(ACR122U).dll", "nfc-bin/libnfc.dll");
|
||||
logAppend("已打开。");
|
||||
logAppend(Resources.已打开);
|
||||
}
|
||||
lprocess = false; running = false;
|
||||
Text = "MifareOne Tool - 运行完毕";
|
||||
logAppend("##运行完毕##");
|
||||
Text = Resources.MifareOne_Tool_运行完毕;
|
||||
logAppend(Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (running)
|
||||
{
|
||||
statusLabel.Text = "运行中";
|
||||
statusLabel.Text = Resources.运行中;
|
||||
if (process.HasExited == false)
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
TimeSpan runtime = now - process.StartTime;
|
||||
runTimeLabel.Text = "运行时间:" + ((int)runtime.TotalSeconds).ToString() + "秒";
|
||||
runTimeLabel.Text = Resources.运行时间 + ((int)runtime.TotalSeconds).ToString() + Resources.秒;
|
||||
}
|
||||
}
|
||||
else { statusLabel.Text = "空闲"; }
|
||||
else { statusLabel.Text = Resources.空闲; }
|
||||
}
|
||||
|
||||
private void buttonCheckEncrypt_Click(object sender, EventArgs e)
|
||||
{//其实这个mfdetect就是个mfoc阉割版。。只检测不破解而已,所以-f -k什么的可以加上,测试自己的key
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string key = "";
|
||||
if (Control.ModifierKeys == Keys.Control)
|
||||
{
|
||||
string[] ks = Interaction.InputBox("请输入已知的Key,以英文半角逗号分隔。", "请输入已知Key", Properties.Settings.Default.LastTryKey, -1, -1).Trim().Split(',');
|
||||
string[] ks = Interaction.InputBox(Resources.请输入已知的Key_以英文半角逗号分隔, Resources.请输入已知Key, Properties.Settings.Default.LastTryKey, -1, -1).Trim().Split(',');
|
||||
if (ks.Length > 0)
|
||||
{
|
||||
Properties.Settings.Default.LastTryKey = string.Join(",", ks);
|
||||
@ -1199,7 +1200,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行检测卡片加密……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行检测卡片加密); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -1210,11 +1211,11 @@ namespace MifareOneTool
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1242,10 +1243,10 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonnKeysMfoc_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string rmfd = "Mfoc.tmp";
|
||||
string key = "";
|
||||
string[] ks = Interaction.InputBox("请输入已知的Key,以英文半角逗号分隔。", "请输入已知Key", Properties.Settings.Default.LastTryKey, -1, -1).Trim().Split(',');
|
||||
string[] ks = Interaction.InputBox(Resources.请输入已知的Key_以英文半角逗号分隔, Resources.请输入已知Key, Properties.Settings.Default.LastTryKey, -1, -1).Trim().Split(',');
|
||||
if (ks.Length > 0)
|
||||
{
|
||||
Properties.Settings.Default.LastTryKey = string.Join(",", ks);
|
||||
@ -1272,7 +1273,7 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonDictMfoc_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
string cmd_mode = "/k";
|
||||
//if (Control.ModifierKeys == Keys.Control)
|
||||
//{
|
||||
@ -1281,8 +1282,8 @@ namespace MifareOneTool
|
||||
string filename = "";
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "密钥字典文件|*.dic";
|
||||
ofd.Title = "请选择需要打开的密钥字典文件";
|
||||
ofd.Filter = Resources.密钥字典文件_dic;
|
||||
ofd.Title = Resources.请选择需要打开的密钥字典文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -1290,7 +1291,7 @@ namespace MifareOneTool
|
||||
}
|
||||
else
|
||||
{
|
||||
Text = "MifareOne Tool - 已取消";
|
||||
Text = Resources.MifareOne_Tool_已取消;
|
||||
return;
|
||||
}
|
||||
string rmfd = "Mfoc.tmp";
|
||||
@ -1322,16 +1323,16 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行字典模式MFOC解密……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行字典模式MFOC解密); running = true;
|
||||
process.WaitForExit();
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == -1073741510) //Why this
|
||||
{
|
||||
b.ReportProgress(101, "##运行完毕##");
|
||||
b.ReportProgress(101, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
File.Delete(args[0]);
|
||||
}
|
||||
}
|
||||
@ -1358,7 +1359,7 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonHardNested_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = "MifareOne Tool - 运行中";
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Form1.ActiveForm.Text = Resources.MifareOne_Tool_运行中;
|
||||
FormHardNes fhn = new FormHardNes();
|
||||
if (fhn.ShowDialog() == DialogResult.Yes)
|
||||
{
|
||||
@ -1379,7 +1380,7 @@ namespace MifareOneTool
|
||||
}
|
||||
else
|
||||
{
|
||||
Text = "MifareOne Tool - 已取消";
|
||||
Text = Resources.MifareOne_Tool_已取消;
|
||||
}
|
||||
}
|
||||
void Hardnest(object sender, DoWorkEventArgs e)
|
||||
@ -1398,7 +1399,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行HardNested解密强化卡……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行HardNested解密强化卡); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -1408,18 +1409,18 @@ namespace MifareOneTool
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
}
|
||||
}
|
||||
|
||||
void CollectNonce(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
if (lprocess) { return; }
|
||||
ProcessStartInfo psi = new ProcessStartInfo("nfc-bin/collect.exe");
|
||||
ProcessStartInfo psi = new ProcessStartInfo(Resources.nfc_bin_collect_exe);
|
||||
psi.Arguments = (string)e.Argument;
|
||||
psi.CreateNoWindow = true;
|
||||
psi.UseShellExecute = false;
|
||||
@ -1428,7 +1429,7 @@ namespace MifareOneTool
|
||||
lprocess = true;
|
||||
BackgroundWorker b = (BackgroundWorker)sender;
|
||||
process = Process.Start(psi);
|
||||
b.ReportProgress(0, "开始执行HardNested收集数据……"); running = true;
|
||||
b.ReportProgress(0, Resources.开始执行HardNested收集数据); running = true;
|
||||
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
|
||||
//StreamReader stderr = process.StandardError;
|
||||
@ -1438,11 +1439,11 @@ namespace MifareOneTool
|
||||
lprocess = false; running = false;
|
||||
if (process.ExitCode == 0)
|
||||
{
|
||||
b.ReportProgress(102, "##运行完毕##");
|
||||
b.ReportProgress(102, Resources._运行完毕);
|
||||
}
|
||||
else
|
||||
{
|
||||
b.ReportProgress(100, "##运行出错##");
|
||||
b.ReportProgress(100, Resources._运行出错);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1505,7 +1506,7 @@ namespace MifareOneTool
|
||||
if (SetDeviceCombo.SelectedIndex >= 0)
|
||||
{
|
||||
writeConfig(SetDeviceCombo.SelectedItem.ToString());
|
||||
logAppend("已指定使用该NFC设备:" + SetDeviceCombo.SelectedItem.ToString());
|
||||
logAppend(Resources.已指定使用该NFC设备 + SetDeviceCombo.SelectedItem.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -157,16 +157,16 @@
|
||||
<value>Запишите CUID / FUID карту (может понадобиться файл ключа)</value>
|
||||
</data>
|
||||
<data name="buttonConClr.Text" xml:space="preserve">
|
||||
<value>Очистить терминал</value>
|
||||
<value>Очистить</value>
|
||||
</data>
|
||||
<data name="buttonConSave.Text" xml:space="preserve">
|
||||
<value>Сохранить журнал</value>
|
||||
<value>Сохранить</value>
|
||||
</data>
|
||||
<data name="buttonDictMfoc.Text" xml:space="preserve">
|
||||
<value>Тест словаря</value>
|
||||
</data>
|
||||
<data name="buttonDictMfoc.ToolTip" xml:space="preserve">
|
||||
<value>Импорт файлов словарей для взлома</value>
|
||||
<value>Импортируйте файл словаря для Nested crack.</value>
|
||||
</data>
|
||||
<data name="buttonDiffTool.Text" xml:space="preserve">
|
||||
<value>Сравнение дампов</value>
|
||||
@ -227,7 +227,8 @@
|
||||
<value>MFUK</value>
|
||||
</data>
|
||||
<data name="buttonMfcuk.ToolTip" xml:space="preserve">
|
||||
<value>Инструмент Darkside (не обязательно успешный)</value>
|
||||
<value>Инструмент Darkside (не обязательно успешный)
|
||||
</value>
|
||||
</data>
|
||||
<data name="buttonMFF08.Text" xml:space="preserve">
|
||||
<value>MFF08 CUID ремонт</value>
|
||||
@ -239,7 +240,7 @@
|
||||
<value>Отформатируйте нормальную карту M1 (необходимо загрузить файл ключа)</value>
|
||||
</data>
|
||||
<data name="buttonMfoc.Text" xml:space="preserve">
|
||||
<value>MFOC</value>
|
||||
<value>Чтение MFOC</value>
|
||||
</data>
|
||||
<data name="buttonMfoc.ToolTip" xml:space="preserve">
|
||||
<value>Взлом на полушифрованных картах.
|
||||
@ -258,7 +259,7 @@
|
||||
<value>Напишите нормальную карту M1 (возможно, потребуется загрузить файл ключа)</value>
|
||||
</data>
|
||||
<data name="buttonnKeysMfoc.Text" xml:space="preserve">
|
||||
<value>Ввод известного ключа</value>
|
||||
<value>Ввод ключа</value>
|
||||
</data>
|
||||
<data name="buttonnKeysMfoc.ToolTip" xml:space="preserve">
|
||||
<value>Введите известный ключ для взлома.</value>
|
||||
@ -307,16 +308,15 @@
|
||||
<value>CUID запись патча пустой карты</value>
|
||||
</data>
|
||||
<data name="checkBoxDefIsAdv.Text" xml:space="preserve">
|
||||
<value>Автоматический переход в
|
||||
расширенный режим работы</value>
|
||||
<value>Автоматический переход в расширенный режим работы</value>
|
||||
</data>
|
||||
<data name="checkBoxHardLowCost.Text" xml:space="preserve">
|
||||
<value>Однопоточные вычисления</value>
|
||||
<value>Однопоточные вычисления
|
||||
</value>
|
||||
</data>
|
||||
<data name="checkBoxMultiDev.Text" xml:space="preserve">
|
||||
<value>Режим нескольких устройств
|
||||
Multi-Open обнаружение будет отключено
|
||||
Пожалуйста, укажите ваше собственное устройство</value>
|
||||
<value>Режим нескольких устройств. Пожалуйста, укажите
|
||||
ваше собственное устройство</value>
|
||||
</data>
|
||||
<data name="checkBoxNewScan.Text" xml:space="preserve">
|
||||
<value>Уменьшить задержку оборудования</value>
|
||||
@ -328,7 +328,7 @@ Multi-Open обнаружение будет отключено
|
||||
<value>Управление устройством</value>
|
||||
</data>
|
||||
<data name="groupBox10.Text" xml:space="preserve">
|
||||
<value>Взлом</value>
|
||||
<value>Взломать</value>
|
||||
</data>
|
||||
<data name="groupBox12.Text" xml:space="preserve">
|
||||
<value>Настройки интерфейса</value>
|
||||
@ -340,16 +340,16 @@ Multi-Open обнаружение будет отключено
|
||||
<value>Настройки оптимизации</value>
|
||||
</data>
|
||||
<data name="groupBox2.Text" xml:space="preserve">
|
||||
<value>Обычные операции с картой</value>
|
||||
<value>Обычные операции</value>
|
||||
</data>
|
||||
<data name="groupBox3.Text" xml:space="preserve">
|
||||
<value>Терминал</value>
|
||||
</data>
|
||||
<data name="groupBox4.Text" xml:space="preserve">
|
||||
<value>Дополнительные инструменты</value>
|
||||
<value>Дополнительно</value>
|
||||
</data>
|
||||
<data name="groupBox5.Text" xml:space="preserve">
|
||||
<value>2. Прочитать карту</value>
|
||||
<value>2. Прочитать оригинальную карту</value>
|
||||
</data>
|
||||
<data name="groupBox6.Text" xml:space="preserve">
|
||||
<value>Операция с картой</value>
|
||||
@ -371,7 +371,8 @@ Multi-Open обнаружение будет отключено
|
||||
<value>Размер текста терминала</value>
|
||||
</data>
|
||||
<data name="label11.Text" xml:space="preserve">
|
||||
<value>Укажите устройство</value>
|
||||
<value>Укажите устройство
|
||||
</value>
|
||||
</data>
|
||||
<data name="label5.Text" xml:space="preserve">
|
||||
<value>1. Начните здесь
|
||||
@ -381,10 +382,10 @@ Multi-Open обнаружение будет отключено
|
||||
|
||||
|
||||
|
||||
Этот инструмент поддерживает только SAK = 08/18/28
|
||||
Копия карты. SAK28 не имеет одного ключа для расшифровки.
|
||||
Чтобы скопировать карты S70, пожалуйста, в продвинутом мире
|
||||
Снимите флажок «Защита от записи данных» на поверхности.
|
||||
本工具仅支持SAK=08/18/28的
|
||||
卡片复制。SAK28无一键解密。
|
||||
若要复制S70卡片,请在高级界
|
||||
面上取消勾选“数据写入保护”。
|
||||
</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
@ -392,10 +393,11 @@ Multi-Open обнаружение будет отключено
|
||||
</data>
|
||||
<data name="label7.Text" xml:space="preserve">
|
||||
<value>Пожалуйста,
|
||||
вставьте оигинальную карту</value>
|
||||
вставьте карту</value>
|
||||
</data>
|
||||
<data name="label8.Text" xml:space="preserve">
|
||||
<value>Пожалуйста, вставьте
|
||||
<value>Пожалуйста,
|
||||
вставьте
|
||||
новую карту</value>
|
||||
</data>
|
||||
<data name="label9.Text" xml:space="preserve">
|
||||
@ -408,7 +410,10 @@ Multi-Open обнаружение будет отключено
|
||||
<value>Для первого запуска нажмите «Определить устройство», чтобы ускорить последующие запуски.</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>Рекомендуется нажать «Определить», чтобы ускорить последующую операцию.</value>
|
||||
<value>Привет!
|
||||
|
||||
Рекомендуется нажать «Определить», чтобы ускорить последующую операцию.
|
||||
</value>
|
||||
</data>
|
||||
<data name="statusLabel.Text" xml:space="preserve">
|
||||
<value>Готов</value>
|
||||
@ -423,10 +428,10 @@ Multi-Open обнаружение будет отключено
|
||||
<value>Настройки программы</value>
|
||||
</data>
|
||||
<data name="toolStripCheckUpdate.Text" xml:space="preserve">
|
||||
<value>Проверьте наличие обновлений</value>
|
||||
<value>Проверка обновлений</value>
|
||||
</data>
|
||||
<data name="toolStripCheckUpdate.ToolTipText" xml:space="preserve">
|
||||
<value>Проверьте наличие обновлений</value>
|
||||
<value>Проверка обновлений</value>
|
||||
</data>
|
||||
<data name="groupBox1.ToolTip" xml:space="preserve">
|
||||
<value />
|
||||
|
||||
@ -117,6 +117,342 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="buttoEScanCard.Text" xml:space="preserve">
|
||||
<value>扫描卡片</value>
|
||||
</data>
|
||||
<data name="button4.Text" xml:space="preserve">
|
||||
<value>锁UFUID卡</value>
|
||||
</data>
|
||||
<data name="buttonBmfRead.Text" xml:space="preserve">
|
||||
<value>UID读</value>
|
||||
</data>
|
||||
<data name="buttonBmfRead.ToolTip" xml:space="preserve">
|
||||
<value>读取UID卡片。</value>
|
||||
</data>
|
||||
<data name="buttonBmfWrite.Text" xml:space="preserve">
|
||||
<value>UID写</value>
|
||||
</data>
|
||||
<data name="buttonBmfWrite.ToolTip" xml:space="preserve">
|
||||
<value>写入UID卡片。</value>
|
||||
</data>
|
||||
<data name="buttonCheckEncrypt.Text" xml:space="preserve">
|
||||
<value>检加密</value>
|
||||
</data>
|
||||
<data name="buttonCheckEncrypt.ToolTip" xml:space="preserve">
|
||||
<value>检测卡片加密情况。</value>
|
||||
</data>
|
||||
<data name="buttonCLI.Text" xml:space="preserve">
|
||||
<value>手动CLI</value>
|
||||
</data>
|
||||
<data name="buttonCLI.ToolTip" xml:space="preserve">
|
||||
<value>打开NFC命令行以进行高级操作。</value>
|
||||
</data>
|
||||
<data name="buttonCLIColor.Text" xml:space="preserve">
|
||||
<value>#M1T#</value>
|
||||
</data>
|
||||
<data name="buttonCmfWrite.Text" xml:space="preserve">
|
||||
<value>CUID写</value>
|
||||
</data>
|
||||
<data name="buttonCmfWrite.ToolTip" xml:space="preserve">
|
||||
<value>写入CUID/FUID卡片(可能需要密钥文件)</value>
|
||||
</data>
|
||||
<data name="buttonConClr.Text" xml:space="preserve">
|
||||
<value>清终端</value>
|
||||
</data>
|
||||
<data name="buttonConSave.Text" xml:space="preserve">
|
||||
<value>存日志</value>
|
||||
</data>
|
||||
<data name="buttonDictMfoc.Text" xml:space="preserve">
|
||||
<value>字典测试</value>
|
||||
</data>
|
||||
<data name="buttonDictMfoc.ToolTip" xml:space="preserve">
|
||||
<value>导入字典文件进行Nested破解。</value>
|
||||
</data>
|
||||
<data name="buttonDiffTool.Text" xml:space="preserve">
|
||||
<value>差异比较</value>
|
||||
</data>
|
||||
<data name="buttonECheckEncrypt.Text" xml:space="preserve">
|
||||
<value>检测加密</value>
|
||||
</data>
|
||||
<data name="buttonECmfoc.Text" xml:space="preserve">
|
||||
<value>知一密破解</value>
|
||||
</data>
|
||||
<data name="buttonECuidWrite.Text" xml:space="preserve">
|
||||
<value>写C/FUID卡</value>
|
||||
</data>
|
||||
<data name="buttonEMfoc.Text" xml:space="preserve">
|
||||
<value>一键解原卡</value>
|
||||
</data>
|
||||
<data name="buttonEMfRead.Text" xml:space="preserve">
|
||||
<value>已知密钥读</value>
|
||||
</data>
|
||||
<data name="buttonEMfWrite.Text" xml:space="preserve">
|
||||
<value>写入普通卡</value>
|
||||
</data>
|
||||
<data name="buttonEReadUID.Text" xml:space="preserve">
|
||||
<value>从UID卡读回</value>
|
||||
</data>
|
||||
<data name="buttonEscan.Text" xml:space="preserve">
|
||||
<value>检测连接</value>
|
||||
</data>
|
||||
<data name="buttonESelectKey.Text" xml:space="preserve">
|
||||
<value>加载密钥…</value>
|
||||
</data>
|
||||
<data name="buttonEStop.Text" xml:space="preserve">
|
||||
<value>停止</value>
|
||||
</data>
|
||||
<data name="buttonEUIDWrite.Text" xml:space="preserve">
|
||||
<value>写(UF)UID卡</value>
|
||||
</data>
|
||||
<data name="buttonHardNested.Text" xml:space="preserve">
|
||||
<value>HardNested</value>
|
||||
</data>
|
||||
<data name="buttonHexTool.Text" xml:space="preserve">
|
||||
<value>Hex编辑器</value>
|
||||
</data>
|
||||
<data name="buttonKill.Text" xml:space="preserve">
|
||||
<value>停运行</value>
|
||||
</data>
|
||||
<data name="buttonListDev.Text" xml:space="preserve">
|
||||
<value>检测设备</value>
|
||||
</data>
|
||||
<data name="buttonListDev.ToolTip" xml:space="preserve">
|
||||
<value>扫描已连接的NFC设备
|
||||
(目前支持PN532、ACR122U)</value>
|
||||
</data>
|
||||
<data name="buttonLockUfuid.Text" xml:space="preserve">
|
||||
<value>锁Ufuid</value>
|
||||
</data>
|
||||
<data name="buttonLockUfuid.ToolTip" xml:space="preserve">
|
||||
<value>锁死UFUID卡片0块数据(测试中)</value>
|
||||
</data>
|
||||
<data name="buttonMfcuk.Text" xml:space="preserve">
|
||||
<value>全加密爆破</value>
|
||||
</data>
|
||||
<data name="buttonMfcuk.ToolTip" xml:space="preserve">
|
||||
<value>对卡片执行Darkside工具(不一定成功)</value>
|
||||
</data>
|
||||
<data name="buttonMFF08.Text" xml:space="preserve">
|
||||
<value>MFF08 CUID修复</value>
|
||||
</data>
|
||||
<data name="buttonMfFormat.Text" xml:space="preserve">
|
||||
<value>清M1</value>
|
||||
</data>
|
||||
<data name="buttonMfFormat.ToolTip" xml:space="preserve">
|
||||
<value>格式化普通M1卡(必须加载密钥文件)</value>
|
||||
</data>
|
||||
<data name="buttonMfoc.Text" xml:space="preserve">
|
||||
<value>MFOC读</value>
|
||||
</data>
|
||||
<data name="buttonMfoc.ToolTip" xml:space="preserve">
|
||||
<value>对半加密卡片进行Nested破解。
|
||||
按住Ctrl点击该按钮可添加已知密钥。</value>
|
||||
</data>
|
||||
<data name="buttonMfRead.Text" xml:space="preserve">
|
||||
<value>读M1</value>
|
||||
</data>
|
||||
<data name="buttonMfRead.ToolTip" xml:space="preserve">
|
||||
<value>读取普通M1卡片(可能需要加载密钥文件)</value>
|
||||
</data>
|
||||
<data name="buttonMfWrite.Text" xml:space="preserve">
|
||||
<value>写M1</value>
|
||||
</data>
|
||||
<data name="buttonMfWrite.ToolTip" xml:space="preserve">
|
||||
<value>写入普通M1卡(可能需要加载密钥文件)</value>
|
||||
</data>
|
||||
<data name="buttonnKeysMfoc.Text" xml:space="preserve">
|
||||
<value>知n密</value>
|
||||
</data>
|
||||
<data name="buttonnKeysMfoc.ToolTip" xml:space="preserve">
|
||||
<value>输入已知密钥进行Nested破解。</value>
|
||||
</data>
|
||||
<data name="buttonScanCard.Text" xml:space="preserve">
|
||||
<value>手动扫描</value>
|
||||
</data>
|
||||
<data name="buttonScanCard.ToolTip" xml:space="preserve">
|
||||
<value>扫描有效卡片。</value>
|
||||
</data>
|
||||
<data name="buttonSelectKey.Text" xml:space="preserve">
|
||||
<value>选择key.mfd</value>
|
||||
</data>
|
||||
<data name="buttonSelectKey.ToolTip" xml:space="preserve">
|
||||
<value>加载含有正确读写卡密钥及正确控制位的MFD文件。</value>
|
||||
</data>
|
||||
<data name="buttonUidFormat.Text" xml:space="preserve">
|
||||
<value>UID全格</value>
|
||||
</data>
|
||||
<data name="buttonUidFormat.ToolTip" xml:space="preserve">
|
||||
<value>将全卡清空并重新初始化。
|
||||
可用于ACbit损坏/KEY全部被改等情况的急救。</value>
|
||||
</data>
|
||||
<data name="buttonUidReset.Text" xml:space="preserve">
|
||||
<value>UID重置</value>
|
||||
</data>
|
||||
<data name="buttonUidReset.ToolTip" xml:space="preserve">
|
||||
<value>重置UID卡片0块,UID随机,厂商号为复旦。</value>
|
||||
</data>
|
||||
<data name="buttonUidWrite.Text" xml:space="preserve">
|
||||
<value>UID写号</value>
|
||||
</data>
|
||||
<data name="buttonUidWrite.ToolTip" xml:space="preserve">
|
||||
<value>向UID卡片写入置顶卡号,厂商设置为复旦。</value>
|
||||
</data>
|
||||
<data name="checkBoxAutoABN.Text" xml:space="preserve">
|
||||
<value>自动判断Key(beta)</value>
|
||||
</data>
|
||||
<data name="checkBoxAutoLoadKey.Text" xml:space="preserve">
|
||||
<value>自动加载uid.Key文件</value>
|
||||
</data>
|
||||
<data name="checkBoxAutoSave.Text" xml:space="preserve">
|
||||
<value>自动以UID名保存文件</value>
|
||||
</data>
|
||||
<data name="checkBoxCuidKeyOver.Text" xml:space="preserve">
|
||||
<value>CUID写空卡补丁</value>
|
||||
</data>
|
||||
<data name="checkBoxDefIsAdv.Text" xml:space="preserve">
|
||||
<value>自动转到高级操作模式</value>
|
||||
</data>
|
||||
<data name="checkBoxHardLowCost.Text" xml:space="preserve">
|
||||
<value>单线程计算</value>
|
||||
</data>
|
||||
<data name="checkBoxMultiDev.Text" xml:space="preserve">
|
||||
<value>多实例运行模式
|
||||
会禁用多开检测
|
||||
请自行指定设备</value>
|
||||
</data>
|
||||
<data name="checkBoxNewScan.Text" xml:space="preserve">
|
||||
<value>减少找设备延迟</value>
|
||||
</data>
|
||||
<data name="checkBoxWriteProtect.Text" xml:space="preserve">
|
||||
<value>数据写入保护(建议)</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>MifareOne Tool</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>设备控制</value>
|
||||
</data>
|
||||
<data name="groupBox10.Text" xml:space="preserve">
|
||||
<value>破解工具</value>
|
||||
</data>
|
||||
<data name="groupBox11.Text" xml:space="preserve">
|
||||
<value>HardNested</value>
|
||||
</data>
|
||||
<data name="groupBox12.Text" xml:space="preserve">
|
||||
<value>界面设置</value>
|
||||
</data>
|
||||
<data name="groupBox13.Text" xml:space="preserve">
|
||||
<value>偏好设置</value>
|
||||
</data>
|
||||
<data name="groupBox14.Text" xml:space="preserve">
|
||||
<value>优化设置</value>
|
||||
</data>
|
||||
<data name="groupBox2.Text" xml:space="preserve">
|
||||
<value>普通卡操作</value>
|
||||
</data>
|
||||
<data name="groupBox3.Text" xml:space="preserve">
|
||||
<value>运行/终端</value>
|
||||
</data>
|
||||
<data name="groupBox4.Text" xml:space="preserve">
|
||||
<value>集成辅助工具</value>
|
||||
</data>
|
||||
<data name="groupBox5.Text" xml:space="preserve">
|
||||
<value>[2]读取原卡</value>
|
||||
</data>
|
||||
<data name="groupBox6.Text" xml:space="preserve">
|
||||
<value>卡操作相关</value>
|
||||
</data>
|
||||
<data name="groupBox7.Text" xml:space="preserve">
|
||||
<value>[3]写入新卡</value>
|
||||
</data>
|
||||
<data name="groupBox8.Text" xml:space="preserve">
|
||||
<value>UID/UFUID卡操作</value>
|
||||
</data>
|
||||
<data name="groupBox9.Text" xml:space="preserve">
|
||||
<value>C/FUID卡操作</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>该卡种读取
|
||||
同普通卡</value>
|
||||
</data>
|
||||
<data name="label10.Text" xml:space="preserve">
|
||||
<value>终端文字大小</value>
|
||||
</data>
|
||||
<data name="label11.Text" xml:space="preserve">
|
||||
<value>指定设备</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>>></value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>>>></value>
|
||||
</data>
|
||||
<data name="label4.Text" xml:space="preserve">
|
||||
<value>>>>>></value>
|
||||
</data>
|
||||
<data name="label5.Text" xml:space="preserve">
|
||||
<value>从这里开始
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
本工具仅支持SAK=08/18/28的
|
||||
卡片复制。SAK28无一键解密。
|
||||
若要复制S70卡片,请在高级界
|
||||
面上取消勾选“数据写入保护”。
|
||||
</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>>>> 尝试一下是否成功</value>
|
||||
</data>
|
||||
<data name="label7.Text" xml:space="preserve">
|
||||
<value>请放
|
||||
原卡</value>
|
||||
</data>
|
||||
<data name="label8.Text" xml:space="preserve">
|
||||
<value>请放
|
||||
新卡</value>
|
||||
</data>
|
||||
<data name="label9.Text" xml:space="preserve">
|
||||
<value>终端文字颜色</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[0]" xml:space="preserve">
|
||||
<value>Hello,cardman!</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[1]" xml:space="preserve">
|
||||
<value>首次运行建议点击"检测设备"以加快后续运行速度</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>Hello,cardman!
|
||||
首次运行建议点击"检测设备"以加快后续运行速度
|
||||
</value>
|
||||
<comment>Previous text: Hello,cardman!
|
||||
首次运行建议点击"检测设备"以加快后续运行速度
|
||||
</comment>
|
||||
</data>
|
||||
<data name="statusLabel.Text" xml:space="preserve">
|
||||
<value>就绪</value>
|
||||
</data>
|
||||
<data name="statusStrip1.Text" xml:space="preserve">
|
||||
<value>statusStrip1</value>
|
||||
</data>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value>高级操作模式</value>
|
||||
</data>
|
||||
<data name="tabPage2.Text" xml:space="preserve">
|
||||
<value>复制卡模式</value>
|
||||
</data>
|
||||
<data name="tabPage3.Text" xml:space="preserve">
|
||||
<value>软件设置</value>
|
||||
</data>
|
||||
<data name="toolStripCheckUpdate.Text" xml:space="preserve">
|
||||
<value>检查更新</value>
|
||||
</data>
|
||||
<data name="toolStripCheckUpdate.ToolTipText" xml:space="preserve">
|
||||
<value>检查更新</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripCheckUpdate.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
|
||||
44
MifareOneTool/FormDiff.Designer.cs
generated
44
MifareOneTool/FormDiff.Designer.cs
generated
@ -33,15 +33,22 @@
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.flowLayoutPanel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
this.richTextBox1.BackColor = System.Drawing.Color.Black;
|
||||
this.richTextBox1.ForeColor = System.Drawing.Color.Orange;
|
||||
resources.ApplyResources(this.richTextBox1, "richTextBox1");
|
||||
this.richTextBox1.ForeColor = System.Drawing.Color.Orange;
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.ReadOnly = true;
|
||||
this.richTextBox1.TextChanged += new System.EventHandler(this.RichTextBox1_TextChanged);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
@ -64,20 +71,44 @@
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
|
||||
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button3, 1, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
|
||||
this.flowLayoutPanel1.Controls.Add(this.button1);
|
||||
this.flowLayoutPanel1.Controls.Add(this.button2);
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
//
|
||||
// flowLayoutPanel2
|
||||
//
|
||||
resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2");
|
||||
this.flowLayoutPanel2.Controls.Add(this.tableLayoutPanel1);
|
||||
this.flowLayoutPanel2.Controls.Add(this.richTextBox1);
|
||||
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
|
||||
//
|
||||
// FormDiff
|
||||
//
|
||||
this.AcceptButton = this.button3;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.richTextBox1);
|
||||
this.Controls.Add(this.flowLayoutPanel2);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "FormDiff";
|
||||
this.Load += new System.EventHandler(this.FormDiff_Load);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.flowLayoutPanel1.ResumeLayout(false);
|
||||
this.flowLayoutPanel2.ResumeLayout(false);
|
||||
this.flowLayoutPanel2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
@ -87,5 +118,8 @@
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@ -26,8 +27,8 @@ namespace MifareOneTool
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd;*.dump";
|
||||
ofd.Title = "请选择需要打开的MFD文件(比较A)";
|
||||
ofd.Filter = Resources.MFD文件_mfd_dump;
|
||||
ofd.Title = Resources.请选择需要打开的MFD文件_比较A;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -45,7 +46,7 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ioe.Message, Resources.打开出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
sa = new S50();
|
||||
return;
|
||||
}
|
||||
@ -64,8 +65,8 @@ namespace MifareOneTool
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd;*.dump";
|
||||
ofd.Title = "请选择需要打开的MFD文件(比较B)";
|
||||
ofd.Filter = Resources.MFD文件_mfd_dump;
|
||||
ofd.Title = Resources.请选择需要打开的MFD文件_比较B;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -83,7 +84,7 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ioe.Message, Resources.打开出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
sb = new S50();
|
||||
return;
|
||||
}
|
||||
@ -98,7 +99,7 @@ namespace MifareOneTool
|
||||
}
|
||||
else
|
||||
{
|
||||
logAppend("AB文件中一个或两个无效。");
|
||||
logAppend(Resources.AB文件中一个或两个无效);
|
||||
}
|
||||
}
|
||||
private string Compare()
|
||||
@ -108,7 +109,7 @@ namespace MifareOneTool
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
stb.AppendLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
||||
stb.AppendLine("扇区 " + i.ToString());
|
||||
stb.AppendLine(Resources.扇区0 + i.ToString());
|
||||
for (int a = 0; a < 4; a++)
|
||||
{
|
||||
string res = "";
|
||||
@ -133,7 +134,12 @@ namespace MifareOneTool
|
||||
}
|
||||
|
||||
}
|
||||
return "共找到 " + diffCount.ToString() + " 个块不同\n" + stb.ToString();
|
||||
return Resources.共找到 + diffCount.ToString() + Resources._个块不同 + stb.ToString();
|
||||
}
|
||||
|
||||
private void RichTextBox1_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,29 +117,26 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="button1.Text" xml:space="preserve">
|
||||
<value>A</value>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="richTextBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="button2.Text" xml:space="preserve">
|
||||
<value>B</value>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="richTextBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>2, 69</value>
|
||||
</data>
|
||||
<data name="button3.Text" xml:space="preserve">
|
||||
<value>比较</value>
|
||||
<data name="richTextBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>2, 3, 2, 3</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>DiffTool</value>
|
||||
<data name="richTextBox1.ScrollBars" type="System.Windows.Forms.RichTextBoxScrollBars, System.Windows.Forms">
|
||||
<value>ForcedVertical</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[0]" xml:space="preserve">
|
||||
<value>欢迎使用M1T内置的差异工具!</value>
|
||||
<data name="richTextBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>348, 221</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[1]" xml:space="preserve">
|
||||
<value>说明:</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[2]" xml:space="preserve">
|
||||
<value>点击上方的AB两个按键分别选择MFD文件。</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[3]" xml:space="preserve">
|
||||
<value>然后点击“比较”即可看到结果。</value>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="richTextBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>欢迎使用M1T内置的差异工具!
|
||||
@ -148,27 +145,6 @@
|
||||
然后点击“比较”即可看到结果。
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="richTextBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>14, 99</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="richTextBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 4, 3, 4</value>
|
||||
</data>
|
||||
<data name="richTextBox1.ScrollBars" type="System.Windows.Forms.RichTextBoxScrollBars, System.Windows.Forms">
|
||||
<value>ForcedVertical</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>527, 631</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="richTextBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>richTextBox1.Name" xml:space="preserve">
|
||||
<value>richTextBox1</value>
|
||||
</data>
|
||||
@ -176,23 +152,26 @@
|
||||
<value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>richTextBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>flowLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>richTextBox1.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>14, 16</value>
|
||||
<value>2, 3</value>
|
||||
</data>
|
||||
<data name="button1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 4, 3, 4</value>
|
||||
<value>2, 3, 2, 3</value>
|
||||
</data>
|
||||
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>436, 33</value>
|
||||
<value>291, 21</value>
|
||||
</data>
|
||||
<data name="button1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="button1.Text" xml:space="preserve">
|
||||
<value>A</value>
|
||||
</data>
|
||||
<data name="button1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleLeft</value>
|
||||
</data>
|
||||
@ -203,23 +182,26 @@
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>button1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>button1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>14, 57</value>
|
||||
<value>2, 30</value>
|
||||
</data>
|
||||
<data name="button2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 4, 3, 4</value>
|
||||
<value>2, 3, 2, 3</value>
|
||||
</data>
|
||||
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>436, 33</value>
|
||||
<value>291, 21</value>
|
||||
</data>
|
||||
<data name="button2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="button2.Text" xml:space="preserve">
|
||||
<value>B</value>
|
||||
</data>
|
||||
<data name="button2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleLeft</value>
|
||||
</data>
|
||||
@ -230,23 +212,35 @@
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>button2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>button2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="button3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="button3.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="button3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="button3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>457, 16</value>
|
||||
<value>303, 3</value>
|
||||
</data>
|
||||
<data name="button3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 4, 3, 4</value>
|
||||
<value>2, 3, 2, 3</value>
|
||||
</data>
|
||||
<data name="button3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>84, 75</value>
|
||||
<value>41, 54</value>
|
||||
</data>
|
||||
<data name="button3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="button3.Text" xml:space="preserve">
|
||||
<value>比较</value>
|
||||
</data>
|
||||
<data name=">>button3.Name" xml:space="preserve">
|
||||
<value>button3</value>
|
||||
</data>
|
||||
@ -254,19 +248,136 @@
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>button3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>button3.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
|
||||
<value>TopDown</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>295, 54</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>346, 60</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
|
||||
<value>TopDown</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>370, 456</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.Name" xml:space="preserve">
|
||||
<value>flowLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>9, 20</value>
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>555, 747</value>
|
||||
<value>370, 456</value>
|
||||
</data>
|
||||
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 4, 3, 4</value>
|
||||
<value>2, 3, 2, 3</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>DiffTool</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>FormDiff</value>
|
||||
|
||||
@ -118,13 +118,16 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="button1.Text" xml:space="preserve">
|
||||
<value />
|
||||
<value>A</value>
|
||||
</data>
|
||||
<data name="button2.Text" xml:space="preserve">
|
||||
<value>В</value>
|
||||
</data>
|
||||
<data name="button3.Text" xml:space="preserve">
|
||||
<value>сравнить</value>
|
||||
<value>Сравнить</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Сравнение дампов</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[0]" xml:space="preserve">
|
||||
<value>Добро пожаловать во встроенный инструмент различий M1T!</value>
|
||||
@ -139,10 +142,9 @@
|
||||
<value>Затем нажмите «Сравнить», чтобы увидеть результаты.</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>Добро пожаловать во встроенный инструмент различий M1T!
|
||||
<value>Добро пожаловать во встроенный инструмент сравнения дампов!
|
||||
Описание:
|
||||
Нажмите две кнопки AB выше, чтобы выбрать файл MFD.
|
||||
Затем нажмите «Сравнить», чтобы увидеть результаты.
|
||||
</value>
|
||||
1. Нажмите А или В, чтобы выбрать файл MFD.
|
||||
2. Нажмите «Сравнить», чтобы увидеть результаты.</value>
|
||||
</data>
|
||||
</root>
|
||||
114
MifareOneTool/FormHTool.Designer.cs
generated
114
MifareOneTool/FormHTool.Designer.cs
generated
@ -75,12 +75,24 @@
|
||||
this.labelCurSec = new System.Windows.Forms.Label();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.s50BindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.tableLayoutPanel2.SuspendLayout();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.flowLayoutPanel2.SuspendLayout();
|
||||
this.tableLayoutPanel3.SuspendLayout();
|
||||
this.flowLayoutPanel3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.s50BindingSource)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@ -249,27 +261,8 @@
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.buttonSaveSectorEdit);
|
||||
this.groupBox2.Controls.Add(this.comboBox4);
|
||||
this.groupBox2.Controls.Add(this.comboBox3);
|
||||
this.groupBox2.Controls.Add(this.comboBox2);
|
||||
this.groupBox2.Controls.Add(this.comboBox1);
|
||||
this.groupBox2.Controls.Add(this.label9);
|
||||
this.groupBox2.Controls.Add(this.label8);
|
||||
this.groupBox2.Controls.Add(this.label7);
|
||||
this.groupBox2.Controls.Add(this.label6);
|
||||
this.groupBox2.Controls.Add(this.label5);
|
||||
this.groupBox2.Controls.Add(this.keyBEdit);
|
||||
this.groupBox2.Controls.Add(this.keyAEdit);
|
||||
this.groupBox2.Controls.Add(this.block2Edit);
|
||||
this.groupBox2.Controls.Add(this.label4);
|
||||
this.groupBox2.Controls.Add(this.label3);
|
||||
this.groupBox2.Controls.Add(this.block1Edit);
|
||||
this.groupBox2.Controls.Add(this.label2);
|
||||
this.groupBox2.Controls.Add(this.block0Edit);
|
||||
this.groupBox2.Controls.Add(this.label1);
|
||||
this.groupBox2.Controls.Add(this.labelCurSec);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Controls.Add(this.tableLayoutPanel2);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
@ -432,8 +425,8 @@
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
this.groupBox3.Controls.Add(this.richTextBox1);
|
||||
resources.ApplyResources(this.groupBox3, "groupBox3");
|
||||
this.groupBox3.Controls.Add(this.richTextBox1);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.TabStop = false;
|
||||
//
|
||||
@ -445,6 +438,63 @@
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.ReadOnly = true;
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
|
||||
this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.groupBox3, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.groupBox2, 1, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
//
|
||||
// tableLayoutPanel2
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
|
||||
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel3, 0, 3);
|
||||
this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel1, 0, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel2, 0, 1);
|
||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
|
||||
this.flowLayoutPanel1.Controls.Add(this.labelCurSec);
|
||||
this.flowLayoutPanel1.Controls.Add(this.buttonSaveSectorEdit);
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
//
|
||||
// flowLayoutPanel2
|
||||
//
|
||||
resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2");
|
||||
this.flowLayoutPanel2.Controls.Add(this.label1);
|
||||
this.flowLayoutPanel2.Controls.Add(this.block0Edit);
|
||||
this.flowLayoutPanel2.Controls.Add(this.label2);
|
||||
this.flowLayoutPanel2.Controls.Add(this.block1Edit);
|
||||
this.flowLayoutPanel2.Controls.Add(this.label3);
|
||||
this.flowLayoutPanel2.Controls.Add(this.block2Edit);
|
||||
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
|
||||
//
|
||||
// tableLayoutPanel3
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
|
||||
this.tableLayoutPanel3.Controls.Add(this.label4, 0, 0);
|
||||
this.tableLayoutPanel3.Controls.Add(this.keyAEdit, 0, 1);
|
||||
this.tableLayoutPanel3.Controls.Add(this.label5, 1, 0);
|
||||
this.tableLayoutPanel3.Controls.Add(this.keyBEdit, 1, 1);
|
||||
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
|
||||
//
|
||||
// flowLayoutPanel3
|
||||
//
|
||||
resources.ApplyResources(this.flowLayoutPanel3, "flowLayoutPanel3");
|
||||
this.flowLayoutPanel3.Controls.Add(this.label6);
|
||||
this.flowLayoutPanel3.Controls.Add(this.comboBox1);
|
||||
this.flowLayoutPanel3.Controls.Add(this.label7);
|
||||
this.flowLayoutPanel3.Controls.Add(this.comboBox2);
|
||||
this.flowLayoutPanel3.Controls.Add(this.label8);
|
||||
this.flowLayoutPanel3.Controls.Add(this.comboBox3);
|
||||
this.flowLayoutPanel3.Controls.Add(this.label9);
|
||||
this.flowLayoutPanel3.Controls.Add(this.comboBox4);
|
||||
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
|
||||
//
|
||||
// s50BindingSource
|
||||
//
|
||||
this.s50BindingSource.DataSource = typeof(MifareOneTool.S50);
|
||||
@ -454,9 +504,7 @@
|
||||
this.AcceptButton = this.buttonSaveSectorEdit;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.groupBox3);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
@ -470,6 +518,18 @@
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.tableLayoutPanel2.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.PerformLayout();
|
||||
this.flowLayoutPanel1.ResumeLayout(false);
|
||||
this.flowLayoutPanel1.PerformLayout();
|
||||
this.flowLayoutPanel2.ResumeLayout(false);
|
||||
this.flowLayoutPanel2.PerformLayout();
|
||||
this.tableLayoutPanel3.ResumeLayout(false);
|
||||
this.tableLayoutPanel3.PerformLayout();
|
||||
this.flowLayoutPanel3.ResumeLayout(false);
|
||||
this.flowLayoutPanel3.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.s50BindingSource)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
@ -524,5 +584,11 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem 导入MCT格式ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripMenuItem 列出全卡密钥ToolStripMenuItem;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@ -30,7 +31,7 @@ namespace MifareOneTool
|
||||
{
|
||||
int sectorIndex = dataGridView1.SelectedRows[0].Index;
|
||||
reloadEdit(sectorIndex);
|
||||
logAppend("显示扇区" + sectorIndex.ToString());
|
||||
logAppend(Resources.显示扇区 + sectorIndex.ToString());
|
||||
}
|
||||
}
|
||||
private void logAppend(string msg)
|
||||
@ -52,10 +53,10 @@ namespace MifareOneTool
|
||||
this.block2Edit.Text = "";
|
||||
this.block1Edit.Text = "";
|
||||
this.block0Edit.Text = "";
|
||||
this.labelCurSec.Text = "当前选定扇区:??";
|
||||
this.labelCurSec.Text = Resources.当前选定扇区;
|
||||
return;
|
||||
}
|
||||
labelCurSec.Text = "当前选定扇区:" + sectorIndex.ToString();
|
||||
labelCurSec.Text = Resources.当前选定扇区0 + sectorIndex.ToString();
|
||||
block0Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[0]);
|
||||
block1Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[1]);
|
||||
block2Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[2]);
|
||||
@ -76,7 +77,7 @@ namespace MifareOneTool
|
||||
^ currentS50.Sectors[sectorIndex].Block[0][2]
|
||||
^ currentS50.Sectors[sectorIndex].Block[0][3]);
|
||||
block0Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[0]);
|
||||
msg += "该扇区UID校验值错误,已经自动为您更正。\n";
|
||||
msg += Resources.该扇区UID校验值错误_已经自动为您更正;
|
||||
}
|
||||
if ((res & 0x02) == 0x02)
|
||||
{
|
||||
@ -84,7 +85,7 @@ namespace MifareOneTool
|
||||
comboBox2.SelectedIndex = 0;
|
||||
comboBox3.SelectedIndex = 0;
|
||||
comboBox4.SelectedIndex = 1;
|
||||
msg += "该扇区访问控制位无效,写入将会损坏卡片,已重新设置。\n";
|
||||
msg += Resources.该扇区访问控制位无效_写入将会损坏卡片_已重新设置;
|
||||
}
|
||||
if ((res & 0x04) == 0x04)
|
||||
{
|
||||
@ -92,7 +93,7 @@ namespace MifareOneTool
|
||||
comboBox2.SelectedIndex = 0;
|
||||
comboBox3.SelectedIndex = 0;
|
||||
comboBox4.SelectedIndex = 1;
|
||||
msg += "该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。\n";
|
||||
msg += Resources.该扇区访问控制位损坏_写入将会损坏卡片_已重新设置;
|
||||
}
|
||||
if (res != 0x00) { MessageBox.Show(msg.Trim()); }
|
||||
|
||||
@ -104,8 +105,8 @@ namespace MifareOneTool
|
||||
reloadEdit(-1);
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd;*.dump";
|
||||
ofd.Title = "请选择需要打开的MFD文件";
|
||||
ofd.Filter = Resources.MFD文件_mfd_dump;
|
||||
ofd.Title = Resources.请选择需要打开的MFD文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -122,12 +123,12 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ioe.Message, Resources.打开出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
this.currentS50 = new S50();
|
||||
return;
|
||||
}
|
||||
reloadList();
|
||||
logAppend("打开了" + ofd.FileName);
|
||||
logAppend(Resources.打开了 + ofd.FileName);
|
||||
}
|
||||
|
||||
private void reloadList()
|
||||
@ -154,9 +155,9 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "写入出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ex.Message, Resources.写入出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
logAppend("已保存到" + currentFilename + "。");
|
||||
logAppend(Resources.已保存到 + currentFilename + Resources.res);
|
||||
}
|
||||
|
||||
private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@ -165,9 +166,9 @@ namespace MifareOneTool
|
||||
SaveFileDialog ofd = new SaveFileDialog();
|
||||
ofd.AddExtension = true;
|
||||
ofd.DefaultExt = ".mfd";
|
||||
ofd.Title = "请选择MFD文件保存位置及文件名";
|
||||
ofd.Title = Resources.请选择MFD文件保存位置及文件名;
|
||||
ofd.OverwritePrompt = true;
|
||||
ofd.Filter = "MFD文件|*.mfd|DUMP文件|*.dump";
|
||||
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
filename = ofd.FileName;
|
||||
@ -182,9 +183,9 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "写入出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ex.Message, Resources.写入出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
logAppend("已保存到" + filename + "。");
|
||||
logAppend(Resources.已保存到 + filename + "。");
|
||||
}
|
||||
|
||||
private void block0Edit_Validating(object sender, CancelEventArgs e)
|
||||
@ -232,7 +233,7 @@ namespace MifareOneTool
|
||||
|| keyAEdit.BackColor != Color.Aquamarine
|
||||
|| keyBEdit.BackColor != Color.Aquamarine)
|
||||
{
|
||||
MessageBox.Show("当前扇区数据仍有错误,不能执行修改。");
|
||||
MessageBox.Show(Resources.当前扇区数据仍有错误_不能执行修改);
|
||||
return;
|
||||
}
|
||||
currentS50.Sectors[currentSector].Block[0] = Utils.Hex2Block(block0Edit.Text.Trim(),16);
|
||||
@ -257,14 +258,14 @@ namespace MifareOneTool
|
||||
{
|
||||
dataGridView1.Rows[i].Cells[0].Value = currentS50.Sectors[i].Info(i);
|
||||
}
|
||||
logAppend("已更新扇区" + currentSector.ToString());
|
||||
logAppend(Resources.已更新扇区 + currentSector.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox1_Validating(object sender, CancelEventArgs e)
|
||||
{
|
||||
ComboBox tb = ((ComboBox)sender);
|
||||
if (tb.SelectedIndex < 0 || tb.Text == "##文件中的值错误##")
|
||||
if (tb.SelectedIndex < 0 || tb.Text == Resources._文件中的值错误)
|
||||
{
|
||||
tb.BackColor = Color.Tomato;
|
||||
//e.Cancel = true;
|
||||
@ -280,29 +281,29 @@ namespace MifareOneTool
|
||||
int[] res = currentS50.Verify();
|
||||
if (res[16] == 0)
|
||||
{
|
||||
MessageBox.Show("该文件一切正常。");
|
||||
MessageBox.Show(Resources.该文件一切正常);
|
||||
}
|
||||
else
|
||||
{
|
||||
string msg = "该文件存在以下错误:\n";
|
||||
string msg = Resources.该文件存在以下错误;
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
msg += "扇区" + i.ToString() + ":\n";
|
||||
msg += Resources.扇区 + i.ToString() + ":\n";
|
||||
if ((res[i] & 0x01) == 0x01)
|
||||
{
|
||||
msg += "该扇区UID校验值错误,请点击打开扇区0来自动更正。\n";
|
||||
msg += Resources.该扇区UID校验值错误_请点击打开扇区0来自动更正;
|
||||
}
|
||||
if ((res[i] & 0x02) == 0x02)
|
||||
{
|
||||
msg += "该扇区访问控制位无效,写入将会损坏卡片,请重新设置。\n";
|
||||
msg += Resources.该扇区访问控制位无效_写入将会损坏卡片_请重新设置;
|
||||
}
|
||||
if ((res[i] & 0x04) == 0x04)
|
||||
{
|
||||
msg += "该扇区访问控制位损坏,写入将会损坏卡片,请重新设置。\n";
|
||||
msg += Resources.该扇区访问控制位损坏_写入将会损坏卡片_请重新设置;
|
||||
}
|
||||
if (res[i] == 0)
|
||||
{
|
||||
msg += "该扇区一切正常。\n";
|
||||
msg += Resources.该扇区一切正常;
|
||||
}
|
||||
}
|
||||
richTextBox1.Clear();
|
||||
@ -316,11 +317,11 @@ namespace MifareOneTool
|
||||
byte[] buid = new byte[4];
|
||||
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
|
||||
rng.GetNonZeroBytes(buid);
|
||||
string uid = Interaction.InputBox("请输入需要更改的UID卡号,共8位十六进制数,如E44A3BF1。", "请输入UID号", Form1.hex(buid), -1, -1).Trim();
|
||||
string uid = Interaction.InputBox(Resources.请输入需要更改的UID卡号_共8位十六进制数_如E44A3B, Resources.请输入UID号, Form1.hex(buid), -1, -1).Trim();
|
||||
string pat = "[0-9A-Fa-f]{8}";
|
||||
if (!Regex.IsMatch(uid, pat))
|
||||
{
|
||||
MessageBox.Show("输入的UID号不合法", "InputError", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(Resources.输入的UID号不合法, Resources.InputError, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
buid = Utils.Hex2Block(uid, 4);
|
||||
@ -330,7 +331,7 @@ namespace MifareOneTool
|
||||
currentS50.Sectors[0].Block[0][2] = buid[2];
|
||||
currentS50.Sectors[0].Block[0][3] = buid[3];
|
||||
currentS50.Sectors[0].Block[0][4] = bcc;
|
||||
logAppend("UID已改为" + Form1.hex(buid) + ",计算得到BCC=" + Form1.hex(new byte[]{bcc}));
|
||||
logAppend(Resources.UID已改为 + Form1.hex(buid) + Resources._计算得到BCC + Form1.hex(new byte[]{bcc}));
|
||||
reloadEdit(0);
|
||||
}
|
||||
|
||||
@ -339,7 +340,7 @@ namespace MifareOneTool
|
||||
reloadEdit(-1);
|
||||
this.currentS50 = new S50();
|
||||
reloadList();
|
||||
logAppend("已重置并新建卡。");
|
||||
logAppend(Resources.已重置并新建卡);
|
||||
}
|
||||
|
||||
private void 检查并纠正全卡ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@ -348,14 +349,14 @@ namespace MifareOneTool
|
||||
int[] res = currentS50.Verify();
|
||||
if (res[16] == 0)
|
||||
{
|
||||
MessageBox.Show("该文件一切正常。");
|
||||
MessageBox.Show(Resources.该文件一切正常);
|
||||
}
|
||||
else
|
||||
{
|
||||
string msg = "该文件存在以下错误:\n";
|
||||
string msg = Resources.该文件存在以下错误;
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
msg += "扇区" + i.ToString() + ":\n";
|
||||
msg += Resources.扇区 + i.ToString() + ":\n";
|
||||
if ((res[i] & 0x01) == 0x01)
|
||||
{
|
||||
currentS50.Sectors[i].Block[0][4]
|
||||
@ -364,7 +365,7 @@ namespace MifareOneTool
|
||||
^ currentS50.Sectors[i].Block[0][2]
|
||||
^ currentS50.Sectors[i].Block[0][3]);
|
||||
block0Edit.Text = Form1.hex(currentS50.Sectors[i].Block[0]);
|
||||
msg += "该扇区UID校验值错误,已自动更正。\n";
|
||||
msg += Resources.该扇区UID校验值错误_已自动更正;
|
||||
}
|
||||
if ((res[i] & 0x02) == 0x02)
|
||||
{
|
||||
@ -372,7 +373,7 @@ namespace MifareOneTool
|
||||
{
|
||||
currentS50.Sectors[i].Block[3][j] = defaultAC[j - 6];
|
||||
}
|
||||
msg += "该扇区访问控制位无效,写入将会损坏卡片,已重新设置。\n";
|
||||
msg += Resources.该扇区访问控制位无效_写入将会损坏卡片_已重新设置;
|
||||
}
|
||||
if ((res[i] & 0x04) == 0x04)
|
||||
{
|
||||
@ -380,11 +381,11 @@ namespace MifareOneTool
|
||||
{
|
||||
currentS50.Sectors[i].Block[3][j] = defaultAC[j - 6];
|
||||
}
|
||||
msg += "该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。\n";
|
||||
msg += Resources.该扇区访问控制位损坏_写入将会损坏卡片_已重新设置;
|
||||
}
|
||||
if (res[i] == 0)
|
||||
{
|
||||
msg += "该扇区一切正常。\n";
|
||||
msg += Resources.该扇区一切正常;
|
||||
}
|
||||
}
|
||||
richTextBox1.Clear();
|
||||
@ -398,9 +399,9 @@ namespace MifareOneTool
|
||||
SaveFileDialog ofd = new SaveFileDialog();
|
||||
ofd.AddExtension = true;
|
||||
ofd.DefaultExt = ".txt";
|
||||
ofd.Title = "请选择MCT.txt文件保存位置及文件名";
|
||||
ofd.Title = Resources.请选择MCT_txt文件保存位置及文件名;
|
||||
ofd.OverwritePrompt = true;
|
||||
ofd.Filter = "txt文件|*.txt";
|
||||
ofd.Filter = Resources.txt文件_txt;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
filename = ofd.FileName;
|
||||
@ -415,9 +416,9 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "写入出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ex.Message, Resources.写入出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
logAppend("已导出MCT文件" + filename + "。");
|
||||
logAppend(Resources.已导出MCT文件 + filename + "。");
|
||||
}
|
||||
|
||||
private void 导出密钥字典ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@ -426,9 +427,9 @@ namespace MifareOneTool
|
||||
SaveFileDialog ofd = new SaveFileDialog();
|
||||
ofd.AddExtension = true;
|
||||
ofd.DefaultExt = ".dic";
|
||||
ofd.Title = "请选择密钥字典文件保存位置及文件名";
|
||||
ofd.Title = Resources.请选择密钥字典文件保存位置及文件名;
|
||||
ofd.OverwritePrompt = true;
|
||||
ofd.Filter = "字典文件|*.dic";
|
||||
ofd.Filter = Resources.字典文件_dic;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
filename = ofd.FileName;
|
||||
@ -438,7 +439,7 @@ namespace MifareOneTool
|
||||
return;
|
||||
}
|
||||
File.WriteAllLines(filename, this.currentS50.KeyListStr().ToArray());
|
||||
logAppend("已导出密钥字典文件" + filename + "。");
|
||||
logAppend(Resources.已导出密钥字典文件 + filename + "。");
|
||||
}
|
||||
|
||||
private void 导入MCT格式ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@ -446,8 +447,8 @@ namespace MifareOneTool
|
||||
reloadEdit(-1);
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MCT格式|*.*";
|
||||
ofd.Title = "请选择需要打开的MCT格式文件";
|
||||
ofd.Filter = Resources.MCT格式;
|
||||
ofd.Title = Resources.请选择需要打开的MCT格式文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -464,12 +465,12 @@ namespace MifareOneTool
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(ioe.Message, Resources.打开出错, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
this.currentS50 = new S50();
|
||||
return;
|
||||
}
|
||||
reloadList();
|
||||
logAppend("打开了" + ofd.FileName);
|
||||
logAppend(Resources.打开了 + ofd.FileName);
|
||||
}
|
||||
|
||||
private void 列出全卡密钥ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@ -477,7 +478,7 @@ namespace MifareOneTool
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
sb.AppendLine("#扇区 " + i.ToString());
|
||||
sb.AppendLine(Resources._扇区 + i.ToString());
|
||||
sb.AppendLine("[A] " + Utils.Hex2Str(this.currentS50.Sectors[i].KeyA));
|
||||
sb.AppendLine("[B] " + Utils.Hex2Str(this.currentS50.Sectors[i].KeyB));
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -117,10 +117,201 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="buttonSaveSectorEdit.Text" xml:space="preserve">
|
||||
<value>Изменить сектор (Enter)</value>
|
||||
</data>
|
||||
<data name="Column1.HeaderText" xml:space="preserve">
|
||||
<value>Cектор</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items" xml:space="preserve">
|
||||
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items1" xml:space="preserve">
|
||||
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items2" xml:space="preserve">
|
||||
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items3" xml:space="preserve">
|
||||
<value>KeyB чтение / запись / не сложение и вычитание</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items4" xml:space="preserve">
|
||||
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items5" xml:space="preserve">
|
||||
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items6" xml:space="preserve">
|
||||
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
|
||||
</data>
|
||||
<data name="comboBox1.Items7" xml:space="preserve">
|
||||
<value>[только для чтения] заблокировать сектор</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items" xml:space="preserve">
|
||||
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items1" xml:space="preserve">
|
||||
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items2" xml:space="preserve">
|
||||
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items3" xml:space="preserve">
|
||||
<value>KeyB чтение / запись / не сложение и вычитание</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items4" xml:space="preserve">
|
||||
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items5" xml:space="preserve">
|
||||
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items6" xml:space="preserve">
|
||||
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
|
||||
</data>
|
||||
<data name="comboBox2.Items7" xml:space="preserve">
|
||||
<value>[только для чтения] заблокировать сектор</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items" xml:space="preserve">
|
||||
<value>KeyAB читать, писать, увеличивать и уменьшать</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items1" xml:space="preserve">
|
||||
<value>[только для чтения] KeyAB для чтения и амортизации / недоступен для записи и добавляет ценность</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items2" xml:space="preserve">
|
||||
<value>[только для чтения] KeyAB для чтения / записи, а также для увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items3" xml:space="preserve">
|
||||
<value>KeyB чтение / запись / не сложение и вычитание</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items4" xml:space="preserve">
|
||||
<value>KeyAB чтение / KeyB запись / без увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items5" xml:space="preserve">
|
||||
<value>[Только для чтения] KeyB для чтения / не для записи и увеличения или уменьшения</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items6" xml:space="preserve">
|
||||
<value>KeyAB чтение и ухудшение / KeyB написание и добавленная стоимость</value>
|
||||
</data>
|
||||
<data name="comboBox3.Items7" xml:space="preserve">
|
||||
<value>[только для чтения] заблокировать сектор</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items" xml:space="preserve">
|
||||
<value>[Необратимый] KeyA: запись / AC: только чтение / KeyB: чтение и запись</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items1" xml:space="preserve">
|
||||
<value>KeyA: запись / AC: чтение / запись / KeyB: чтение и запись</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items2" xml:space="preserve">
|
||||
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: только для чтения / KeyB: чтение</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items3" xml:space="preserve">
|
||||
<value>KeyA: B запись / AC: A только для чтения B чтение / запись / KeyB: B запись</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items4" xml:space="preserve">
|
||||
<value>[необратимый] KeyA: запись B / AC: только чтение AB / KeyB: запись B</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items5" xml:space="preserve">
|
||||
<value>KeyA: невозможно чтение / запись / AC: A только для чтения B чтение / запись / KeyB: невозможно чтение или запись</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items6" xml:space="preserve">
|
||||
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: AB только для чтения / KeyB: невозможно чтение или запись</value>
|
||||
</data>
|
||||
<data name="comboBox4.Items7" xml:space="preserve">
|
||||
<value>[Необратимый] KeyA: невозможно чтение / запись / AC: AB только для чтения / KeyB: невозможно чтение или запись (повторяется?)</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Редактор дампа (бета)</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>Список секторов</value>
|
||||
</data>
|
||||
<data name="groupBox2.Text" xml:space="preserve">
|
||||
<value>Информация о секторе</value>
|
||||
</data>
|
||||
<data name="groupBox3.Text" xml:space="preserve">
|
||||
<value>Просмотр</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Блок 0</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>Блок 1</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>Блок 2</value>
|
||||
</data>
|
||||
<data name="label4.Text" xml:space="preserve">
|
||||
<value>KEYA</value>
|
||||
<value>Ключ A</value>
|
||||
</data>
|
||||
<data name="label5.Text" xml:space="preserve">
|
||||
<value>KEYB</value>
|
||||
<value>Ключ B</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>Условия доступа блока 0</value>
|
||||
</data>
|
||||
<data name="label7.Text" xml:space="preserve">
|
||||
<value>Условия доступа блока 1</value>
|
||||
</data>
|
||||
<data name="label8.Text" xml:space="preserve">
|
||||
<value>Условия доступа блока 2</value>
|
||||
</data>
|
||||
<data name="label9.Text" xml:space="preserve">
|
||||
<value>Ключ / ACbits разрешение</value>
|
||||
</data>
|
||||
<data name="labelCurSec.Text" xml:space="preserve">
|
||||
<value>Текущий выбранный сектор: ?</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[0]" xml:space="preserve">
|
||||
<value>Добро пожаловать в интегрированный редактор M1T S50HTool!</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Lines[1]" xml:space="preserve">
|
||||
<value>Откройте файл, пожалуйста, нажмите на файл в верхнем левом углу - открыть или Ctrl + O</value>
|
||||
</data>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>Добро пожаловать в интегрированный редактор дампа!
|
||||
Чтобы открыть файл, пожалуйста, нажмите на Файл в верхнем левом углу - Открыть или Ctrl + O
|
||||
Вы можете обновить данные вашей карты.</value>
|
||||
</data>
|
||||
<data name="保存ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Сохранить</value>
|
||||
</data>
|
||||
<data name="修改UIDToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Изменить UID</value>
|
||||
</data>
|
||||
<data name="列出全卡密钥ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Перечислите полный ключ карты</value>
|
||||
</data>
|
||||
<data name="另存为ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Сохранить как</value>
|
||||
</data>
|
||||
<data name="导入MCT格式ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Импортировать формат MCT</value>
|
||||
</data>
|
||||
<data name="导出为MCT格式ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Экспорт в формат MCT</value>
|
||||
</data>
|
||||
<data name="导出密钥字典ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Словарь ключей экспорта</value>
|
||||
</data>
|
||||
<data name="工具ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Инструменты</value>
|
||||
</data>
|
||||
<data name="打开ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Открыть</value>
|
||||
</data>
|
||||
<data name="文件ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Файл</value>
|
||||
</data>
|
||||
<data name="新建ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Создать</value>
|
||||
</data>
|
||||
<data name="检查全卡ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Проверка полной карты</value>
|
||||
</data>
|
||||
<data name="检查并纠正全卡ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Проверка и исправление полной карты</value>
|
||||
</data>
|
||||
<data name="退出ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Выход</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -274,6 +274,9 @@
|
||||
<value>欢迎使用M1T的集成编辑器S50HTool!
|
||||
打开文件请点左上角文件-打开或Ctrl+O
|
||||
</value>
|
||||
<comment>Previous text: 欢迎使用M1T的集成编辑器S50HTool!
|
||||
打开文件请点左上角文件-打开或Ctrl+O
|
||||
</comment>
|
||||
</data>
|
||||
<data name="保存ToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>保存</value>
|
||||
|
||||
104
MifareOneTool/FormHardNes.Designer.cs
generated
104
MifareOneTool/FormHardNes.Designer.cs
generated
@ -47,8 +47,20 @@
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.checkBoxColOnly = new System.Windows.Forms.CheckBox();
|
||||
this.sector2 = new System.Windows.Forms.TextBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.tableLayoutPanel2.SuspendLayout();
|
||||
this.tableLayoutPanel3.SuspendLayout();
|
||||
this.tableLayoutPanel4.SuspendLayout();
|
||||
this.tableLayoutPanel5.SuspendLayout();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
@ -60,22 +72,16 @@
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
resources.ApplyResources(this.button2, "button2");
|
||||
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.button2.Name = "button2";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.radioKey1B);
|
||||
this.groupBox1.Controls.Add(this.radioKey1A);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.Controls.Add(this.label3);
|
||||
this.groupBox1.Controls.Add(this.sector1);
|
||||
this.groupBox1.Controls.Add(this.keyEdit);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.tableLayoutPanel1);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
@ -150,13 +156,8 @@
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.checkBoxColOnly);
|
||||
this.groupBox2.Controls.Add(this.radioKey2B);
|
||||
this.groupBox2.Controls.Add(this.radioKey2A);
|
||||
this.groupBox2.Controls.Add(this.label5);
|
||||
this.groupBox2.Controls.Add(this.label6);
|
||||
this.groupBox2.Controls.Add(this.sector2);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Controls.Add(this.tableLayoutPanel4);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
@ -171,6 +172,57 @@
|
||||
resources.ApplyResources(this.sector2, "sector2");
|
||||
this.sector2.Name = "sector2";
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
|
||||
this.tableLayoutPanel1.Controls.Add(this.radioKey1B, 3, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.radioKey1A, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.keyEdit, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label4, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label3, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.sector1, 1, 1);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
//
|
||||
// tableLayoutPanel2
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
|
||||
this.tableLayoutPanel2.Controls.Add(this.radioKey2B, 3, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.radioKey2A, 2, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.label6, 1, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.label5, 2, 0);
|
||||
this.tableLayoutPanel2.Controls.Add(this.sector2, 1, 1);
|
||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
//
|
||||
// tableLayoutPanel3
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
|
||||
this.tableLayoutPanel3.Controls.Add(this.groupBox1, 0, 0);
|
||||
this.tableLayoutPanel3.Controls.Add(this.flowLayoutPanel1, 0, 2);
|
||||
this.tableLayoutPanel3.Controls.Add(this.groupBox2, 0, 1);
|
||||
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
|
||||
//
|
||||
// tableLayoutPanel4
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel4, "tableLayoutPanel4");
|
||||
this.tableLayoutPanel4.Controls.Add(this.tableLayoutPanel2, 1, 0);
|
||||
this.tableLayoutPanel4.Controls.Add(this.checkBoxColOnly, 0, 0);
|
||||
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
|
||||
//
|
||||
// tableLayoutPanel5
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel5, "tableLayoutPanel5");
|
||||
this.tableLayoutPanel5.Controls.Add(this.button2, 0, 0);
|
||||
this.tableLayoutPanel5.Controls.Add(this.button1, 1, 0);
|
||||
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
|
||||
this.flowLayoutPanel1.Controls.Add(this.label1);
|
||||
this.flowLayoutPanel1.Controls.Add(this.tableLayoutPanel5);
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
//
|
||||
// FormHardNes
|
||||
//
|
||||
this.AcceptButton = this.button1;
|
||||
@ -178,11 +230,7 @@
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.button2;
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.tableLayoutPanel3);
|
||||
this.KeyPreview = true;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
@ -191,6 +239,18 @@
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.tableLayoutPanel2.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.PerformLayout();
|
||||
this.tableLayoutPanel3.ResumeLayout(false);
|
||||
this.tableLayoutPanel3.PerformLayout();
|
||||
this.tableLayoutPanel4.ResumeLayout(false);
|
||||
this.tableLayoutPanel4.PerformLayout();
|
||||
this.tableLayoutPanel5.ResumeLayout(false);
|
||||
this.tableLayoutPanel5.PerformLayout();
|
||||
this.flowLayoutPanel1.ResumeLayout(false);
|
||||
this.flowLayoutPanel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@ -216,5 +276,11 @@
|
||||
private System.Windows.Forms.TextBox sector2;
|
||||
private System.Windows.Forms.TextBox sector1;
|
||||
private System.Windows.Forms.CheckBox checkBoxColOnly;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@ -115,7 +116,7 @@ namespace MifareOneTool
|
||||
}
|
||||
if (error)
|
||||
{
|
||||
MessageBox.Show("设置错误,请修改。");
|
||||
MessageBox.Show(Resources.设置错误_请修改);
|
||||
return;
|
||||
}
|
||||
this.DialogResult = DialogResult.Yes;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -118,22 +118,23 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="button1.Text" xml:space="preserve">
|
||||
<value>Исполнение!</value>
|
||||
<value>Начать!</value>
|
||||
</data>
|
||||
<data name="button2.Text" xml:space="preserve">
|
||||
<value>Отмена</value>
|
||||
</data>
|
||||
<data name="checkBoxColOnly.Text" xml:space="preserve">
|
||||
<value>Только сбор не рассчитывается</value>
|
||||
<value>Только сбор
|
||||
не засчитывается</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Инициализировать HardNested расшифровку</value>
|
||||
<value>Расшифровка HardNested</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>Целевая карта - известная информация</value>
|
||||
<value>Известная информция о карте</value>
|
||||
</data>
|
||||
<data name="groupBox2.Text" xml:space="preserve">
|
||||
<value>Настройки расшифровки целевого сектора</value>
|
||||
<value>Настройка расшифровки сектора</value>
|
||||
</data>
|
||||
<data name="keyEdit.Lines[0]" xml:space="preserve">
|
||||
<value>FFFFFFFFFFFF</value>
|
||||
@ -142,7 +143,8 @@
|
||||
<value>FFFFFFFFFFFF</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Обратите внимание на теплоотдачу устройства при непрерывной работе!</value>
|
||||
<value>Обратите внимание на устройство
|
||||
при непрерывной работе!</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>Известный ключ</value>
|
||||
@ -151,24 +153,24 @@
|
||||
<value>Номер сектора</value>
|
||||
</data>
|
||||
<data name="label4.Text" xml:space="preserve">
|
||||
<value>тип</value>
|
||||
<value>Тип ключа</value>
|
||||
</data>
|
||||
<data name="label5.Text" xml:space="preserve">
|
||||
<value>тип</value>
|
||||
<value>Тип ключа</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>Номер сектора</value>
|
||||
</data>
|
||||
<data name="radioKey1A.Text" xml:space="preserve">
|
||||
<value>KEYA</value>
|
||||
<value>Ключ A</value>
|
||||
</data>
|
||||
<data name="radioKey1B.Text" xml:space="preserve">
|
||||
<value>KEYB</value>
|
||||
<value>Ключ B</value>
|
||||
</data>
|
||||
<data name="radioKey2A.Text" xml:space="preserve">
|
||||
<value>KEYA</value>
|
||||
<value>Ключ A</value>
|
||||
</data>
|
||||
<data name="radioKey2B.Text" xml:space="preserve">
|
||||
<value>KEYB</value>
|
||||
<value>Ключ B</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@ -22,8 +23,8 @@ namespace MifareOneTool
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.CheckFileExists = true;
|
||||
ofd.Filter = "MFD文件|*.mfd|DUMP文件|*.dump";
|
||||
ofd.Title = "请选择最后一次写卡导致0块损坏的卡数据文件";
|
||||
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
|
||||
ofd.Title = Resources.请选择最后一次写卡导致0块损坏的卡数据文件;
|
||||
ofd.Multiselect = false;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -66,7 +67,7 @@ namespace MifareOneTool
|
||||
|
||||
private void buttonWriteEmpty_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
S50 empty = new S50();
|
||||
empty.ExportToMfd("mff08_empty.kmf");
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
@ -101,17 +102,17 @@ namespace MifareOneTool
|
||||
process.BeginErrorReadLine();
|
||||
process.WaitForExit();
|
||||
lprocess = false;
|
||||
b.ReportProgress(100, "##运行完毕##");
|
||||
b.ReportProgress(100, Resources._运行完毕);
|
||||
}
|
||||
|
||||
private void buttonKeyWrite_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lprocess) { MessageBox.Show("有任务运行中,不可执行。", "设备忙", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
if (lprocess) { MessageBox.Show(Resources.有任务运行中_不可执行, Resources.设备忙, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
||||
S50 empty = new S50();
|
||||
empty.ExportToMfd("mff08_empty.kmf");
|
||||
if (keyfileBox.Text == "")
|
||||
{
|
||||
MessageBox.Show("您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的密钥源。\n操作终止。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(Resources.您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的, Resources.错误, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
BackgroundWorker bgw = new BackgroundWorker();
|
||||
@ -125,7 +126,7 @@ namespace MifareOneTool
|
||||
{
|
||||
if (!File.Exists("nfc-bin/mff08.exe"))
|
||||
{
|
||||
MessageBox.Show("无法找到MFF08程序文件。\n操作终止。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show(Resources.无法找到MFF08程序文件_操作终止, Resources.错误, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -172,6 +172,12 @@ MFF08工具给了你一次修复这些损坏卡片的机会。
|
||||
------------------------------------------------------------------------
|
||||
|
||||
</value>
|
||||
<comment>Previous text: 每个人使用CUID卡的时候,总会因不了解或是不经意犯下一些小错误。
|
||||
比如使用编辑器修改UID却没有改BCC,SAK=28的卡片解密后的文件直接写入,又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
|
||||
MFF08工具给了你一次修复这些损坏卡片的机会。
|
||||
------------------------------------------------------------------------
|
||||
|
||||
</comment>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
|
||||
@ -172,5 +172,11 @@ MFF08工具给了你一次修复这些损坏卡片的机会。
|
||||
------------------------------------------------------------------------
|
||||
|
||||
</value>
|
||||
<comment>Previous text: 每个人使用CUID卡的时候,总会因不了解或是不经意犯下一些小错误。
|
||||
比如使用编辑器修改UID却没有改BCC,SAK=28的卡片解密后的文件直接写入,又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
|
||||
MFF08工具给了你一次修复这些损坏卡片的机会。
|
||||
------------------------------------------------------------------------
|
||||
|
||||
</comment>
|
||||
</data>
|
||||
</root>
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@ -13,7 +14,7 @@ namespace MifareOneTool
|
||||
class GitHubUpdate
|
||||
{
|
||||
public Version localVersion;
|
||||
public string remoteVersion="未知";
|
||||
public string remoteVersion=Resources.未知;
|
||||
public void Update(string GitHubR)
|
||||
{
|
||||
try
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<OutputPath>..\..\Сборки\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@ -156,18 +156,22 @@
|
||||
<DependentUpon>FormMFF08.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="SelectLanguage.resx">
|
||||
<DependentUpon>SelectLanguage.cs</DependentUpon>
|
||||
<EmbeddedResource Include="Properties\Resources.ru.resx">
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="SelectLanguage.zh.resx">
|
||||
<EmbeddedResource Include="Properties\Resources.zh.resx">
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="SelectLanguage.resx">
|
||||
<DependentUpon>SelectLanguage.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
@ -41,7 +42,7 @@ namespace MifareOneTool
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MessageBox.Show("您已经运行了MifareOne Tool,打开多个本程序可能会造成冲突及不可预料到的错误。\n确认要继续吗?", "您正在试图重复运行", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
|
||||
if (MessageBox.Show(Resources.您已经运行了MifareOne_Tool_打开多个本程序可能, Resources.您正在试图重复运行, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
1339
MifareOneTool/Properties/Resources.Designer.cs
generated
1339
MifareOneTool/Properties/Resources.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@ -46,7 +46,7 @@
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
@ -60,6 +60,7 @@
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
@ -68,9 +69,10 @@
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
@ -85,9 +87,10 @@
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
@ -109,9 +112,448 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="_0_9A_Fa_f_32" xml:space="preserve">
|
||||
<value>[0-9A-Fa-f]{32}</value>
|
||||
</data>
|
||||
<data name="_Nonce收集完毕" xml:space="preserve">
|
||||
<value>##Nonce收集完毕##</value>
|
||||
</data>
|
||||
<data name="_Sector" xml:space="preserve">
|
||||
<value>+Sector: </value>
|
||||
</data>
|
||||
<data name="_个块不同" xml:space="preserve">
|
||||
<value> 个块不同
|
||||
</value>
|
||||
</data>
|
||||
<data name="_已保存" xml:space="preserve">
|
||||
<value>##已保存-</value>
|
||||
</data>
|
||||
<data name="_已自动保存" xml:space="preserve">
|
||||
<value>##已自动保存-</value>
|
||||
</data>
|
||||
<data name="_扇区" xml:space="preserve">
|
||||
<value>#扇区 </value>
|
||||
</data>
|
||||
<data name="_文件中的值错误" xml:space="preserve">
|
||||
<value>##文件中的值错误##</value>
|
||||
</data>
|
||||
<data name="_有数据" xml:space="preserve">
|
||||
<value> 有数据</value>
|
||||
</data>
|
||||
<data name="_有错误" xml:space="preserve">
|
||||
<value> 有错误</value>
|
||||
</data>
|
||||
<data name="_未保存" xml:space="preserve">
|
||||
<value>##未保存##</value>
|
||||
</data>
|
||||
<data name="_程序已被强制停止" xml:space="preserve">
|
||||
<value>##程序已被强制停止##</value>
|
||||
</data>
|
||||
<data name="_空扇区" xml:space="preserve">
|
||||
<value> 空扇区</value>
|
||||
</data>
|
||||
<data name="_缓存文件异常" xml:space="preserve">
|
||||
<value>##缓存文件异常##</value>
|
||||
</data>
|
||||
<data name="_计算得到BCC" xml:space="preserve">
|
||||
<value>,计算得到BCC=</value>
|
||||
</data>
|
||||
<data name="_软件版本" xml:space="preserve">
|
||||
<value>#软件版本 </value>
|
||||
</data>
|
||||
<data name="_运行出错" xml:space="preserve">
|
||||
<value>##运行出错##</value>
|
||||
</data>
|
||||
<data name="_运行完毕" xml:space="preserve">
|
||||
<value>##运行完毕##</value>
|
||||
</data>
|
||||
<data name="AB文件中一个或两个无效" xml:space="preserve">
|
||||
<value>AB文件中一个或两个无效。</value>
|
||||
</data>
|
||||
<data name="ACR122U支持已经打开过" xml:space="preserve">
|
||||
<value>ACR122U支持已经打开过。</value>
|
||||
</data>
|
||||
<data name="DUMP文件_dump_MFD文件_mfd" xml:space="preserve">
|
||||
<value>DUMP文件|*.dump|MFD文件|*.mfd</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>Information</value>
|
||||
</data>
|
||||
<data name="InputError" xml:space="preserve">
|
||||
<value>InputError</value>
|
||||
</data>
|
||||
<data name="KeyA_B_N" xml:space="preserve">
|
||||
<value>KeyA/B/N</value>
|
||||
</data>
|
||||
<data name="MCT格式" xml:space="preserve">
|
||||
<value>MCT格式|*.*</value>
|
||||
</data>
|
||||
<data name="MFD文件_mfd_dump" xml:space="preserve">
|
||||
<value>MFD文件|*.mfd;*.dump</value>
|
||||
</data>
|
||||
<data name="MFD文件_mfd_DUMP文件_dump" xml:space="preserve">
|
||||
<value>MFD文件|*.mfd|DUMP文件|*.dump</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool" xml:space="preserve">
|
||||
<value>MifareOne Tool</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_已取消" xml:space="preserve">
|
||||
<value>MifareOne Tool - 已取消</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_已终止" xml:space="preserve">
|
||||
<value>MifareOne Tool - 已终止</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_运行中" xml:space="preserve">
|
||||
<value>MifareOne Tool - 运行中</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_运行完毕" xml:space="preserve">
|
||||
<value>MifareOne Tool - 运行完毕</value>
|
||||
</data>
|
||||
<data name="nfc_bin_collect_exe" xml:space="preserve">
|
||||
<value>nfc-bin/collect.exe</value>
|
||||
</data>
|
||||
<data name="res" xml:space="preserve">
|
||||
<value>。</value>
|
||||
</data>
|
||||
<data name="txt文件_txt" xml:space="preserve">
|
||||
<value>txt文件|*.txt</value>
|
||||
</data>
|
||||
<data name="UID已改为" xml:space="preserve">
|
||||
<value>UID已改为</value>
|
||||
</data>
|
||||
<data name="不恰当的4字节UID长度" xml:space="preserve">
|
||||
<value>不恰当的4字节UID长度</value>
|
||||
</data>
|
||||
<data name="使用KeyA_是_或KeyB_否" xml:space="preserve">
|
||||
<value>使用KeyA(是)或KeyB(否)?</value>
|
||||
</data>
|
||||
<data name="使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_" xml:space="preserve">
|
||||
<value>使用KeyA(是)或KeyB(否),还是不使用(用于全新白卡)(取消)?</value>
|
||||
</data>
|
||||
<data name="共找到" xml:space="preserve">
|
||||
<value>共找到 </value>
|
||||
</data>
|
||||
<data name="写入出错" xml:space="preserve">
|
||||
<value>写入出错</value>
|
||||
</data>
|
||||
<data name="加载的S50卡文件大小异常" xml:space="preserve">
|
||||
<value>加载的S50卡文件大小异常。</value>
|
||||
</data>
|
||||
<data name="加载的文件不存在" xml:space="preserve">
|
||||
<value>加载的文件不存在。</value>
|
||||
</data>
|
||||
<data name="危险操作警告" xml:space="preserve">
|
||||
<value>危险操作警告</value>
|
||||
</data>
|
||||
<data name="同时打开ACR122U支持可能会引起操作速度下降_请确认是否" xml:space="preserve">
|
||||
<value>同时打开ACR122U支持可能会引起操作速度下降。
|
||||
请确认是否要继续操作?</value>
|
||||
</data>
|
||||
<data name="字典文件_dic" xml:space="preserve">
|
||||
<value>字典文件|*.dic</value>
|
||||
</data>
|
||||
<data name="密钥字典文件_dic" xml:space="preserve">
|
||||
<value>密钥字典文件|*.dic</value>
|
||||
</data>
|
||||
<data name="将自动选择首个设备" xml:space="preserve">
|
||||
<value>将自动选择首个设备:</value>
|
||||
</data>
|
||||
<data name="将要写入的文件存在错误_请用高级模式中的Hex工具打开查看" xml:space="preserve">
|
||||
<value>将要写入的文件存在错误,请用高级模式中的Hex工具打开查看。</value>
|
||||
</data>
|
||||
<data name="已保存到" xml:space="preserve">
|
||||
<value>已保存到</value>
|
||||
</data>
|
||||
<data name="已启用CUID空卡写入补丁" xml:space="preserve">
|
||||
<value>已启用CUID空卡写入补丁</value>
|
||||
</data>
|
||||
<data name="已导出MCT文件" xml:space="preserve">
|
||||
<value>已导出MCT文件</value>
|
||||
</data>
|
||||
<data name="已导出密钥字典文件" xml:space="preserve">
|
||||
<value>已导出密钥字典文件</value>
|
||||
</data>
|
||||
<data name="已打开" xml:space="preserve">
|
||||
<value>已打开。</value>
|
||||
</data>
|
||||
<data name="已找到_K" xml:space="preserve">
|
||||
<value>已找到!K=</value>
|
||||
</data>
|
||||
<data name="已指定使用该NFC设备" xml:space="preserve">
|
||||
<value>已指定使用该NFC设备:</value>
|
||||
</data>
|
||||
<data name="已更新扇区" xml:space="preserve">
|
||||
<value>已更新扇区</value>
|
||||
</data>
|
||||
<data name="已重置并新建卡" xml:space="preserve">
|
||||
<value>已重置并新建卡。</value>
|
||||
</data>
|
||||
<data name="开始执行CUID_FUID卡片写入" xml:space="preserve">
|
||||
<value>开始执行CUID/FUID卡片写入……</value>
|
||||
</data>
|
||||
<data name="开始执行HardNested收集数据" xml:space="preserve">
|
||||
<value>开始执行HardNested收集数据……</value>
|
||||
</data>
|
||||
<data name="开始执行HardNested解密强化卡" xml:space="preserve">
|
||||
<value>开始执行HardNested解密强化卡……</value>
|
||||
</data>
|
||||
<data name="开始执行MFOC解密" xml:space="preserve">
|
||||
<value>开始执行MFOC解密……</value>
|
||||
</data>
|
||||
<data name="开始执行UFUID卡片锁定" xml:space="preserve">
|
||||
<value>开始执行UFUID卡片锁定……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片全格" xml:space="preserve">
|
||||
<value>开始执行UID卡片全格……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片写入" xml:space="preserve">
|
||||
<value>开始执行UID卡片写入……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片设定卡号" xml:space="preserve">
|
||||
<value>开始执行UID卡片设定卡号……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片读取" xml:space="preserve">
|
||||
<value>开始执行UID卡片读取……</value>
|
||||
</data>
|
||||
<data name="开始执行全加密卡片爆破" xml:space="preserve">
|
||||
<value>开始执行全加密卡片爆破……</value>
|
||||
</data>
|
||||
<data name="开始执行写入M1卡片" xml:space="preserve">
|
||||
<value>开始执行写入M1卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行字典模式MFOC解密" xml:space="preserve">
|
||||
<value>开始执行字典模式MFOC解密……</value>
|
||||
</data>
|
||||
<data name="开始执行扫描卡片" xml:space="preserve">
|
||||
<value>开始执行扫描卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行格式化M1卡片" xml:space="preserve">
|
||||
<value>开始执行格式化M1卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行检测卡片加密" xml:space="preserve">
|
||||
<value>开始执行检测卡片加密……</value>
|
||||
</data>
|
||||
<data name="开始执行检测设备" xml:space="preserve">
|
||||
<value>开始执行检测设备……</value>
|
||||
</data>
|
||||
<data name="开始执行读取卡片" xml:space="preserve">
|
||||
<value>开始执行读取卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行重置UID卡片卡号" xml:space="preserve">
|
||||
<value>开始执行重置UID卡片卡号……</value>
|
||||
</data>
|
||||
<data name="当前扇区数据仍有错误_不能执行修改" xml:space="preserve">
|
||||
<value>当前扇区数据仍有错误,不能执行修改。</value>
|
||||
</data>
|
||||
<data name="当前选定扇区" xml:space="preserve">
|
||||
<value>当前选定扇区:??</value>
|
||||
</data>
|
||||
<data name="当前选定扇区0" xml:space="preserve">
|
||||
<value>当前选定扇区:</value>
|
||||
</data>
|
||||
<data name="您可以上传到云计算服务节点进行计算" xml:space="preserve">
|
||||
<value>您可以上传到云计算服务节点进行计算。</value>
|
||||
</data>
|
||||
<data name="您已经运行了MifareOne_Tool_打开多个本程序可能" xml:space="preserve">
|
||||
<value>您已经运行了MifareOne Tool,打开多个本程序可能会造成冲突及不可预料到的错误。
|
||||
确认要继续吗?</value>
|
||||
</data>
|
||||
<data name="您正在试图重复运行" xml:space="preserve">
|
||||
<value>您正在试图重复运行</value>
|
||||
</data>
|
||||
<data name="您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的" xml:space="preserve">
|
||||
<value>您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的密钥源。
|
||||
操作终止。</value>
|
||||
</data>
|
||||
<data name="扇区" xml:space="preserve">
|
||||
<value>扇区</value>
|
||||
</data>
|
||||
<data name="扇区0" xml:space="preserve">
|
||||
<value>扇区 </value>
|
||||
</data>
|
||||
<data name="打开了" xml:space="preserve">
|
||||
<value>打开了</value>
|
||||
</data>
|
||||
<data name="打开出错" xml:space="preserve">
|
||||
<value>打开出错</value>
|
||||
</data>
|
||||
<data name="提示信息" xml:space="preserve">
|
||||
<value>提示信息</value>
|
||||
</data>
|
||||
<data name="文件内不是含有64个块数据_可能不完整或不兼容" xml:space="preserve">
|
||||
<value>文件内不是含有64个块数据,可能不完整或不兼容。</value>
|
||||
</data>
|
||||
<data name="无密钥" xml:space="preserve">
|
||||
<value>无密钥</value>
|
||||
</data>
|
||||
<data name="无法找到MFF08程序文件_操作终止" xml:space="preserve">
|
||||
<value>无法找到MFF08程序文件。
|
||||
操作终止。</value>
|
||||
</data>
|
||||
<data name="显示扇区" xml:space="preserve">
|
||||
<value>显示扇区</value>
|
||||
</data>
|
||||
<data name="有任务运行中_不可执行" xml:space="preserve">
|
||||
<value>有任务运行中,不可执行。</value>
|
||||
</data>
|
||||
<data name="未知" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
</data>
|
||||
<data name="未选择有效key_mfd" xml:space="preserve">
|
||||
<value>未选择有效key.mfd。</value>
|
||||
</data>
|
||||
<data name="本地版本" xml:space="preserve">
|
||||
<value>本地版本 </value>
|
||||
</data>
|
||||
<data name="正在使用智能KeyABN" xml:space="preserve">
|
||||
<value>正在使用智能KeyABN…</value>
|
||||
</data>
|
||||
<data name="正在打开ACR122U支持" xml:space="preserve">
|
||||
<value>正在打开ACR122U支持……</value>
|
||||
</data>
|
||||
<data name="正在检索是否存在key_mfd" xml:space="preserve">
|
||||
<value>正在检索是否存在key.mfd…</value>
|
||||
</data>
|
||||
<data name="没有发现任何有效的NFC设备" xml:space="preserve">
|
||||
<value>没有发现任何有效的NFC设备。</value>
|
||||
</data>
|
||||
<data name="秒" xml:space="preserve">
|
||||
<value>秒</value>
|
||||
</data>
|
||||
<data name="空闲" xml:space="preserve">
|
||||
<value>空闲</value>
|
||||
</data>
|
||||
<data name="终端内容已保存至m1t_log文件" xml:space="preserve">
|
||||
<value>终端内容已保存至m1t.log文件</value>
|
||||
</data>
|
||||
<data name="设备串口" xml:space="preserve">
|
||||
<value>设备串口:</value>
|
||||
</data>
|
||||
<data name="设备忙" xml:space="preserve">
|
||||
<value>设备忙</value>
|
||||
</data>
|
||||
<data name="设置错误_请修改" xml:space="preserve">
|
||||
<value>设置错误,请修改。</value>
|
||||
</data>
|
||||
<data name="识别了以下设备" xml:space="preserve">
|
||||
<value>识别了以下设备:</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_已经自动为您更正" xml:space="preserve">
|
||||
<value>该扇区UID校验值错误,已经自动为您更正。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_已自动更正" xml:space="preserve">
|
||||
<value>该扇区UID校验值错误,已自动更正。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_请点击打开扇区0来自动更正" xml:space="preserve">
|
||||
<value>该扇区UID校验值错误,请点击打开扇区0来自动更正。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区一切正常" xml:space="preserve">
|
||||
<value>该扇区一切正常。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位损坏_写入将会损坏卡片_已重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位损坏_写入将会损坏卡片_请重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位损坏,写入将会损坏卡片,请重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位无效_写入将会损坏卡片_已重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位无效,写入将会损坏卡片,已重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位无效_写入将会损坏卡片_请重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位无效,写入将会损坏卡片,请重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否" xml:space="preserve">
|
||||
<value>该操作将会清空UID卡内全部数据!!!
|
||||
清空后不可恢复!请确认是否要继续操作?</value>
|
||||
</data>
|
||||
<data name="该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0" xml:space="preserve">
|
||||
<value>该操作将会锁死UFUID卡片!!!
|
||||
锁死后不可恢复!无法再次更改0块!请确认是否要继续操作?</value>
|
||||
</data>
|
||||
<data name="该文件一切正常" xml:space="preserve">
|
||||
<value>该文件一切正常。</value>
|
||||
</data>
|
||||
<data name="该文件存在以下错误" xml:space="preserve">
|
||||
<value>该文件存在以下错误:
|
||||
</value>
|
||||
</data>
|
||||
<data name="请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_" xml:space="preserve">
|
||||
<value>请检查接线是否正确/驱动是否正常安装/设备电源是否已经打开(对于具有电源开关的型号)。</value>
|
||||
</data>
|
||||
<data name="请输入UID号" xml:space="preserve">
|
||||
<value>请输入UID号</value>
|
||||
</data>
|
||||
<data name="请输入已知Key" xml:space="preserve">
|
||||
<value>请输入已知Key</value>
|
||||
</data>
|
||||
<data name="请输入已知的Key_以英文半角逗号分隔" xml:space="preserve">
|
||||
<value>请输入已知的Key,以英文半角逗号分隔。</value>
|
||||
</data>
|
||||
<data name="请输入需要写入的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
|
||||
<value>请输入需要写入的UID卡号,共8位十六进制数,如E44A3BF1。</value>
|
||||
</data>
|
||||
<data name="请输入需要更改的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
|
||||
<value>请输入需要更改的UID卡号,共8位十六进制数,如E44A3BF1。</value>
|
||||
</data>
|
||||
<data name="请选择MCT_txt文件保存位置及文件名" xml:space="preserve">
|
||||
<value>请选择MCT.txt文件保存位置及文件名</value>
|
||||
</data>
|
||||
<data name="请选择MFD文件保存位置及文件名" xml:space="preserve">
|
||||
<value>请选择MFD文件保存位置及文件名</value>
|
||||
</data>
|
||||
<data name="请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡" xml:space="preserve">
|
||||
<value>请选择一个包含目标卡密钥的MFD文件(通常是已经破解出的该卡的MFD文件)</value>
|
||||
</data>
|
||||
<data name="请选择密钥字典文件保存位置及文件名" xml:space="preserve">
|
||||
<value>请选择密钥字典文件保存位置及文件名</value>
|
||||
</data>
|
||||
<data name="请选择最后一次写卡导致0块损坏的卡数据文件" xml:space="preserve">
|
||||
<value>请选择最后一次写卡导致0块损坏的卡数据文件</value>
|
||||
</data>
|
||||
<data name="请选择需要写入的MFD文件" xml:space="preserve">
|
||||
<value>请选择需要写入的MFD文件</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MCT格式文件" xml:space="preserve">
|
||||
<value>请选择需要打开的MCT格式文件</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件" xml:space="preserve">
|
||||
<value>请选择需要打开的MFD文件</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件_比较A" xml:space="preserve">
|
||||
<value>请选择需要打开的MFD文件(比较A)</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件_比较B" xml:space="preserve">
|
||||
<value>请选择需要打开的MFD文件(比较B)</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的密钥字典文件" xml:space="preserve">
|
||||
<value>请选择需要打开的密钥字典文件</value>
|
||||
</data>
|
||||
<data name="输入的UID号不合法" xml:space="preserve">
|
||||
<value>输入的UID号不合法</value>
|
||||
</data>
|
||||
<data name="运行中" xml:space="preserve">
|
||||
<value>运行中</value>
|
||||
</data>
|
||||
<data name="运行时间" xml:space="preserve">
|
||||
<value>运行时间:</value>
|
||||
</data>
|
||||
<data name="选择key_mfd" xml:space="preserve">
|
||||
<value>选择key.mfd</value>
|
||||
</data>
|
||||
<data name="错误" xml:space="preserve">
|
||||
<value>错误</value>
|
||||
</data>
|
||||
</root>
|
||||
550
MifareOneTool/Properties/Resources.ru.resx
Normal file
550
MifareOneTool/Properties/Resources.ru.resx
Normal file
@ -0,0 +1,550 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="_Nonce收集完毕" xml:space="preserve">
|
||||
<value>## Nonce собрано ##</value>
|
||||
</data>
|
||||
<data name="_Sector" xml:space="preserve">
|
||||
<value>+ Сектор:</value>
|
||||
</data>
|
||||
<data name="_个块不同" xml:space="preserve">
|
||||
<value> Разные блоки
|
||||
</value>
|
||||
</data>
|
||||
<data name="_已保存" xml:space="preserve">
|
||||
<value>## Сохранено-</value>
|
||||
</data>
|
||||
<data name="_已自动保存" xml:space="preserve">
|
||||
<value>## Был сохранен автоматически -</value>
|
||||
</data>
|
||||
<data name="_扇区" xml:space="preserve">
|
||||
<value># сектор</value>
|
||||
</data>
|
||||
<data name="_文件中的值错误" xml:space="preserve">
|
||||
<value>## Ошибка в значении файла ###</value>
|
||||
</data>
|
||||
<data name="_有数据" xml:space="preserve">
|
||||
<value> Есть данные</value>
|
||||
</data>
|
||||
<data name="_有错误" xml:space="preserve">
|
||||
<value> Есть ошибка</value>
|
||||
</data>
|
||||
<data name="_未保存" xml:space="preserve">
|
||||
<value>## Несохраненный ##</value>
|
||||
</data>
|
||||
<data name="_程序已被强制停止" xml:space="preserve">
|
||||
<value>## Программа была вынуждена остановить ##</value>
|
||||
</data>
|
||||
<data name="_空扇区" xml:space="preserve">
|
||||
<value> Пустой сектор</value>
|
||||
</data>
|
||||
<data name="_缓存文件异常" xml:space="preserve">
|
||||
<value>## Исключение файла кэша ##</value>
|
||||
</data>
|
||||
<data name="_计算得到BCC" xml:space="preserve">
|
||||
<value>, рассчитать BCC =</value>
|
||||
</data>
|
||||
<data name="_软件版本" xml:space="preserve">
|
||||
<value>Версия программного обеспечения - </value>
|
||||
</data>
|
||||
<data name="_运行出错" xml:space="preserve">
|
||||
<value>## Ошибка запуска ##</value>
|
||||
</data>
|
||||
<data name="_运行完毕" xml:space="preserve">
|
||||
<value>## Завершение работы ##</value>
|
||||
</data>
|
||||
<data name="AB文件中一个或两个无效" xml:space="preserve">
|
||||
<value>Один или два файла AB недействительны.</value>
|
||||
</data>
|
||||
<data name="ACR122U支持已经打开过" xml:space="preserve">
|
||||
<value>Поддержка ACR122U включена.</value>
|
||||
</data>
|
||||
<data name="DUMP文件_dump_MFD文件_mfd" xml:space="preserve">
|
||||
<value>DUMP файл | * .dump | MFD файл | * .mfd</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>информация</value>
|
||||
</data>
|
||||
<data name="KeyA_B_N" xml:space="preserve">
|
||||
<value>Keya / B / N</value>
|
||||
</data>
|
||||
<data name="MCT格式" xml:space="preserve">
|
||||
<value>Формат MCT | *. *</value>
|
||||
</data>
|
||||
<data name="MFD文件_mfd_dump" xml:space="preserve">
|
||||
<value>MFD файл | * .mfd; *. Dump</value>
|
||||
</data>
|
||||
<data name="MFD文件_mfd_DUMP文件_dump" xml:space="preserve">
|
||||
<value>MFD файл | * .mfd | DUMP файл | * .dump</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_已取消" xml:space="preserve">
|
||||
<value>Инструмент MifareOne - Отменено</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_已终止" xml:space="preserve">
|
||||
<value>MifareOne Tool - прекращено</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_运行中" xml:space="preserve">
|
||||
<value>MifareOne Tool - Запуск</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_运行完毕" xml:space="preserve">
|
||||
<value>MifareOne Tool - Операция завершена</value>
|
||||
</data>
|
||||
<data name="nfc_bin_collect_exe" xml:space="preserve">
|
||||
<value>НФК-бен / Collect.exe</value>
|
||||
</data>
|
||||
<data name="res" xml:space="preserve">
|
||||
<value>,</value>
|
||||
</data>
|
||||
<data name="txt文件_txt" xml:space="preserve">
|
||||
<value>Txt файл | * .txt</value>
|
||||
</data>
|
||||
<data name="UID已改为" xml:space="preserve">
|
||||
<value>UID был изменен на</value>
|
||||
</data>
|
||||
<data name="不恰当的4字节UID长度" xml:space="preserve">
|
||||
<value>Недопустимая длина UID в 4 байта</value>
|
||||
</data>
|
||||
<data name="使用KeyA_是_或KeyB_否" xml:space="preserve">
|
||||
<value>Использовать KeyA (да) или KeyB (нет)?</value>
|
||||
</data>
|
||||
<data name="使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_" xml:space="preserve">
|
||||
<value>Использовать KeyA (да) или KeyB (нет) или нет (для новых белых карточек) (отменить)?</value>
|
||||
</data>
|
||||
<data name="共找到" xml:space="preserve">
|
||||
<value>найденный</value>
|
||||
</data>
|
||||
<data name="写入出错" xml:space="preserve">
|
||||
<value>Ошибка записи</value>
|
||||
</data>
|
||||
<data name="加载的S50卡文件大小异常" xml:space="preserve">
|
||||
<value>Размер загруженного файла карты S50 ненормальный.</value>
|
||||
</data>
|
||||
<data name="加载的文件不存在" xml:space="preserve">
|
||||
<value>Загруженный файл не существует.</value>
|
||||
</data>
|
||||
<data name="危险操作警告" xml:space="preserve">
|
||||
<value>Предупреждение об опасной работе</value>
|
||||
</data>
|
||||
<data name="同时打开ACR122U支持可能会引起操作速度下降_请确认是否" xml:space="preserve">
|
||||
<value>Одновременное открытие опоры ACR122U может привести к снижению скорости работы.
|
||||
Пожалуйста, подтвердите, если вы хотите продолжить?</value>
|
||||
</data>
|
||||
<data name="字典文件_dic" xml:space="preserve">
|
||||
<value>Файл словаря | * .dic</value>
|
||||
</data>
|
||||
<data name="密钥字典文件_dic" xml:space="preserve">
|
||||
<value>Файл ключевого словаря | * .dic</value>
|
||||
</data>
|
||||
<data name="将自动选择首个设备" xml:space="preserve">
|
||||
<value>Первое устройство будет выбрано автоматически:</value>
|
||||
</data>
|
||||
<data name="将要写入的文件存在错误_请用高级模式中的Hex工具打开查看" xml:space="preserve">
|
||||
<value>Существует ошибка в файле, который будет записан. Откройте вид с помощью инструмента Hex в расширенном режиме.</value>
|
||||
</data>
|
||||
<data name="已保存到" xml:space="preserve">
|
||||
<value>Сохранено в</value>
|
||||
</data>
|
||||
<data name="已启用CUID空卡写入补丁" xml:space="preserve">
|
||||
<value>CUID патч для записи пустой карты включен</value>
|
||||
</data>
|
||||
<data name="已导出MCT文件" xml:space="preserve">
|
||||
<value>MCT файл был экспортирован</value>
|
||||
</data>
|
||||
<data name="已导出密钥字典文件" xml:space="preserve">
|
||||
<value>Файл словаря экспортированного ключа</value>
|
||||
</data>
|
||||
<data name="已打开" xml:space="preserve">
|
||||
<value>Он открыт.</value>
|
||||
</data>
|
||||
<data name="已找到_K" xml:space="preserve">
|
||||
<value>Найдено! K =</value>
|
||||
</data>
|
||||
<data name="已指定使用该NFC设备" xml:space="preserve">
|
||||
<value>Устройство NFC было указано для использования:</value>
|
||||
</data>
|
||||
<data name="已更新扇区" xml:space="preserve">
|
||||
<value>Обновленный сектор</value>
|
||||
</data>
|
||||
<data name="已重置并新建卡" xml:space="preserve">
|
||||
<value>Карта была сброшена и создана.</value>
|
||||
</data>
|
||||
<data name="开始执行CUID_FUID卡片写入" xml:space="preserve">
|
||||
<value>Начать выполнение записи CUID / FUID карты ...</value>
|
||||
</data>
|
||||
<data name="开始执行HardNested收集数据" xml:space="preserve">
|
||||
<value>Начните выполнять HardNested для сбора данных ...</value>
|
||||
</data>
|
||||
<data name="开始执行HardNested解密强化卡" xml:space="preserve">
|
||||
<value>Запустите карточку улучшения расшифровки HardNested ...</value>
|
||||
</data>
|
||||
<data name="开始执行MFOC解密" xml:space="preserve">
|
||||
<value>Начните выполнять расшифровку MFOC ...</value>
|
||||
</data>
|
||||
<data name="开始执行UFUID卡片锁定" xml:space="preserve">
|
||||
<value>Начать выполнение блокировки карты UFUID ...</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片全格" xml:space="preserve">
|
||||
<value>Начните выполнять UID карты в полноэкранном режиме ...</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片写入" xml:space="preserve">
|
||||
<value>Начните выполнять запись UID карты ...</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片设定卡号" xml:space="preserve">
|
||||
<value>Начните выполнять номер карты установки карты UID ...</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片读取" xml:space="preserve">
|
||||
<value>Начать чтение карты UID...</value>
|
||||
</data>
|
||||
<data name="开始执行全加密卡片爆破" xml:space="preserve">
|
||||
<value>Начните выполнять полное шифрование карты взрыва ...</value>
|
||||
</data>
|
||||
<data name="开始执行写入M1卡片" xml:space="preserve">
|
||||
<value>Начните запись на карту M1...</value>
|
||||
</data>
|
||||
<data name="开始执行字典模式MFOC解密" xml:space="preserve">
|
||||
<value>Начать выполнение словарного режима MFOC для расшифровки ...</value>
|
||||
</data>
|
||||
<data name="开始执行扫描卡片" xml:space="preserve">
|
||||
<value>Начать сканирование карт...</value>
|
||||
</data>
|
||||
<data name="开始执行格式化M1卡片" xml:space="preserve">
|
||||
<value>Начните выполнять отформатированную карту M1 ...</value>
|
||||
</data>
|
||||
<data name="开始执行检测卡片加密" xml:space="preserve">
|
||||
<value>Начните выполнять проверку карты шифрованием ...</value>
|
||||
</data>
|
||||
<data name="开始执行检测设备" xml:space="preserve">
|
||||
<value>Запуск испытательного оборудования...</value>
|
||||
</data>
|
||||
<data name="开始执行读取卡片" xml:space="preserve">
|
||||
<value>Начать чтение карты...</value>
|
||||
</data>
|
||||
<data name="开始执行重置UID卡片卡号" xml:space="preserve">
|
||||
<value>Начните выполнять сброс номера карты UID ...</value>
|
||||
</data>
|
||||
<data name="当前扇区数据仍有错误_不能执行修改" xml:space="preserve">
|
||||
<value>Данные текущего сектора все еще находятся в ошибке и не могут быть изменены.</value>
|
||||
</data>
|
||||
<data name="当前选定扇区" xml:space="preserve">
|
||||
<value>Текущий выбранный сектор: ?</value>
|
||||
</data>
|
||||
<data name="当前选定扇区0" xml:space="preserve">
|
||||
<value>Текущий выбранный сектор:</value>
|
||||
</data>
|
||||
<data name="您可以上传到云计算服务节点进行计算" xml:space="preserve">
|
||||
<value>Вы можете загрузить на узел службы облачных вычислений для расчета.</value>
|
||||
</data>
|
||||
<data name="您已经运行了MifareOne_Tool_打开多个本程序可能" xml:space="preserve">
|
||||
<value>Вы уже запустили MifareOne Tool, и открытие нескольких программ может вызвать конфликты и непредсказуемые ошибки.
|
||||
Вы уверены, что хотите продолжить?</value>
|
||||
</data>
|
||||
<data name="您正在试图重复运行" xml:space="preserve">
|
||||
<value>Вы пытаетесь запустить несколько раз</value>
|
||||
</data>
|
||||
<data name="您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的" xml:space="preserve">
|
||||
<value>Вы не предоставили файл данных карты, который вызвал 0 блоков повреждения, когда последняя запись была сделана в качестве ключевого источника при записи карты.
|
||||
Операция прекращена.</value>
|
||||
</data>
|
||||
<data name="扇区" xml:space="preserve">
|
||||
<value>Cектор</value>
|
||||
</data>
|
||||
<data name="扇区0" xml:space="preserve">
|
||||
<value>сектор</value>
|
||||
</data>
|
||||
<data name="打开了" xml:space="preserve">
|
||||
<value>Открыть</value>
|
||||
</data>
|
||||
<data name="打开出错" xml:space="preserve">
|
||||
<value>Ошибка открытия</value>
|
||||
</data>
|
||||
<data name="提示信息" xml:space="preserve">
|
||||
<value>Быстрое сообщение</value>
|
||||
</data>
|
||||
<data name="文件内不是含有64个块数据_可能不完整或不兼容" xml:space="preserve">
|
||||
<value>Файл не содержит 64 блоков данных и может быть неполным или несовместимым.</value>
|
||||
</data>
|
||||
<data name="无密钥" xml:space="preserve">
|
||||
<value>Нет ключа</value>
|
||||
</data>
|
||||
<data name="无法找到MFF08程序文件_操作终止" xml:space="preserve">
|
||||
<value>Не удалось найти программный файл MFF08.
|
||||
Операция прекращена.</value>
|
||||
</data>
|
||||
<data name="显示扇区" xml:space="preserve">
|
||||
<value>Показать сектор</value>
|
||||
</data>
|
||||
<data name="有任务运行中_不可执行" xml:space="preserve">
|
||||
<value>Когда задача выполняется, она не может быть выполнена.</value>
|
||||
</data>
|
||||
<data name="未知" xml:space="preserve">
|
||||
<value>неизвестный</value>
|
||||
</data>
|
||||
<data name="未选择有效key_mfd" xml:space="preserve">
|
||||
<value>Действительный key.mfd не был выбран.</value>
|
||||
</data>
|
||||
<data name="本地版本" xml:space="preserve">
|
||||
<value>Версия - </value>
|
||||
</data>
|
||||
<data name="正在使用智能KeyABN" xml:space="preserve">
|
||||
<value>Использование Smart KeyABN ...</value>
|
||||
</data>
|
||||
<data name="正在打开ACR122U支持" xml:space="preserve">
|
||||
<value>Открытие ACR122U поддержки ...</value>
|
||||
</data>
|
||||
<data name="正在检索是否存在key_mfd" xml:space="preserve">
|
||||
<value>Поиск key.mfd ...</value>
|
||||
</data>
|
||||
<data name="没有发现任何有效的NFC设备" xml:space="preserve">
|
||||
<value>Не было обнаружено никаких активных устройств NFC.</value>
|
||||
</data>
|
||||
<data name="秒" xml:space="preserve">
|
||||
<value>второй</value>
|
||||
</data>
|
||||
<data name="空闲" xml:space="preserve">
|
||||
<value>вхолостую</value>
|
||||
</data>
|
||||
<data name="终端内容已保存至m1t_log文件" xml:space="preserve">
|
||||
<value>Содержимое терминала сохранено в файле m1t.log</value>
|
||||
</data>
|
||||
<data name="设备串口" xml:space="preserve">
|
||||
<value>Последовательный порт устройства:</value>
|
||||
</data>
|
||||
<data name="设备忙" xml:space="preserve">
|
||||
<value>Устройство занято</value>
|
||||
</data>
|
||||
<data name="设置错误_请修改" xml:space="preserve">
|
||||
<value>Неверная настройка, пожалуйста, измените ее.</value>
|
||||
</data>
|
||||
<data name="识别了以下设备" xml:space="preserve">
|
||||
<value>Определены следующие устройства:</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_已经自动为您更正" xml:space="preserve">
|
||||
<value>Значение проверки UID сектора неверно и было автоматически исправлено для вас.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_已自动更正" xml:space="preserve">
|
||||
<value>Значение проверки UID сектора неверно и было автоматически исправлено.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_请点击打开扇区0来自动更正" xml:space="preserve">
|
||||
<value>Неверное значение проверки UID сектора. Нажмите, чтобы открыть сектор 0 для автоматического исправления.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区一切正常" xml:space="preserve">
|
||||
<value>Сектор все хорошо.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位损坏_写入将会损坏卡片_已重新设置" xml:space="preserve">
|
||||
<value>Бит контроля доступа к сектору поврежден, и запись повредит карту и будет сброшена.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位损坏_写入将会损坏卡片_请重新设置" xml:space="preserve">
|
||||
<value>Бит контроля доступа к сектору поврежден, и запись повредит карту. Пожалуйста, сбросьте ее.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位无效_写入将会损坏卡片_已重新设置" xml:space="preserve">
|
||||
<value>Бит контроля доступа к сектору недействителен, запись повредит карту и будет сброшена.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位无效_写入将会损坏卡片_请重新设置" xml:space="preserve">
|
||||
<value>Недопустимый бит контроля доступа к сектору. Запись повредит карту. Пожалуйста, сбросьте ее.
|
||||
</value>
|
||||
</data>
|
||||
<data name="该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否" xml:space="preserve">
|
||||
<value>Это удалит все данные в UID-карте! ! !
|
||||
Не может быть восстановлено после опустошения! Пожалуйста, подтвердите, если вы хотите продолжить?</value>
|
||||
</data>
|
||||
<data name="该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0" xml:space="preserve">
|
||||
<value>Это заблокирует карту UFUID! ! !
|
||||
Невозможно восстановить после блокировки! Невозможно изменить 0 блоков снова! Пожалуйста, подтвердите, если вы хотите продолжить?</value>
|
||||
</data>
|
||||
<data name="该文件一切正常" xml:space="preserve">
|
||||
<value>С файлом все нормально.</value>
|
||||
</data>
|
||||
<data name="该文件存在以下错误" xml:space="preserve">
|
||||
<value>Файл имеет следующую ошибку:
|
||||
</value>
|
||||
</data>
|
||||
<data name="请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_" xml:space="preserve">
|
||||
<value>Пожалуйста, проверьте правильность подключения/драйвер правильно установлен/питание устройства включено (для моделей с выключателем питания).</value>
|
||||
</data>
|
||||
<data name="请输入UID号" xml:space="preserve">
|
||||
<value>Пожалуйста, введите номер UID</value>
|
||||
</data>
|
||||
<data name="请输入已知Key" xml:space="preserve">
|
||||
<value>Пожалуйста, введите известный ключ</value>
|
||||
</data>
|
||||
<data name="请输入已知的Key_以英文半角逗号分隔" xml:space="preserve">
|
||||
<value>Пожалуйста, введите известный ключ, разделенный запятой.</value>
|
||||
</data>
|
||||
<data name="请输入需要写入的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
|
||||
<value>Пожалуйста, введите номер карты UID для записи, всего 8 шестнадцатеричных чисел, например, E44A3BF1.</value>
|
||||
</data>
|
||||
<data name="请输入需要更改的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
|
||||
<value>Пожалуйста, введите номер карты UID для изменения, всего 8 шестнадцатеричных чисел, таких как E44A3BF1.</value>
|
||||
</data>
|
||||
<data name="请选择MCT_txt文件保存位置及文件名" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл MCT.txt, чтобы сохранить местоположение и имя файла.</value>
|
||||
</data>
|
||||
<data name="请选择MFD文件保存位置及文件名" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите место сохранения файла MFD и имя файла</value>
|
||||
</data>
|
||||
<data name="请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡" xml:space="preserve">
|
||||
<value>Выберите файл MFD, содержащий ключ целевой карты (обычно это файл MFD карты, которая была взломана)</value>
|
||||
</data>
|
||||
<data name="请选择密钥字典文件保存位置及文件名" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл словаря ключа, сохраните местоположение и имя файла</value>
|
||||
</data>
|
||||
<data name="请选择最后一次写卡导致0块损坏的卡数据文件" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл данных карты, который вызвал повреждение последней 0 карты.</value>
|
||||
</data>
|
||||
<data name="请选择需要写入的MFD文件" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл MFD для записи</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MCT格式文件" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл формата MCT, который вы хотите открыть.</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл MFD, который вы хотите открыть.</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件_比较A" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл MFD, который вы хотите открыть (сравните A)</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件_比较B" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите файл MFD, который вы хотите открыть (сравните B)</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的密钥字典文件" xml:space="preserve">
|
||||
<value>Пожалуйста, выберите ключевой файл словаря, который вы хотите открыть.</value>
|
||||
</data>
|
||||
<data name="输入的UID号不合法" xml:space="preserve">
|
||||
<value>Введенный номер UID недействителен.</value>
|
||||
</data>
|
||||
<data name="运行中" xml:space="preserve">
|
||||
<value>операция</value>
|
||||
</data>
|
||||
<data name="运行时间" xml:space="preserve">
|
||||
<value>Продолжительность:</value>
|
||||
</data>
|
||||
<data name="选择key_mfd" xml:space="preserve">
|
||||
<value>Выбрать key.mfd</value>
|
||||
</data>
|
||||
<data name="错误" xml:space="preserve">
|
||||
<value>Ошибка</value>
|
||||
</data>
|
||||
</root>
|
||||
559
MifareOneTool/Properties/Resources.zh.resx
Normal file
559
MifareOneTool/Properties/Resources.zh.resx
Normal file
@ -0,0 +1,559 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="_0_9A_Fa_f_32" xml:space="preserve">
|
||||
<value>[0-9A-Fa-f]{32}</value>
|
||||
</data>
|
||||
<data name="_Nonce收集完毕" xml:space="preserve">
|
||||
<value>##Nonce收集完毕##</value>
|
||||
</data>
|
||||
<data name="_Sector" xml:space="preserve">
|
||||
<value>+Sector: </value>
|
||||
</data>
|
||||
<data name="_个块不同" xml:space="preserve">
|
||||
<value> 个块不同
|
||||
</value>
|
||||
</data>
|
||||
<data name="_已保存" xml:space="preserve">
|
||||
<value>##已保存-</value>
|
||||
</data>
|
||||
<data name="_已自动保存" xml:space="preserve">
|
||||
<value>##已自动保存-</value>
|
||||
</data>
|
||||
<data name="_扇区" xml:space="preserve">
|
||||
<value>#扇区 </value>
|
||||
</data>
|
||||
<data name="_文件中的值错误" xml:space="preserve">
|
||||
<value>##文件中的值错误##</value>
|
||||
</data>
|
||||
<data name="_有数据" xml:space="preserve">
|
||||
<value> 有数据</value>
|
||||
</data>
|
||||
<data name="_有错误" xml:space="preserve">
|
||||
<value> 有错误</value>
|
||||
</data>
|
||||
<data name="_未保存" xml:space="preserve">
|
||||
<value>##未保存##</value>
|
||||
</data>
|
||||
<data name="_程序已被强制停止" xml:space="preserve">
|
||||
<value>##程序已被强制停止##</value>
|
||||
</data>
|
||||
<data name="_空扇区" xml:space="preserve">
|
||||
<value> 空扇区</value>
|
||||
</data>
|
||||
<data name="_缓存文件异常" xml:space="preserve">
|
||||
<value>##缓存文件异常##</value>
|
||||
</data>
|
||||
<data name="_计算得到BCC" xml:space="preserve">
|
||||
<value>,计算得到BCC=</value>
|
||||
</data>
|
||||
<data name="_软件版本" xml:space="preserve">
|
||||
<value>#软件版本 </value>
|
||||
</data>
|
||||
<data name="_运行出错" xml:space="preserve">
|
||||
<value>##运行出错##</value>
|
||||
</data>
|
||||
<data name="_运行完毕" xml:space="preserve">
|
||||
<value>##运行完毕##</value>
|
||||
</data>
|
||||
<data name="AB文件中一个或两个无效" xml:space="preserve">
|
||||
<value>AB文件中一个或两个无效。</value>
|
||||
</data>
|
||||
<data name="ACR122U支持已经打开过" xml:space="preserve">
|
||||
<value>ACR122U支持已经打开过。</value>
|
||||
</data>
|
||||
<data name="DUMP文件_dump_MFD文件_mfd" xml:space="preserve">
|
||||
<value>DUMP文件|*.dump|MFD文件|*.mfd</value>
|
||||
</data>
|
||||
<data name="Information" xml:space="preserve">
|
||||
<value>Information</value>
|
||||
</data>
|
||||
<data name="InputError" xml:space="preserve">
|
||||
<value>InputError</value>
|
||||
</data>
|
||||
<data name="KeyA_B_N" xml:space="preserve">
|
||||
<value>KeyA/B/N</value>
|
||||
</data>
|
||||
<data name="MCT格式" xml:space="preserve">
|
||||
<value>MCT格式|*.*</value>
|
||||
</data>
|
||||
<data name="MFD文件_mfd_dump" xml:space="preserve">
|
||||
<value>MFD文件|*.mfd;*.dump</value>
|
||||
</data>
|
||||
<data name="MFD文件_mfd_DUMP文件_dump" xml:space="preserve">
|
||||
<value>MFD文件|*.mfd|DUMP文件|*.dump</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool" xml:space="preserve">
|
||||
<value>MifareOne Tool</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_已取消" xml:space="preserve">
|
||||
<value>MifareOne Tool - 已取消</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_已终止" xml:space="preserve">
|
||||
<value>MifareOne Tool - 已终止</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_运行中" xml:space="preserve">
|
||||
<value>MifareOne Tool - 运行中</value>
|
||||
</data>
|
||||
<data name="MifareOne_Tool_运行完毕" xml:space="preserve">
|
||||
<value>MifareOne Tool - 运行完毕</value>
|
||||
</data>
|
||||
<data name="nfc_bin_collect_exe" xml:space="preserve">
|
||||
<value>nfc-bin/collect.exe</value>
|
||||
</data>
|
||||
<data name="res" xml:space="preserve">
|
||||
<value>。</value>
|
||||
</data>
|
||||
<data name="txt文件_txt" xml:space="preserve">
|
||||
<value>txt文件|*.txt</value>
|
||||
</data>
|
||||
<data name="UID已改为" xml:space="preserve">
|
||||
<value>UID已改为</value>
|
||||
</data>
|
||||
<data name="不恰当的4字节UID长度" xml:space="preserve">
|
||||
<value>不恰当的4字节UID长度</value>
|
||||
</data>
|
||||
<data name="使用KeyA_是_或KeyB_否" xml:space="preserve">
|
||||
<value>使用KeyA(是)或KeyB(否)?</value>
|
||||
</data>
|
||||
<data name="使用KeyA_是_或KeyB_否_还是不使用_用于全新白卡_" xml:space="preserve">
|
||||
<value>使用KeyA(是)或KeyB(否),还是不使用(用于全新白卡)(取消)?</value>
|
||||
</data>
|
||||
<data name="共找到" xml:space="preserve">
|
||||
<value>共找到 </value>
|
||||
</data>
|
||||
<data name="写入出错" xml:space="preserve">
|
||||
<value>写入出错</value>
|
||||
</data>
|
||||
<data name="加载的S50卡文件大小异常" xml:space="preserve">
|
||||
<value>加载的S50卡文件大小异常。</value>
|
||||
</data>
|
||||
<data name="加载的文件不存在" xml:space="preserve">
|
||||
<value>加载的文件不存在。</value>
|
||||
</data>
|
||||
<data name="危险操作警告" xml:space="preserve">
|
||||
<value>危险操作警告</value>
|
||||
</data>
|
||||
<data name="同时打开ACR122U支持可能会引起操作速度下降_请确认是否" xml:space="preserve">
|
||||
<value>同时打开ACR122U支持可能会引起操作速度下降。
|
||||
请确认是否要继续操作?</value>
|
||||
</data>
|
||||
<data name="字典文件_dic" xml:space="preserve">
|
||||
<value>字典文件|*.dic</value>
|
||||
</data>
|
||||
<data name="密钥字典文件_dic" xml:space="preserve">
|
||||
<value>密钥字典文件|*.dic</value>
|
||||
</data>
|
||||
<data name="将自动选择首个设备" xml:space="preserve">
|
||||
<value>将自动选择首个设备:</value>
|
||||
</data>
|
||||
<data name="将要写入的文件存在错误_请用高级模式中的Hex工具打开查看" xml:space="preserve">
|
||||
<value>将要写入的文件存在错误,请用高级模式中的Hex工具打开查看。</value>
|
||||
</data>
|
||||
<data name="已保存到" xml:space="preserve">
|
||||
<value>已保存到</value>
|
||||
</data>
|
||||
<data name="已启用CUID空卡写入补丁" xml:space="preserve">
|
||||
<value>已启用CUID空卡写入补丁</value>
|
||||
</data>
|
||||
<data name="已导出MCT文件" xml:space="preserve">
|
||||
<value>已导出MCT文件</value>
|
||||
</data>
|
||||
<data name="已导出密钥字典文件" xml:space="preserve">
|
||||
<value>已导出密钥字典文件</value>
|
||||
</data>
|
||||
<data name="已打开" xml:space="preserve">
|
||||
<value>已打开。</value>
|
||||
</data>
|
||||
<data name="已找到_K" xml:space="preserve">
|
||||
<value>已找到!K=</value>
|
||||
</data>
|
||||
<data name="已指定使用该NFC设备" xml:space="preserve">
|
||||
<value>已指定使用该NFC设备:</value>
|
||||
</data>
|
||||
<data name="已更新扇区" xml:space="preserve">
|
||||
<value>已更新扇区</value>
|
||||
</data>
|
||||
<data name="已重置并新建卡" xml:space="preserve">
|
||||
<value>已重置并新建卡。</value>
|
||||
</data>
|
||||
<data name="开始执行CUID_FUID卡片写入" xml:space="preserve">
|
||||
<value>开始执行CUID/FUID卡片写入……</value>
|
||||
</data>
|
||||
<data name="开始执行HardNested收集数据" xml:space="preserve">
|
||||
<value>开始执行HardNested收集数据……</value>
|
||||
</data>
|
||||
<data name="开始执行HardNested解密强化卡" xml:space="preserve">
|
||||
<value>开始执行HardNested解密强化卡……</value>
|
||||
</data>
|
||||
<data name="开始执行MFOC解密" xml:space="preserve">
|
||||
<value>开始执行MFOC解密……</value>
|
||||
</data>
|
||||
<data name="开始执行UFUID卡片锁定" xml:space="preserve">
|
||||
<value>开始执行UFUID卡片锁定……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片全格" xml:space="preserve">
|
||||
<value>开始执行UID卡片全格……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片写入" xml:space="preserve">
|
||||
<value>开始执行UID卡片写入……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片设定卡号" xml:space="preserve">
|
||||
<value>开始执行UID卡片设定卡号……</value>
|
||||
</data>
|
||||
<data name="开始执行UID卡片读取" xml:space="preserve">
|
||||
<value>开始执行UID卡片读取……</value>
|
||||
</data>
|
||||
<data name="开始执行全加密卡片爆破" xml:space="preserve">
|
||||
<value>开始执行全加密卡片爆破……</value>
|
||||
</data>
|
||||
<data name="开始执行写入M1卡片" xml:space="preserve">
|
||||
<value>开始执行写入M1卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行字典模式MFOC解密" xml:space="preserve">
|
||||
<value>开始执行字典模式MFOC解密……</value>
|
||||
</data>
|
||||
<data name="开始执行扫描卡片" xml:space="preserve">
|
||||
<value>开始执行扫描卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行格式化M1卡片" xml:space="preserve">
|
||||
<value>开始执行格式化M1卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行检测卡片加密" xml:space="preserve">
|
||||
<value>开始执行检测卡片加密……</value>
|
||||
</data>
|
||||
<data name="开始执行检测设备" xml:space="preserve">
|
||||
<value>开始执行检测设备……</value>
|
||||
</data>
|
||||
<data name="开始执行读取卡片" xml:space="preserve">
|
||||
<value>开始执行读取卡片……</value>
|
||||
</data>
|
||||
<data name="开始执行重置UID卡片卡号" xml:space="preserve">
|
||||
<value>开始执行重置UID卡片卡号……</value>
|
||||
</data>
|
||||
<data name="当前扇区数据仍有错误_不能执行修改" xml:space="preserve">
|
||||
<value>当前扇区数据仍有错误,不能执行修改。</value>
|
||||
</data>
|
||||
<data name="当前选定扇区" xml:space="preserve">
|
||||
<value>当前选定扇区:??</value>
|
||||
</data>
|
||||
<data name="当前选定扇区0" xml:space="preserve">
|
||||
<value>当前选定扇区:</value>
|
||||
</data>
|
||||
<data name="您可以上传到云计算服务节点进行计算" xml:space="preserve">
|
||||
<value>您可以上传到云计算服务节点进行计算。</value>
|
||||
</data>
|
||||
<data name="您已经运行了MifareOne_Tool_打开多个本程序可能" xml:space="preserve">
|
||||
<value>您已经运行了MifareOne Tool,打开多个本程序可能会造成冲突及不可预料到的错误。
|
||||
确认要继续吗?</value>
|
||||
</data>
|
||||
<data name="您正在试图重复运行" xml:space="preserve">
|
||||
<value>您正在试图重复运行</value>
|
||||
</data>
|
||||
<data name="您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的" xml:space="preserve">
|
||||
<value>您没有给定最后一次写卡导致0块损坏的卡数据文件来作为写卡时的密钥源。
|
||||
操作终止。</value>
|
||||
</data>
|
||||
<data name="扇区" xml:space="preserve">
|
||||
<value>扇区</value>
|
||||
</data>
|
||||
<data name="扇区0" xml:space="preserve">
|
||||
<value>扇区 </value>
|
||||
</data>
|
||||
<data name="打开了" xml:space="preserve">
|
||||
<value>打开了</value>
|
||||
</data>
|
||||
<data name="打开出错" xml:space="preserve">
|
||||
<value>打开出错</value>
|
||||
</data>
|
||||
<data name="提示信息" xml:space="preserve">
|
||||
<value>提示信息</value>
|
||||
</data>
|
||||
<data name="文件内不是含有64个块数据_可能不完整或不兼容" xml:space="preserve">
|
||||
<value>文件内不是含有64个块数据,可能不完整或不兼容。</value>
|
||||
</data>
|
||||
<data name="无密钥" xml:space="preserve">
|
||||
<value>无密钥</value>
|
||||
</data>
|
||||
<data name="无法找到MFF08程序文件_操作终止" xml:space="preserve">
|
||||
<value>无法找到MFF08程序文件。
|
||||
操作终止。</value>
|
||||
</data>
|
||||
<data name="显示扇区" xml:space="preserve">
|
||||
<value>显示扇区</value>
|
||||
</data>
|
||||
<data name="有任务运行中_不可执行" xml:space="preserve">
|
||||
<value>有任务运行中,不可执行。</value>
|
||||
</data>
|
||||
<data name="未知" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
</data>
|
||||
<data name="未选择有效key_mfd" xml:space="preserve">
|
||||
<value>未选择有效key.mfd。</value>
|
||||
</data>
|
||||
<data name="本地版本" xml:space="preserve">
|
||||
<value>本地版本 </value>
|
||||
</data>
|
||||
<data name="正在使用智能KeyABN" xml:space="preserve">
|
||||
<value>正在使用智能KeyABN…</value>
|
||||
</data>
|
||||
<data name="正在打开ACR122U支持" xml:space="preserve">
|
||||
<value>正在打开ACR122U支持……</value>
|
||||
</data>
|
||||
<data name="正在检索是否存在key_mfd" xml:space="preserve">
|
||||
<value>正在检索是否存在key.mfd…</value>
|
||||
</data>
|
||||
<data name="没有发现任何有效的NFC设备" xml:space="preserve">
|
||||
<value>没有发现任何有效的NFC设备。</value>
|
||||
</data>
|
||||
<data name="秒" xml:space="preserve">
|
||||
<value>秒</value>
|
||||
</data>
|
||||
<data name="空闲" xml:space="preserve">
|
||||
<value>空闲</value>
|
||||
</data>
|
||||
<data name="终端内容已保存至m1t_log文件" xml:space="preserve">
|
||||
<value>终端内容已保存至m1t.log文件</value>
|
||||
</data>
|
||||
<data name="设备串口" xml:space="preserve">
|
||||
<value>设备串口:</value>
|
||||
</data>
|
||||
<data name="设备忙" xml:space="preserve">
|
||||
<value>设备忙</value>
|
||||
</data>
|
||||
<data name="设置错误_请修改" xml:space="preserve">
|
||||
<value>设置错误,请修改。</value>
|
||||
</data>
|
||||
<data name="识别了以下设备" xml:space="preserve">
|
||||
<value>识别了以下设备:</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_已经自动为您更正" xml:space="preserve">
|
||||
<value>该扇区UID校验值错误,已经自动为您更正。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_已自动更正" xml:space="preserve">
|
||||
<value>该扇区UID校验值错误,已自动更正。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区UID校验值错误_请点击打开扇区0来自动更正" xml:space="preserve">
|
||||
<value>该扇区UID校验值错误,请点击打开扇区0来自动更正。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区一切正常" xml:space="preserve">
|
||||
<value>该扇区一切正常。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位损坏_写入将会损坏卡片_已重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位损坏,写入将会损坏卡片,已重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位损坏_写入将会损坏卡片_请重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位损坏,写入将会损坏卡片,请重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位无效_写入将会损坏卡片_已重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位无效,写入将会损坏卡片,已重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该扇区访问控制位无效_写入将会损坏卡片_请重新设置" xml:space="preserve">
|
||||
<value>该扇区访问控制位无效,写入将会损坏卡片,请重新设置。
|
||||
</value>
|
||||
</data>
|
||||
<data name="该操作将会清空UID卡内全部数据_清空后不可恢复_请确认是否" xml:space="preserve">
|
||||
<value>该操作将会清空UID卡内全部数据!!!
|
||||
清空后不可恢复!请确认是否要继续操作?</value>
|
||||
</data>
|
||||
<data name="该操作将会锁死UFUID卡片_锁死后不可恢复_无法再次更改0" xml:space="preserve">
|
||||
<value>该操作将会锁死UFUID卡片!!!
|
||||
锁死后不可恢复!无法再次更改0块!请确认是否要继续操作?</value>
|
||||
</data>
|
||||
<data name="该文件一切正常" xml:space="preserve">
|
||||
<value>该文件一切正常。</value>
|
||||
</data>
|
||||
<data name="该文件存在以下错误" xml:space="preserve">
|
||||
<value>该文件存在以下错误:
|
||||
</value>
|
||||
</data>
|
||||
<data name="请检查接线是否正确_驱动是否正常安装_设备电源是否已经打开_" xml:space="preserve">
|
||||
<value>请检查接线是否正确/驱动是否正常安装/设备电源是否已经打开(对于具有电源开关的型号)。</value>
|
||||
</data>
|
||||
<data name="请输入UID号" xml:space="preserve">
|
||||
<value>请输入UID号</value>
|
||||
</data>
|
||||
<data name="请输入已知Key" xml:space="preserve">
|
||||
<value>请输入已知Key</value>
|
||||
</data>
|
||||
<data name="请输入已知的Key_以英文半角逗号分隔" xml:space="preserve">
|
||||
<value>请输入已知的Key,以英文半角逗号分隔。</value>
|
||||
</data>
|
||||
<data name="请输入需要写入的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
|
||||
<value>请输入需要写入的UID卡号,共8位十六进制数,如E44A3BF1。</value>
|
||||
</data>
|
||||
<data name="请输入需要更改的UID卡号_共8位十六进制数_如E44A3B" xml:space="preserve">
|
||||
<value>请输入需要更改的UID卡号,共8位十六进制数,如E44A3BF1。</value>
|
||||
</data>
|
||||
<data name="请选择MCT_txt文件保存位置及文件名" xml:space="preserve">
|
||||
<value>请选择MCT.txt文件保存位置及文件名</value>
|
||||
</data>
|
||||
<data name="请选择MFD文件保存位置及文件名" xml:space="preserve">
|
||||
<value>请选择MFD文件保存位置及文件名</value>
|
||||
</data>
|
||||
<data name="请选择一个包含目标卡密钥的MFD文件_通常是已经破解出的该卡" xml:space="preserve">
|
||||
<value>请选择一个包含目标卡密钥的MFD文件(通常是已经破解出的该卡的MFD文件)</value>
|
||||
</data>
|
||||
<data name="请选择密钥字典文件保存位置及文件名" xml:space="preserve">
|
||||
<value>请选择密钥字典文件保存位置及文件名</value>
|
||||
</data>
|
||||
<data name="请选择最后一次写卡导致0块损坏的卡数据文件" xml:space="preserve">
|
||||
<value>请选择最后一次写卡导致0块损坏的卡数据文件</value>
|
||||
</data>
|
||||
<data name="请选择需要写入的MFD文件" xml:space="preserve">
|
||||
<value>请选择需要写入的MFD文件</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MCT格式文件" xml:space="preserve">
|
||||
<value>请选择需要打开的MCT格式文件</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件" xml:space="preserve">
|
||||
<value>请选择需要打开的MFD文件</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件_比较A" xml:space="preserve">
|
||||
<value>请选择需要打开的MFD文件(比较A)</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的MFD文件_比较B" xml:space="preserve">
|
||||
<value>请选择需要打开的MFD文件(比较B)</value>
|
||||
</data>
|
||||
<data name="请选择需要打开的密钥字典文件" xml:space="preserve">
|
||||
<value>请选择需要打开的密钥字典文件</value>
|
||||
</data>
|
||||
<data name="输入的UID号不合法" xml:space="preserve">
|
||||
<value>输入的UID号不合法</value>
|
||||
</data>
|
||||
<data name="运行中" xml:space="preserve">
|
||||
<value>运行中</value>
|
||||
</data>
|
||||
<data name="运行时间" xml:space="preserve">
|
||||
<value>运行时间:</value>
|
||||
</data>
|
||||
<data name="选择key_mfd" xml:space="preserve">
|
||||
<value>选择key.mfd</value>
|
||||
</data>
|
||||
<data name="错误" xml:space="preserve">
|
||||
<value>错误</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -282,5 +282,9 @@ namespace MultiLang
|
||||
StartupMode = enumStartupMode.UseDefaultCulture;
|
||||
}
|
||||
|
||||
private void LstCultures_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
1
MifareOneTool/SelectLanguage.designer.cs
generated
1
MifareOneTool/SelectLanguage.designer.cs
generated
@ -69,6 +69,7 @@ namespace MultiLang
|
||||
resources.ApplyResources(this.lstCultures, "lstCultures");
|
||||
this.lstCultures.DisplayMember = "NativeName";
|
||||
this.lstCultures.Name = "lstCultures";
|
||||
this.lstCultures.SelectedIndexChanged += new System.EventHandler(this.LstCultures_SelectedIndexChanged);
|
||||
this.lstCultures.DoubleClick += new System.EventHandler(this.btOK_Click);
|
||||
//
|
||||
// btOK
|
||||
|
||||
@ -117,27 +117,6 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btOK.Text" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="lblStartup.Text" xml:space="preserve">
|
||||
<value>Next time ...</value>
|
||||
</data>
|
||||
<data name="rbDefault.Text" xml:space="preserve">
|
||||
<value>Use the default language</value>
|
||||
</data>
|
||||
<data name="rbSelected.Text" xml:space="preserve">
|
||||
<value>Use the selected language</value>
|
||||
</data>
|
||||
<data name="rbShow.Text" xml:space="preserve">
|
||||
<value>Show this form again</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>SelectLanguage</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="rbSelected.AccessibleDescription" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
@ -165,6 +144,9 @@
|
||||
<data name="rbSelected.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="rbSelected.Text" xml:space="preserve">
|
||||
<value>Use the selected language</value>
|
||||
</data>
|
||||
<data name=">>rbSelected.Name" xml:space="preserve">
|
||||
<value>rbSelected</value>
|
||||
</data>
|
||||
@ -201,6 +183,9 @@
|
||||
<data name="rbShow.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="rbShow.Text" xml:space="preserve">
|
||||
<value>Show this form again</value>
|
||||
</data>
|
||||
<data name=">>rbShow.Name" xml:space="preserve">
|
||||
<value>rbShow</value>
|
||||
</data>
|
||||
@ -234,6 +219,9 @@
|
||||
<data name="lblStartup.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="lblStartup.Text" xml:space="preserve">
|
||||
<value>Next time ...</value>
|
||||
</data>
|
||||
<data name=">>lblStartup.Name" xml:space="preserve">
|
||||
<value>lblStartup</value>
|
||||
</data>
|
||||
@ -270,6 +258,9 @@
|
||||
<data name="rbDefault.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="rbDefault.Text" xml:space="preserve">
|
||||
<value>Use the default language</value>
|
||||
</data>
|
||||
<data name=">>rbDefault.Name" xml:space="preserve">
|
||||
<value>rbDefault</value>
|
||||
</data>
|
||||
@ -342,6 +333,9 @@
|
||||
<data name="btOK.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="btOK.Text" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name=">>btOK.Name" xml:space="preserve">
|
||||
<value>btOK</value>
|
||||
</data>
|
||||
@ -384,6 +378,9 @@
|
||||
<data name=">>Panel1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>9, 20</value>
|
||||
</data>
|
||||
@ -396,6 +393,9 @@
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterScreen</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>SelectLanguage</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>SelectLanguage</value>
|
||||
</data>
|
||||
|
||||
@ -1,138 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btOK.Text" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="lblStartup.Text" xml:space="preserve">
|
||||
<value>Next time ...</value>
|
||||
</data>
|
||||
<data name="rbDefault.Text" xml:space="preserve">
|
||||
<value>Use the default language</value>
|
||||
</data>
|
||||
<data name="rbSelected.Text" xml:space="preserve">
|
||||
<value>Use the selected language</value>
|
||||
</data>
|
||||
<data name="rbShow.Text" xml:space="preserve">
|
||||
<value>Show this form again</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>SelectLanguage</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -2105,7 +2105,7 @@
|
||||
<OriginalText />
|
||||
<SortKey>FormHTool.cs</SortKey>
|
||||
<NodeType>0</NodeType>
|
||||
<Expanded>false</Expanded>
|
||||
<Expanded>true</Expanded>
|
||||
<ItemLevel>0</ItemLevel>
|
||||
<ArrayIndexOrCount>-1</ArrayIndexOrCount>
|
||||
<CompilerName />
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user