Compare commits

...

19 Commits
v1.6.6 ... dev

Author SHA1 Message Date
XAS-712
4f90995afe small changes 2019-05-17 23:16:24 +08:00
0x10
2bc6a8da40
Merge pull request #19 from Semen8991/beta
New Material design
2019-05-12 22:41:29 +08:00
Semen8991
eef1619efb new material design 2019-05-12 17:26:04 +03:00
Semen8991
cbf0397656 added program language switch 2019-05-11 16:29:09 +03:00
Semen8991
b8f9f9fe65 autosize support for integrated tools 2019-05-10 15:34:21 +03:00
0x10
454aa14884
Merge pull request #18 from Semen8991/beta
Support autosize program for any languages
2019-05-10 06:37:03 +08:00
Semen8991
da9ebfb8aa update of the Russian language and minor bug fixes 2019-05-09 19:45:33 +03:00
Semen8991
a69909f320 support autosize program for any languages 2019-05-09 15:37:50 +03:00
0x10
b1f20c195c
Update README.md 2019-05-09 19:26:32 +08:00
0x10
8470dc66c8
Merge pull request #17 from Semen8991/test
russian tranlate
2019-05-08 21:49:53 +08:00
Semen8991
9887b82c63 russian tranlate 2019-05-08 15:05:50 +03:00
XAS-712
cdcbd66770 emmmmm 2019-05-01 22:48:08 +08:00
XAS-712
839992040b fix *n
修复字典测试后无法保存问题
修复字典测试字典路径有空格出错问题
加入MFF08工具
添加多处提示
2019-05-01 22:34:09 +08:00
XAS-712
5b6f8193d3 Merge branch 'master' of https://github.com/xcicode/MifareOneTool 2019-05-01 10:17:32 +08:00
XAS-712
d7a4918b49 emmmmm 2019-05-01 10:17:24 +08:00
0x10
be440ee79d
fix text mistake 2019-04-28 22:26:02 +08:00
0x10
a4efd1f0f5
fix com>9 bug for detecting device 2019-04-27 09:03:16 +08:00
XAS-712
ccfa0b5456 try to fix CUID empty write bug 2019-04-16 21:07:38 +08:00
XAS-712
aa4d65a068 Update Form1.cs 2019-03-23 23:39:01 +08:00
61 changed files with 43014 additions and 1544 deletions

View File

@ -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.4UID长度); }
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.4UID长度); }
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]));

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -13,6 +14,7 @@ using System.Text.RegularExpressions;
using Microsoft.VisualBasic;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Globalization;
namespace MifareOneTool
{
@ -20,6 +22,8 @@ namespace MifareOneTool
{
public Form1()
{
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(Properties.Settings.Default.Language);
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(Properties.Settings.Default.Language);
InitializeComponent();
}
@ -29,8 +33,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 +51,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)
@ -55,7 +59,8 @@ namespace MifareOneTool
if (e.ProgressPercentage == 100)
{
logAppend((string)e.UserState);
Text = "MifareOne Tool - 运行完毕";
logAppend("");
Text = Resources.MifareOne_Tool_运行完毕;
}
else if (e.ProgressPercentage == 101)
{
@ -71,12 +76,12 @@ namespace MifareOneTool
File.Delete(filename);
}
File.Move(omfd, filename);
logAppend("##已自动保存-" + filename + "##");
logAppend(Resources._已自动保存 + filename + "##");
}
else
{
File.Delete(omfd);
logAppend("##缓存文件异常##");
logAppend(Resources._缓存文件异常);
}
lastuid = "";
}
@ -85,9 +90,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)
@ -97,34 +102,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 = "";
Text = "MifareOne Tool - 运行完毕";
logAppend("");
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)
{
@ -132,19 +139,23 @@ namespace MifareOneTool
}
if (myReaders.Count > 0)
{
logAppend("将自动选择首个设备:" + myReaders.First());
logAppend(Resources. + myReaders.First());
writeConfig(myReaders.First());
SetDeviceCombo.Items.Clear();
SetDeviceCombo.Items.AddRange(myReaders.ToArray());
SetDeviceCombo.SelectedIndex = 0;
}
else
{
logAppend(Resources.NFC设备);
logAppend(Resources.线_驱动是否正常安装_设备电源是否已经打开_);
}
}
else
{
logAppend((string)e.UserState);
}
Application.DoEvents();
}
private void logAppend(string msg)
@ -163,7 +174,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
b.ReportProgress(0, Resources.); running = true;
List<string> myReader = new List<string>();
process.OutputDataReceived += (s, _e) =>
{
@ -172,7 +184,7 @@ namespace MifareOneTool
{
if (!string.IsNullOrEmpty(_e.Data))
{
Match m = Regex.Match(_e.Data, "pn532_uart:COM\\d:115200");
Match m = Regex.Match(_e.Data, "pn532_uart:COM\\d+:115200");
if (m.Success)
{
myReader.Add(m.Value);
@ -188,16 +200,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();
//GitHubUpdate ghu = new GitHubUpdate(Properties.Settings.Default.GitHubR);
//ghu.Update(Properties.Settings.Default.GitHubR);
//remoteVersionLabel.Text = "远程版本 " + ghu.remoteVersion;
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;
@ -207,11 +216,13 @@ namespace MifareOneTool
checkBoxDefIsAdv.Checked = Properties.Settings.Default.DefIsAdv;
checkBoxHardLowCost.Checked = Properties.Settings.Default.HardLowCost;
checkBoxNewScan.Checked = Properties.Settings.Default.NewScan;
checkBoxCuidKeyOver.Checked = Properties.Settings.Default.CuidKeyOver;
if (Properties.Settings.Default.DefIsAdv)
{
tabControl1.SelectedIndex = 1;
}
//File.Delete("libnfc.conf");//用户COM口一般不常变化
checkBoxMultiDev.Checked = Properties.Settings.Default.MultiMode;
if (Properties.Settings.Default.MultiMode)
{
if (File.Exists("libnfc.conf"))
@ -221,7 +232,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\"", "");
}
}
}
@ -230,7 +241,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;
@ -248,7 +259,9 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -256,7 +269,7 @@ namespace MifareOneTool
process.BeginErrorReadLine();
process.WaitForExit();
lprocess = false; running = false;
b.ReportProgress(100, "##运行完毕##");
b.ReportProgress(100, Resources._运行完毕);
}
string omfd = "";
@ -291,14 +304,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;
@ -311,7 +324,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 = "";
@ -328,11 +341,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";
@ -368,7 +381,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -378,11 +392,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]);
}
}
@ -400,8 +414,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)
{
@ -411,7 +425,7 @@ namespace MifareOneTool
else
{
keymfd = "";
buttonSelectKey.Text = "选择key.mfd";
buttonSelectKey.Text = Resources.key_mfd;
}
}
@ -426,7 +440,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)
@ -441,12 +455,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)
{
@ -456,17 +470,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";
@ -500,7 +514,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -508,17 +523,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);
@ -556,7 +571,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -566,18 +582,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;
@ -610,7 +626,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -618,13 +635,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);
@ -647,7 +664,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -655,12 +673,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)
{
@ -686,7 +704,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -696,23 +715,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)
{
@ -745,7 +764,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -753,7 +773,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)
@ -765,22 +785,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();
@ -801,7 +821,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -809,13 +830,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;
@ -825,26 +846,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, 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)
{
@ -854,17 +878,26 @@ 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;
string uid = GetUID();
S50 empty = new S50(Utils.Hex2Block(uid, 4));
empty.ExportToMfd("cuid_empty.kmf");
keymfd = "cuid_empty.kmf";
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";
@ -898,7 +931,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -906,7 +940,13 @@ namespace MifareOneTool
process.BeginErrorReadLine();
process.WaitForExit();
lprocess = false; running = false;
b.ReportProgress(100, "##运行完毕##");
if (cuidKeyOver == true)
{
keymfd = "";
cuidKeyOver = false;
File.Delete("cuid_empty.kmf");
}
b.ReportProgress(100, Resources._运行完毕);
}
private void buttonKill_Click(object sender, EventArgs e)
@ -916,16 +956,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);
@ -941,14 +981,15 @@ namespace MifareOneTool
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] uid = new byte[4];
rng.GetNonZeroBytes(uid);
psi.Arguments = "-l";
psi.Arguments = "-q -l";
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -956,23 +997,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";
@ -999,7 +1040,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -1007,7 +1049,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)
@ -1027,10 +1069,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)
@ -1087,48 +1129,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);
@ -1160,7 +1202,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -1171,11 +1214,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._运行出错);
}
}
@ -1203,10 +1246,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);
@ -1233,7 +1276,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)
//{
@ -1242,8 +1285,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)
{
@ -1251,11 +1294,11 @@ namespace MifareOneTool
}
else
{
Text = "MifareOne Tool - 已取消";
Text = Resources.MifareOne_Tool_已取消;
return;
}
string rmfd = "Mfoc.tmp";
string key = "-f " + filename + " ";
string key = "-f \"" + filename + "\" ";
if (checkBoxAutoSave.Checked)
{
lastuid = GetUID();
@ -1282,16 +1325,17 @@ namespace MifareOneTool
psi.Arguments = "/T:0A " + args[2] + @" nfc-bin\mfoc.exe " + args[1] + " -O \"" + args[0] + "\"";
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
b.ReportProgress(0, Resources.MFOC解密); running = true;
process.WaitForExit();
lprocess = false; running = false;
if (process.ExitCode == 0)
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]);
}
}
@ -1318,7 +1362,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)
{
@ -1339,7 +1383,7 @@ namespace MifareOneTool
}
else
{
Text = "MifareOne Tool - 已取消";
Text = Resources.MifareOne_Tool_已取消;
}
}
void Hardnest(object sender, DoWorkEventArgs e)
@ -1357,7 +1401,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -1367,18 +1412,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;
@ -1386,7 +1431,8 @@ namespace MifareOneTool
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
process = Process.Start(psi); running = true;
process = Process.Start(psi);
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;
@ -1396,11 +1442,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._运行出错);
}
}
@ -1463,7 +1509,7 @@ namespace MifareOneTool
if (SetDeviceCombo.SelectedIndex >= 0)
{
writeConfig(SetDeviceCombo.SelectedItem.ToString());
logAppend("已指定使用该NFC设备" + SetDeviceCombo.SelectedItem.ToString());
logAppend(Resources.使NFC设备 + SetDeviceCombo.SelectedItem.ToString());
}
}
@ -1471,5 +1517,37 @@ namespace MifareOneTool
{
Properties.Settings.Default.MultiMode = checkBoxMultiDev.Checked;
}
private void checkBoxCuidKeyOver_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.CuidKeyOver = checkBoxCuidKeyOver.Checked;
}
private void buttonMFF08_Click(object sender, EventArgs e)
{
FormMFF08 mff08 = new FormMFF08();
mff08.ShowDialog();
}
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedItem.ToString() == Resources.)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-cn");
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("zh-cn");
Properties.Settings.Default.Language = "zh-cn";
Properties.Settings.Default.Save();
Application.Restart();
}
else if (comboBox1.SelectedItem.ToString() == Resources.)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ru-RU");
Properties.Settings.Default.Language = "ru-RU";
Properties.Settings.Default.Save();
Application.Restart();
}
}
}
}

File diff suppressed because it is too large Load Diff

2121
MifareOneTool/Form1.ru.resx Normal file

File diff suppressed because it is too large Load Diff

1607
MifareOneTool/Form1.zh.resx Normal file

File diff suppressed because it is too large Load Diff

View File

@ -28,72 +28,87 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDiff));
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
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;
resources.ApplyResources(this.richTextBox1, "richTextBox1");
this.richTextBox1.ForeColor = System.Drawing.Color.Orange;
this.richTextBox1.Location = new System.Drawing.Point(12, 74);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;
this.richTextBox1.Size = new System.Drawing.Size(469, 474);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "欢迎使用M1T内置的差异工具\n说明\n点击上方的AB两个按键分别选择MFD文件。\n然后点击“比较”即可看到结果。\n";
this.richTextBox1.TextChanged += new System.EventHandler(this.RichTextBox1_TextChanged);
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 12);
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(388, 25);
this.button1.TabIndex = 1;
this.button1.Text = "A";
this.button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(12, 43);
resources.ApplyResources(this.button2, "button2");
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(388, 25);
this.button2.TabIndex = 2;
this.button2.Text = "B";
this.button2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.Location = new System.Drawing.Point(406, 12);
resources.ApplyResources(this.button3, "button3");
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(75, 56);
this.button3.TabIndex = 3;
this.button3.Text = "比较";
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;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(493, 560);
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.Text = "DiffTool";
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();
}
@ -103,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;
}
}

View File

@ -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)
{
}
}
}

View File

@ -117,4 +117,284 @@
<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>
</data>
<data name="button2.Text" xml:space="preserve">
<value>B</value>
</data>
<data name="button3.Text" xml:space="preserve">
<value>比较</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>DiffTool</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具</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>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</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.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>
<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="richTextBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 3, 2, 3</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>348, 221</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="&gt;&gt;richTextBox1.Name" xml:space="preserve">
<value>richTextBox1</value>
</data>
<data name="&gt;&gt;richTextBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;richTextBox1.Parent" xml:space="preserve">
<value>flowLayoutPanel2</value>
</data>
<data name="&gt;&gt;richTextBox1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 3</value>
</data>
<data name="button1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 3, 2, 3</value>
</data>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>291, 21</value>
</data>
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="button1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 30</value>
</data>
<data name="button2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 3, 2, 3</value>
</data>
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
<value>291, 21</value>
</data>
<data name="button2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="button2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;button2.Name" xml:space="preserve">
<value>button2</value>
</data>
<data name="&gt;&gt;button2.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button2.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;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>303, 3</value>
</data>
<data name="button3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 3, 2, 3</value>
</data>
<data name="button3.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 54</value>
</data>
<data name="button3.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;button3.Name" xml:space="preserve">
<value>button3</value>
</data>
<data name="&gt;&gt;button3.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>flowLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</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="&gt;&gt;flowLayoutPanel2.Name" xml:space="preserve">
<value>flowLayoutPanel2</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;flowLayoutPanel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;flowLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<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>370, 456</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 3, 2, 3</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormDiff</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,150 @@
<?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="button1.Text" xml:space="preserve">
<value>A</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>В</value>
</data>
<data name="button3.Text" xml:space="preserve">
<value>Сравнить</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Сравнение дампов</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>Добро пожаловать во встроенный инструмент различий M1T!</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>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>Добро пожаловать во встроенный инструмент сравнения дампов!
Описание:
1. Нажмите А или В, чтобы выбрать файл MFD.
2. Нажмите «Сравнить», чтобы увидеть результаты.</value>
</data>
</root>

View File

@ -0,0 +1,151 @@
<?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="button1.Text" xml:space="preserve">
<value>A</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>B</value>
</data>
<data name="button3.Text" xml:space="preserve">
<value>比较</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>DiffTool</value>
</data>
<data name="richTextBox1.Lines[0]" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具</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>
</data>
<data name="richTextBox1.Text" xml:space="preserve">
<value>欢迎使用M1T内置的差异工具
说明:
点击上方的AB两个按键分别选择MFD文件。
然后点击“比较”即可看到结果。
</value>
</data>
</root>

View File

@ -29,6 +29,7 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormHTool));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -74,26 +75,35 @@
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();
//
// menuStrip1
//
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
resources.ApplyResources(this.menuStrip1, "menuStrip1");
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(628, 25);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
@ -105,53 +115,41 @@
this.toolStripSeparator1,
this.退ToolStripMenuItem});
this.ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Text = "文件";
resources.ApplyResources(this.ToolStripMenuItem, "文件ToolStripMenuItem");
//
// 新建ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "新建ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "新建";
resources.ApplyResources(this.ToolStripMenuItem, "新建ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 打开ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "打开ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "打开";
resources.ApplyResources(this.ToolStripMenuItem, "打开ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 保存ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "保存ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "保存";
resources.ApplyResources(this.ToolStripMenuItem, "保存ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 另存为ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "另存为ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.ToolStripMenuItem.Text = "另存为";
resources.ApplyResources(this.ToolStripMenuItem, "另存为ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(187, 6);
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// 退出ToolStripMenuItem
//
this.退ToolStripMenuItem.Name = "退出ToolStripMenuItem";
this.退ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X)));
this.退ToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
this.退ToolStripMenuItem.Text = "退出";
resources.ApplyResources(this.退ToolStripMenuItem, "退出ToolStripMenuItem");
this.退ToolStripMenuItem.Click += new System.EventHandler(this.退ToolStripMenuItem_Click);
//
// 工具ToolStripMenuItem
@ -168,91 +166,71 @@
this.toolStripSeparator4,
this.ToolStripMenuItem});
this.ToolStripMenuItem.Name = "工具ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Text = "工具";
resources.ApplyResources(this.ToolStripMenuItem, "工具ToolStripMenuItem");
//
// 修改UIDToolStripMenuItem
//
this.UIDToolStripMenuItem.Name = "修改UIDToolStripMenuItem";
this.UIDToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U)));
this.UIDToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.UIDToolStripMenuItem.Text = "修改UID";
resources.ApplyResources(this.UIDToolStripMenuItem, "修改UIDToolStripMenuItem");
this.UIDToolStripMenuItem.Click += new System.EventHandler(this.UIDToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(209, 6);
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
//
// 检查全卡ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "检查全卡ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.J)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "检查全卡";
resources.ApplyResources(this.ToolStripMenuItem, "检查全卡ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 检查并纠正全卡ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "检查并纠正全卡ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.K)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "检查并纠正全卡";
resources.ApplyResources(this.ToolStripMenuItem, "检查并纠正全卡ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(209, 6);
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
//
// 导入MCT格式ToolStripMenuItem
//
this.MCT格式ToolStripMenuItem.Name = "导入MCT格式ToolStripMenuItem";
this.MCT格式ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.L)));
this.MCT格式ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.MCT格式ToolStripMenuItem.Text = "导入MCT格式";
resources.ApplyResources(this.MCT格式ToolStripMenuItem, "导入MCT格式ToolStripMenuItem");
this.MCT格式ToolStripMenuItem.Click += new System.EventHandler(this.MCT格式ToolStripMenuItem_Click);
//
// 导出为MCT格式ToolStripMenuItem
//
this.MCT格式ToolStripMenuItem.Name = "导出为MCT格式ToolStripMenuItem";
this.MCT格式ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.M)));
this.MCT格式ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.MCT格式ToolStripMenuItem.Text = "导出为MCT格式";
resources.ApplyResources(this.MCT格式ToolStripMenuItem, "导出为MCT格式ToolStripMenuItem");
this.MCT格式ToolStripMenuItem.Click += new System.EventHandler(this.MCT格式ToolStripMenuItem_Click);
//
// 导出密钥字典ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "导出密钥字典ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "导出密钥字典";
resources.ApplyResources(this.ToolStripMenuItem, "导出密钥字典ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(209, 6);
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
//
// 列出全卡密钥ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "列出全卡密钥ToolStripMenuItem";
this.ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I)));
this.ToolStripMenuItem.Size = new System.Drawing.Size(212, 22);
this.ToolStripMenuItem.Text = "列出全卡密钥";
resources.ApplyResources(this.ToolStripMenuItem, "列出全卡密钥ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.dataGridView1);
this.groupBox1.Location = new System.Drawing.Point(9, 25);
this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox1.Size = new System.Drawing.Size(188, 327);
this.groupBox1.TabIndex = 1;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "扇区列表";
//
// dataGridView1
//
@ -264,68 +242,34 @@
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1});
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
resources.ApplyResources(this.dataGridView1, "dataGridView1");
this.dataGridView1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;
this.dataGridView1.Location = new System.Drawing.Point(2, 16);
this.dataGridView1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowHeadersWidth = 20;
this.dataGridView1.RowTemplate.Height = 27;
this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.Size = new System.Drawing.Size(184, 309);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
//
// Column1
//
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Column1.HeaderText = "扇区";
resources.ApplyResources(this.Column1, "Column1");
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// 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);
this.groupBox2.Location = new System.Drawing.Point(201, 25);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.tableLayoutPanel2);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox2.Size = new System.Drawing.Size(219, 327);
this.groupBox2.TabIndex = 2;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "扇区信息";
//
// buttonSaveSectorEdit
//
this.buttonSaveSectorEdit.Location = new System.Drawing.Point(110, 13);
this.buttonSaveSectorEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.buttonSaveSectorEdit, "buttonSaveSectorEdit");
this.buttonSaveSectorEdit.Name = "buttonSaveSectorEdit";
this.buttonSaveSectorEdit.Size = new System.Drawing.Size(104, 20);
this.buttonSaveSectorEdit.TabIndex = 20;
this.buttonSaveSectorEdit.Text = "修改扇区(Enter)";
this.buttonSaveSectorEdit.UseVisualStyleBackColor = true;
this.buttonSaveSectorEdit.Click += new System.EventHandler(this.buttonSaveSectorEdit_Click);
//
@ -335,19 +279,16 @@
this.comboBox4.DropDownWidth = 400;
this.comboBox4.FormattingEnabled = true;
this.comboBox4.Items.AddRange(new object[] {
"[不可逆]KeyA:A写/AC:A只读/KeyB:A读写",
"KeyA:A写/AC:A读写/KeyB:A读写",
"[不可逆]KeyA:不能读写/AC:A只读/KeyB:A读",
"KeyA:B写/AC:A只读B读写/KeyB:B写",
"[不可逆]KeyA:B写/AC:AB只读/KeyB:B写",
"KeyA:不能读写/AC:A只读B读写/KeyB:不能读写",
"[不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写",
"[不可逆]KeyA:不能读写/AC:AB只读/KeyB:不能读写(重复了?)"});
this.comboBox4.Location = new System.Drawing.Point(4, 303);
this.comboBox4.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.GetString("comboBox4.Items"),
resources.GetString("comboBox4.Items1"),
resources.GetString("comboBox4.Items2"),
resources.GetString("comboBox4.Items3"),
resources.GetString("comboBox4.Items4"),
resources.GetString("comboBox4.Items5"),
resources.GetString("comboBox4.Items6"),
resources.GetString("comboBox4.Items7")});
resources.ApplyResources(this.comboBox4, "comboBox4");
this.comboBox4.Name = "comboBox4";
this.comboBox4.Size = new System.Drawing.Size(211, 20);
this.comboBox4.TabIndex = 19;
this.comboBox4.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox3
@ -355,19 +296,16 @@
this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox3.FormattingEnabled = true;
this.comboBox3.Items.AddRange(new object[] {
"KeyAB读写及增减值",
"[只读]KeyAB读及减值/不可写及增值",
"[只读]KeyAB读/不可写及增减值",
"KeyB读写/不可增减值",
"KeyAB读/KeyB写/不可增减值",
"[只读]KeyB读/不可写及增减值",
"KeyAB读及减值/KeyB写及增值",
"[只读]锁死该扇区"});
this.comboBox3.Location = new System.Drawing.Point(4, 268);
this.comboBox3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.GetString("comboBox3.Items"),
resources.GetString("comboBox3.Items1"),
resources.GetString("comboBox3.Items2"),
resources.GetString("comboBox3.Items3"),
resources.GetString("comboBox3.Items4"),
resources.GetString("comboBox3.Items5"),
resources.GetString("comboBox3.Items6"),
resources.GetString("comboBox3.Items7")});
resources.ApplyResources(this.comboBox3, "comboBox3");
this.comboBox3.Name = "comboBox3";
this.comboBox3.Size = new System.Drawing.Size(211, 20);
this.comboBox3.TabIndex = 18;
this.comboBox3.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox2
@ -375,19 +313,16 @@
this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Items.AddRange(new object[] {
"KeyAB读写及增减值",
"[只读]KeyAB读及减值/不可写及增值",
"[只读]KeyAB读/不可写及增减值",
"KeyB读写/不可增减值",
"KeyAB读/KeyB写/不可增减值",
"[只读]KeyB读/不可写及增减值",
"KeyAB读及减值/KeyB写及增值",
"[只读]锁死该扇区"});
this.comboBox2.Location = new System.Drawing.Point(4, 233);
this.comboBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.GetString("comboBox2.Items"),
resources.GetString("comboBox2.Items1"),
resources.GetString("comboBox2.Items2"),
resources.GetString("comboBox2.Items3"),
resources.GetString("comboBox2.Items4"),
resources.GetString("comboBox2.Items5"),
resources.GetString("comboBox2.Items6"),
resources.GetString("comboBox2.Items7")});
resources.ApplyResources(this.comboBox2, "comboBox2");
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(211, 20);
this.comboBox2.TabIndex = 17;
this.comboBox2.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox1
@ -395,191 +330,170 @@
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"KeyAB读写及增减值",
"[只读]KeyAB读及减值/不可写及增值",
"[只读]KeyAB读/不可写及增减值",
"KeyB读写/不可增减值",
"KeyAB读/KeyB写/不可增减值",
"[只读]KeyB读/不可写及增减值",
"KeyAB读及减值/KeyB写及增值",
"[只读]锁死该扇区"});
this.comboBox1.Location = new System.Drawing.Point(4, 198);
this.comboBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.GetString("comboBox1.Items"),
resources.GetString("comboBox1.Items1"),
resources.GetString("comboBox1.Items2"),
resources.GetString("comboBox1.Items3"),
resources.GetString("comboBox1.Items4"),
resources.GetString("comboBox1.Items5"),
resources.GetString("comboBox1.Items6"),
resources.GetString("comboBox1.Items7")});
resources.ApplyResources(this.comboBox1, "comboBox1");
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(211, 20);
this.comboBox1.TabIndex = 16;
this.comboBox1.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(2, 289);
this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label9, "label9");
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(89, 12);
this.label9.TabIndex = 15;
this.label9.Text = "Key/ACbits权限";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(4, 254);
this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label8, "label8");
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(47, 12);
this.label8.TabIndex = 14;
this.label8.Text = "2块权限";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(2, 218);
this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label7, "label7");
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(47, 12);
this.label7.TabIndex = 13;
this.label7.Text = "1块权限";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(4, 183);
this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(47, 12);
this.label6.TabIndex = 12;
this.label6.Text = "0块权限";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(124, 146);
this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label5, "label5");
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(29, 12);
this.label5.TabIndex = 11;
this.label5.Text = "KeyB";
//
// keyBEdit
//
this.keyBEdit.Location = new System.Drawing.Point(124, 161);
this.keyBEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.keyBEdit, "keyBEdit");
this.keyBEdit.Name = "keyBEdit";
this.keyBEdit.Size = new System.Drawing.Size(91, 21);
this.keyBEdit.TabIndex = 10;
this.keyBEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// keyAEdit
//
this.keyAEdit.Location = new System.Drawing.Point(4, 161);
this.keyAEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.keyAEdit, "keyAEdit");
this.keyAEdit.Name = "keyAEdit";
this.keyAEdit.Size = new System.Drawing.Size(91, 21);
this.keyAEdit.TabIndex = 9;
this.keyAEdit.TextChanged += new System.EventHandler(this.keyAEdit_TextChanged);
this.keyAEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// block2Edit
//
this.block2Edit.Location = new System.Drawing.Point(4, 124);
this.block2Edit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.block2Edit, "block2Edit");
this.block2Edit.Name = "block2Edit";
this.block2Edit.Size = new System.Drawing.Size(211, 21);
this.block2Edit.TabIndex = 8;
this.block2Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(4, 146);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
this.label4.TabIndex = 7;
this.label4.Text = "KeyA";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(4, 110);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(35, 12);
this.label3.TabIndex = 5;
this.label3.Text = "第2块";
//
// block1Edit
//
this.block1Edit.Location = new System.Drawing.Point(4, 87);
this.block1Edit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.block1Edit, "block1Edit");
this.block1Edit.Name = "block1Edit";
this.block1Edit.Size = new System.Drawing.Size(211, 21);
this.block1Edit.TabIndex = 4;
this.block1Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(4, 73);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(35, 12);
this.label2.TabIndex = 3;
this.label2.Text = "第1块";
//
// block0Edit
//
this.block0Edit.Location = new System.Drawing.Point(4, 50);
this.block0Edit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.block0Edit, "block0Edit");
this.block0Edit.Name = "block0Edit";
this.block0Edit.Size = new System.Drawing.Size(211, 21);
this.block0Edit.TabIndex = 2;
this.block0Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(4, 36);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 12);
this.label1.TabIndex = 1;
this.label1.Text = "第0块";
//
// labelCurSec
//
this.labelCurSec.AutoSize = true;
this.labelCurSec.Location = new System.Drawing.Point(4, 17);
this.labelCurSec.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.labelCurSec, "labelCurSec");
this.labelCurSec.Name = "labelCurSec";
this.labelCurSec.Size = new System.Drawing.Size(113, 12);
this.labelCurSec.TabIndex = 0;
this.labelCurSec.Text = "当前选定扇区:??";
//
// groupBox3
//
resources.ApplyResources(this.groupBox3, "groupBox3");
this.groupBox3.Controls.Add(this.richTextBox1);
this.groupBox3.Location = new System.Drawing.Point(424, 25);
this.groupBox3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox3.Size = new System.Drawing.Size(195, 327);
this.groupBox3.TabIndex = 3;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "输出";
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.Color.Black;
this.richTextBox1.ForeColor = System.Drawing.Color.Cyan;
this.richTextBox1.Location = new System.Drawing.Point(4, 19);
this.richTextBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.richTextBox1, "richTextBox1");
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.richTextBox1.Size = new System.Drawing.Size(187, 304);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "欢迎使用M1T的集成编辑器S50HTool\n打开文件请点左上角文件-打开或Ctrl+O\n";
//
// 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
//
@ -588,19 +502,14 @@
// FormHTool
//
this.AcceptButton = this.buttonSaveSectorEdit;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(628, 362);
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;
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.MaximizeBox = false;
this.Name = "FormHTool";
this.Text = "S50HTool-beta";
this.Load += new System.EventHandler(this.FormHTool_Load);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
@ -609,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();
@ -663,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;
}
}

View File

@ -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

View File

@ -0,0 +1,317 @@
<?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="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>Ключ A</value>
</data>
<data name="label5.Text" xml:space="preserve">
<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>

View File

@ -0,0 +1,320 @@
<?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="buttonSaveSectorEdit.Text" xml:space="preserve">
<value>修改扇区(Enter)</value>
</data>
<data name="Column1.HeaderText" xml:space="preserve">
<value>扇区</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:A写/AC:A只读/KeyB:A读写</value>
</data>
<data name="comboBox4.Items1" xml:space="preserve">
<value>KeyA:A写/AC:A读写/KeyB:A读写</value>
</data>
<data name="comboBox4.Items2" xml:space="preserve">
<value>[不可逆]KeyA:不能读写/AC:A只读/KeyB:A读</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>S50HTool-beta</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>
</data>
<data name="label5.Text" xml:space="preserve">
<value>KeyB</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>Key/ACbits权限</value>
</data>
<data name="labelCurSec.Text" xml:space="preserve">
<value>当前选定扇区:??</value>
</data>
<data name="menuStrip1.Text" xml:space="preserve">
<value>menuStrip1</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>欢迎使用M1T的集成编辑器S50HTool
打开文件请点左上角文件-打开或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>

View File

@ -28,6 +28,7 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormHardNes));
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
@ -46,237 +47,210 @@
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
//
this.button1.Location = new System.Drawing.Point(231, 150);
this.button1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(56, 20);
this.button1.TabIndex = 0;
this.button1.Text = "执行!";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
resources.ApplyResources(this.button2, "button2");
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.button2.Location = new System.Drawing.Point(170, 150);
this.button2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(56, 20);
this.button2.TabIndex = 1;
this.button2.Text = "取消";
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);
this.groupBox1.Location = new System.Drawing.Point(9, 10);
this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.tableLayoutPanel1);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox1.Size = new System.Drawing.Size(278, 65);
this.groupBox1.TabIndex = 2;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "目标卡-已知信息";
//
// radioKey1B
//
this.radioKey1B.AutoSize = true;
this.radioKey1B.Location = new System.Drawing.Point(194, 32);
this.radioKey1B.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.radioKey1B, "radioKey1B");
this.radioKey1B.Name = "radioKey1B";
this.radioKey1B.Size = new System.Drawing.Size(47, 16);
this.radioKey1B.TabIndex = 15;
this.radioKey1B.Text = "KeyB";
this.radioKey1B.UseVisualStyleBackColor = true;
//
// radioKey1A
//
this.radioKey1A.AutoSize = true;
resources.ApplyResources(this.radioKey1A, "radioKey1A");
this.radioKey1A.Checked = true;
this.radioKey1A.Location = new System.Drawing.Point(145, 32);
this.radioKey1A.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.radioKey1A.Name = "radioKey1A";
this.radioKey1A.Size = new System.Drawing.Size(47, 16);
this.radioKey1A.TabIndex = 14;
this.radioKey1A.TabStop = true;
this.radioKey1A.Text = "KeyA";
this.radioKey1A.UseVisualStyleBackColor = true;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(142, 17);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
this.label4.TabIndex = 13;
this.label4.Text = "类型";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(99, 17);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 12);
this.label3.TabIndex = 12;
this.label3.Text = "扇区号";
//
// sector1
//
this.sector1.Location = new System.Drawing.Point(101, 31);
this.sector1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.sector1, "sector1");
this.sector1.Name = "sector1";
this.sector1.Size = new System.Drawing.Size(36, 21);
this.sector1.TabIndex = 11;
this.sector1.Text = "0";
//
// keyEdit
//
this.keyEdit.Location = new System.Drawing.Point(7, 31);
this.keyEdit.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.keyEdit, "keyEdit");
this.keyEdit.Name = "keyEdit";
this.keyEdit.Size = new System.Drawing.Size(91, 21);
this.keyEdit.TabIndex = 10;
this.keyEdit.Text = "ffffffffffff";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(4, 17);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(59, 12);
this.label2.TabIndex = 0;
this.label2.Text = "已知的Key";
//
// label1
//
this.label1.AutoSize = true;
resources.ApplyResources(this.label1, "label1");
this.label1.ForeColor = System.Drawing.Color.Blue;
this.label1.Location = new System.Drawing.Point(9, 154);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(161, 12);
this.label1.TabIndex = 3;
this.label1.Text = "连续工作时请注意设备散热!";
//
// radioKey2B
//
this.radioKey2B.AutoSize = true;
this.radioKey2B.Location = new System.Drawing.Point(194, 32);
this.radioKey2B.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.radioKey2B, "radioKey2B");
this.radioKey2B.Name = "radioKey2B";
this.radioKey2B.Size = new System.Drawing.Size(47, 16);
this.radioKey2B.TabIndex = 15;
this.radioKey2B.Text = "KeyB";
this.radioKey2B.UseVisualStyleBackColor = true;
//
// radioKey2A
//
this.radioKey2A.AutoSize = true;
resources.ApplyResources(this.radioKey2A, "radioKey2A");
this.radioKey2A.Checked = true;
this.radioKey2A.Location = new System.Drawing.Point(145, 32);
this.radioKey2A.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.radioKey2A.Name = "radioKey2A";
this.radioKey2A.Size = new System.Drawing.Size(47, 16);
this.radioKey2A.TabIndex = 14;
this.radioKey2A.TabStop = true;
this.radioKey2A.Text = "KeyA";
this.radioKey2A.UseVisualStyleBackColor = true;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(142, 17);
this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label5, "label5");
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(29, 12);
this.label5.TabIndex = 13;
this.label5.Text = "类型";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(99, 17);
this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(41, 12);
this.label6.TabIndex = 12;
this.label6.Text = "扇区号";
//
// 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);
this.groupBox2.Location = new System.Drawing.Point(9, 79);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.tableLayoutPanel4);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.groupBox2.Size = new System.Drawing.Size(278, 65);
this.groupBox2.TabIndex = 16;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "目标扇区解密设置";
//
// checkBoxColOnly
//
this.checkBoxColOnly.AutoSize = true;
this.checkBoxColOnly.Location = new System.Drawing.Point(5, 19);
this.checkBoxColOnly.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.checkBoxColOnly, "checkBoxColOnly");
this.checkBoxColOnly.Name = "checkBoxColOnly";
this.checkBoxColOnly.Size = new System.Drawing.Size(96, 16);
this.checkBoxColOnly.TabIndex = 17;
this.checkBoxColOnly.Text = "只采集不计算";
this.checkBoxColOnly.UseVisualStyleBackColor = true;
//
// sector2
//
this.sector2.Location = new System.Drawing.Point(101, 31);
this.sector2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
resources.ApplyResources(this.sector2, "sector2");
this.sector2.Name = "sector2";
this.sector2.Size = new System.Drawing.Size(36, 21);
this.sector2.TabIndex = 11;
//
// 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;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.button2;
this.ClientSize = new System.Drawing.Size(296, 179);
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.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormHardNes";
this.Text = "初始化HardNested解密";
this.groupBox1.ResumeLayout(false);
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();
@ -302,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;
}
}

View File

@ -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;

View File

@ -117,4 +117,805 @@
<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>执行!</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="checkBoxColOnly.Text" xml:space="preserve">
<value>只采集不计算</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>初始化HardNested解密</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>目标卡-已知信息</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>目标扇区解密设置</value>
</data>
<data name="keyEdit.Lines[0]" xml:space="preserve">
<value>ffffffffffff</value>
</data>
<data name="keyEdit.Text" xml:space="preserve">
<value>ffffffffffff</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>连续工作时请注意设备散热!</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>已知的Key</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>类型</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>扇区号</value>
</data>
<data name="radioKey1A.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="radioKey1B.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="radioKey2A.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="radioKey2B.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="sector1.Lines[0]" xml:space="preserve">
<value>0</value>
</data>
<data name="sector1.Text" 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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="button1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>64, 3</value>
</data>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 30</value>
</data>
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve">
<value>tableLayoutPanel5</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="button2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="button2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 30</value>
</data>
<data name="button2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;button2.Name" xml:space="preserve">
<value>button2</value>
</data>
<data name="&gt;&gt;button2.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button2.Parent" xml:space="preserve">
<value>tableLayoutPanel5</value>
</data>
<data name="&gt;&gt;button2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="groupBox1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="radioKey1B" Row="1" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="radioKey1A" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="keyEdit" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label4" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="label3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="sector1" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>438, 77</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radioKey1B.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioKey1B.Location" type="System.Drawing.Point, System.Drawing">
<value>283, 23</value>
</data>
<data name="radioKey1B.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 24</value>
</data>
<data name="radioKey1B.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;radioKey1B.Name" xml:space="preserve">
<value>radioKey1B</value>
</data>
<data name="&gt;&gt;radioKey1B.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioKey1B.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;radioKey1B.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radioKey1A.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioKey1A.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 23</value>
</data>
<data name="radioKey1A.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 24</value>
</data>
<data name="radioKey1A.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;radioKey1A.Name" xml:space="preserve">
<value>radioKey1A</value>
</data>
<data name="&gt;&gt;radioKey1A.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioKey1A.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;radioKey1A.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 0</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 20</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="label4.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 0</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 20</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="sector1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="sector1.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 23</value>
</data>
<data name="sector1.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 26</value>
</data>
<data name="sector1.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;sector1.Name" xml:space="preserve">
<value>sector1</value>
</data>
<data name="&gt;&gt;sector1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;sector1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;sector1.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="keyEdit.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="keyEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 23</value>
</data>
<data name="keyEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>134, 26</value>
</data>
<data name="keyEdit.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;keyEdit.Name" xml:space="preserve">
<value>keyEdit</value>
</data>
<data name="&gt;&gt;keyEdit.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;keyEdit.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;keyEdit.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>134, 20</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 42</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radioKey2B.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioKey2B.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 23</value>
</data>
<data name="radioKey2B.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 24</value>
</data>
<data name="radioKey2B.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;radioKey2B.Name" xml:space="preserve">
<value>radioKey2B</value>
</data>
<data name="&gt;&gt;radioKey2B.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioKey2B.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;radioKey2B.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radioKey2A.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioKey2A.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 23</value>
</data>
<data name="radioKey2A.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 24</value>
</data>
<data name="radioKey2A.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;radioKey2A.Name" xml:space="preserve">
<value>radioKey2A</value>
</data>
<data name="&gt;&gt;radioKey2A.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioKey2A.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;radioKey2A.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label5.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
<value>66, 0</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 20</value>
</data>
<data name="label5.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="label5.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label5.Name" xml:space="preserve">
<value>label5</value>
</data>
<data name="&gt;&gt;label5.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label5.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label6.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 20</value>
</data>
<data name="label6.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="label6.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label6.Name" xml:space="preserve">
<value>label6</value>
</data>
<data name="&gt;&gt;label6.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label6.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="groupBox2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="groupBox2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;tableLayoutPanel4.Name" xml:space="preserve">
<value>tableLayoutPanel4</value>
</data>
<data name="&gt;&gt;tableLayoutPanel4.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="&gt;&gt;tableLayoutPanel4.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel4.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel4.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="tableLayoutPanel2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="checkBoxColOnly" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 86</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>438, 83</value>
</data>
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;groupBox2.Name" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;groupBox2.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox2.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="checkBoxColOnly.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkBoxColOnly.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="checkBoxColOnly.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="checkBoxColOnly.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 52</value>
</data>
<data name="checkBoxColOnly.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;checkBoxColOnly.Name" xml:space="preserve">
<value>checkBoxColOnly</value>
</data>
<data name="&gt;&gt;checkBoxColOnly.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBoxColOnly.Parent" xml:space="preserve">
<value>tableLayoutPanel4</value>
</data>
<data name="&gt;&gt;checkBoxColOnly.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="sector2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="sector2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 23</value>
</data>
<data name="sector2.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 26</value>
</data>
<data name="sector2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;sector2.Name" xml:space="preserve">
<value>sector2</value>
</data>
<data name="&gt;&gt;sector2.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;sector2.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;sector2.ZOrder" xml:space="preserve">
<value>4</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>4</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, 22</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>432, 52</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>140, 3</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>289, 52</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel4</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="radioKey2B" Row="1" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="radioKey2A" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="label6" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label5" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="sector2" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanel3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel3.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel3.ColumnCount" type="System.Int32, mscorlib">
<value>1</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="tableLayoutPanel5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel5.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel5.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel5.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Right</value>
</data>
<data name="tableLayoutPanel5.Location" type="System.Drawing.Point, System.Drawing">
<value>226, 3</value>
</data>
<data name="tableLayoutPanel5.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel5.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 36</value>
</data>
<data name="tableLayoutPanel5.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;tableLayoutPanel5.Name" xml:space="preserve">
<value>tableLayoutPanel5</value>
</data>
<data name="&gt;&gt;tableLayoutPanel5.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="&gt;&gt;tableLayoutPanel5.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel5.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel5.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="button2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="button1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,50,Percent,50" /&gt;&lt;Rows Styles="Percent,50" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 175</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>438, 120</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel3.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel3.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel3.Size" type="System.Drawing.Size, System.Drawing">
<value>444, 298</value>
</data>
<data name="tableLayoutPanel3.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Name" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.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="&gt;&gt;tableLayoutPanel3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel3.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="groupBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutPanel1" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="groupBox2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanel4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel4.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel4.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel4.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 22</value>
</data>
<data name="tableLayoutPanel4.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel4.Size" type="System.Drawing.Size, System.Drawing">
<value>432, 58</value>
</data>
<data name="tableLayoutPanel4.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>9, 20</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>444, 298</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormHardNes</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,176 @@
<?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="button1.Text" xml:space="preserve">
<value>Начать!</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="checkBoxColOnly.Text" xml:space="preserve">
<value>Только сбор
не засчитывается</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Расшифровка HardNested</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Известная информция о карте</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>Настройка расшифровки сектора</value>
</data>
<data name="keyEdit.Lines[0]" xml:space="preserve">
<value>FFFFFFFFFFFF</value>
</data>
<data name="keyEdit.Text" xml:space="preserve">
<value>FFFFFFFFFFFF</value>
</data>
<data name="label1.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>Тип ключа</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Номер сектора</value>
</data>
<data name="radioKey1A.Text" xml:space="preserve">
<value>Ключ A</value>
</data>
<data name="radioKey1B.Text" xml:space="preserve">
<value>Ключ B</value>
</data>
<data name="radioKey2A.Text" xml:space="preserve">
<value>Ключ A</value>
</data>
<data name="radioKey2B.Text" xml:space="preserve">
<value>Ключ B</value>
</data>
</root>

View File

@ -0,0 +1,180 @@
<?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="button1.Text" xml:space="preserve">
<value>执行!</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>取消</value>
</data>
<data name="checkBoxColOnly.Text" xml:space="preserve">
<value>只采集不计算</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>初始化HardNested解密</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>目标卡-已知信息</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>目标扇区解密设置</value>
</data>
<data name="keyEdit.Lines[0]" xml:space="preserve">
<value>ffffffffffff</value>
</data>
<data name="keyEdit.Text" xml:space="preserve">
<value>ffffffffffff</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>连续工作时请注意设备散热!</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>已知的Key</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>类型</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>扇区号</value>
</data>
<data name="radioKey1A.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="radioKey1B.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="radioKey2A.Text" xml:space="preserve">
<value>KeyA</value>
</data>
<data name="radioKey2B.Text" xml:space="preserve">
<value>KeyB</value>
</data>
<data name="sector1.Lines[0]" xml:space="preserve">
<value>0</value>
</data>
<data name="sector1.Text" xml:space="preserve">
<value>0</value>
</data>
</root>

160
MifareOneTool/FormMFF08.Designer.cs generated Normal file
View File

@ -0,0 +1,160 @@
namespace MifareOneTool
{
partial class FormMFF08
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMFF08));
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.buttonClr = new System.Windows.Forms.Button();
this.buttonLoadKey = new System.Windows.Forms.Button();
this.keyfileBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.buttonKeyWrite = new System.Windows.Forms.Button();
this.buttonWriteEmpty = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.logBox = new System.Windows.Forms.RichTextBox();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.Controls.Add(this.label1);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.ForeColor = System.Drawing.Color.Blue;
this.label1.Name = "label1";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.buttonClr);
this.groupBox2.Controls.Add(this.buttonLoadKey);
this.groupBox2.Controls.Add(this.keyfileBox);
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.buttonKeyWrite);
this.groupBox2.Controls.Add(this.buttonWriteEmpty);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
// buttonClr
//
resources.ApplyResources(this.buttonClr, "buttonClr");
this.buttonClr.Name = "buttonClr";
this.buttonClr.UseVisualStyleBackColor = true;
this.buttonClr.Click += new System.EventHandler(this.buttonClr_Click);
//
// buttonLoadKey
//
resources.ApplyResources(this.buttonLoadKey, "buttonLoadKey");
this.buttonLoadKey.Name = "buttonLoadKey";
this.buttonLoadKey.UseVisualStyleBackColor = true;
this.buttonLoadKey.Click += new System.EventHandler(this.buttonLoadKey_Click);
//
// keyfileBox
//
resources.ApplyResources(this.keyfileBox, "keyfileBox");
this.keyfileBox.Name = "keyfileBox";
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// buttonKeyWrite
//
resources.ApplyResources(this.buttonKeyWrite, "buttonKeyWrite");
this.buttonKeyWrite.Name = "buttonKeyWrite";
this.buttonKeyWrite.UseVisualStyleBackColor = true;
this.buttonKeyWrite.Click += new System.EventHandler(this.buttonKeyWrite_Click);
//
// buttonWriteEmpty
//
resources.ApplyResources(this.buttonWriteEmpty, "buttonWriteEmpty");
this.buttonWriteEmpty.Name = "buttonWriteEmpty";
this.buttonWriteEmpty.UseVisualStyleBackColor = true;
this.buttonWriteEmpty.Click += new System.EventHandler(this.buttonWriteEmpty_Click);
//
// groupBox3
//
this.groupBox3.Controls.Add(this.logBox);
resources.ApplyResources(this.groupBox3, "groupBox3");
this.groupBox3.Name = "groupBox3";
this.groupBox3.TabStop = false;
//
// logBox
//
this.logBox.BackColor = System.Drawing.Color.Black;
resources.ApplyResources(this.logBox, "logBox");
this.logBox.ForeColor = System.Drawing.Color.Gold;
this.logBox.Name = "logBox";
this.logBox.ReadOnly = true;
//
// FormMFF08
//
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.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.Name = "FormMFF08";
this.Load += new System.EventHandler(this.FormMFF08_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button buttonLoadKey;
private System.Windows.Forms.TextBox keyfileBox;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button buttonKeyWrite;
private System.Windows.Forms.Button buttonWriteEmpty;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.RichTextBox logBox;
private System.Windows.Forms.Button buttonClr;
}
}

133
MifareOneTool/FormMFF08.cs Normal file
View File

@ -0,0 +1,133 @@
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace MifareOneTool
{
public partial class FormMFF08 : Form
{
public FormMFF08()
{
InitializeComponent();
}
private void buttonLoadKey_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
ofd.Title = Resources.0;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
keyfileBox.Text = ofd.FileName;
}
}
private void buttonClr_Click(object sender, EventArgs e)
{
keyfileBox.Text = "";
}
bool lprocess = false;
Process process;
private void logAppend(string msg)
{
logBox.AppendText(msg + "\n");
logBox.ScrollToCaret();
}
void default_rpt(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 100)
{
logAppend((string)e.UserState);
groupBox2.Enabled = true;
}
else if (e.ProgressPercentage == 1)
{
groupBox2.Enabled = false;
}
else
{
logAppend((string)e.UserState);
}
Application.DoEvents();
}
private void buttonWriteEmpty_Click(object sender, EventArgs e)
{
if (lprocess) { MessageBox.Show(Resources._不可执行, Resources., MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
S50 empty = new S50();
empty.ExportToMfd("mff08_empty.kmf");
BackgroundWorker bgw = new BackgroundWorker();
bgw.DoWork += new DoWorkEventHandler(cmf_write);
bgw.WorkerReportsProgress = true;
bgw.ProgressChanged += new ProgressChangedEventHandler(default_rpt);
bgw.RunWorkerAsync(new string[] { "mff08_empty.kmf", "A", "x", "" });
}
void cmf_write(object sender, DoWorkEventArgs e)
{
if (lprocess) { return; }
ProcessStartInfo psi = new ProcessStartInfo("nfc-bin/mff08.exe");
string[] args = (string[])e.Argument;
psi.Arguments = "c " + args[1] + " u \"" + args[0] + "\"";
if (args[3] != "" && args[2] == "")
{
psi.Arguments += " \"" + args[3] + "\" f";
}
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
lprocess = true;
BackgroundWorker b = (BackgroundWorker)sender;
b.ReportProgress(1);
process = Process.Start(psi);
process.OutputDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
process.ErrorDataReceived += (s, _e) => b.ReportProgress(0, _e.Data);
//StreamReader stderr = process.StandardError;
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
lprocess = false;
b.ReportProgress(100, Resources._运行完毕);
}
private void buttonKeyWrite_Click(object sender, EventArgs e)
{
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(Resources.0, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
BackgroundWorker bgw = new BackgroundWorker();
bgw.DoWork += new DoWorkEventHandler(cmf_write);
bgw.WorkerReportsProgress = true;
bgw.ProgressChanged += new ProgressChangedEventHandler(default_rpt);
bgw.RunWorkerAsync(new string[] { "mff08_empty.kmf", "C", "", keyfileBox.Text });
}
private void FormMFF08_Load(object sender, EventArgs e)
{
if (!File.Exists("nfc-bin/mff08.exe"))
{
MessageBox.Show(Resources.MFF08程序文件_操作终止, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

View File

@ -0,0 +1,491 @@
<?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="buttonClr.Text" xml:space="preserve">
<value>清除</value>
</data>
<data name="buttonKeyWrite.Text" xml:space="preserve">
<value>修复写入
有密码
CUID卡</value>
</data>
<data name="buttonLoadKey.Text" xml:space="preserve">
<value>加载…</value>
</data>
<data name="buttonWriteEmpty.Text" xml:space="preserve">
<value>修复写入
无密空白
CUID卡</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>MFF08 Tool-CUID修复工具</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>本工具由nfc-mfclassic做少许修改而来。可用于1K大小CUID卡0块损坏的修复。
本工具可以修复SAK写错不认卡类型、ATQA写错不认卡大小对于BCC写错暂时无能为力。
请准备好你最后一次写入该卡导致0块损坏的卡数据文件如果卡片有加密。</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>最后一次写卡导致0块损坏的卡数据文件</value>
</data>
<data name="logBox.Lines[0]" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。</value>
</data>
<data name="logBox.Lines[1]" xml:space="preserve">
<value>比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。</value>
</data>
<data name="logBox.Lines[2]" xml:space="preserve">
<value>MFF08工具给了你一次修复这些损坏卡片的机会。</value>
</data>
<data name="logBox.Lines[3]" xml:space="preserve">
<value>------------------------------------------------------------------------</value>
</data>
<data name="logBox.Text" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</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="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label1.Font" type="System.Drawing.Font, System.Drawing">
<value>SimSun, 9.5pt</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 28</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>850, 57</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 20</value>
</data>
<data name="groupBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 167</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="buttonClr.Location" type="System.Drawing.Point, System.Drawing">
<value>878, 55</value>
</data>
<data name="buttonClr.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonClr.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 38</value>
</data>
<data name="buttonClr.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;buttonClr.Name" xml:space="preserve">
<value>buttonClr</value>
</data>
<data name="&gt;&gt;buttonClr.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonClr.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonClr.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="buttonLoadKey.Location" type="System.Drawing.Point, System.Drawing">
<value>756, 55</value>
</data>
<data name="buttonLoadKey.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonLoadKey.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 38</value>
</data>
<data name="buttonLoadKey.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;buttonLoadKey.Name" xml:space="preserve">
<value>buttonLoadKey</value>
</data>
<data name="&gt;&gt;buttonLoadKey.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonLoadKey.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonLoadKey.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="keyfileBox.Location" type="System.Drawing.Point, System.Drawing">
<value>356, 58</value>
</data>
<data name="keyfileBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="keyfileBox.Size" type="System.Drawing.Size, System.Drawing">
<value>390, 26</value>
</data>
<data name="keyfileBox.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;keyfileBox.Name" xml:space="preserve">
<value>keyfileBox</value>
</data>
<data name="&gt;&gt;keyfileBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;keyfileBox.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;keyfileBox.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>352, 33</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>298, 20</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="buttonKeyWrite.Font" type="System.Drawing.Font, System.Drawing">
<value>SimSun, 11.25pt, style=Bold</value>
</data>
<data name="buttonKeyWrite.Location" type="System.Drawing.Point, System.Drawing">
<value>182, 33</value>
</data>
<data name="buttonKeyWrite.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonKeyWrite.Size" type="System.Drawing.Size, System.Drawing">
<value>124, 123</value>
</data>
<data name="buttonKeyWrite.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.Name" xml:space="preserve">
<value>buttonKeyWrite</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonKeyWrite.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="buttonWriteEmpty.Font" type="System.Drawing.Font, System.Drawing">
<value>SimSun, 11.25pt, style=Bold</value>
</data>
<data name="buttonWriteEmpty.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 33</value>
</data>
<data name="buttonWriteEmpty.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="buttonWriteEmpty.Size" type="System.Drawing.Size, System.Drawing">
<value>124, 123</value>
</data>
<data name="buttonWriteEmpty.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.Name" xml:space="preserve">
<value>buttonWriteEmpty</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.Parent" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;buttonWriteEmpty.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 197</value>
</data>
<data name="groupBox2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 167</value>
</data>
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;groupBox2.Name" xml:space="preserve">
<value>groupBox2</value>
</data>
<data name="&gt;&gt;groupBox2.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="logBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="logBox.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 24</value>
</data>
<data name="logBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="logBox.ScrollBars" type="System.Windows.Forms.RichTextBoxScrollBars, System.Windows.Forms">
<value>ForcedVertical</value>
</data>
<data name="logBox.Size" type="System.Drawing.Size, System.Drawing">
<value>944, 284</value>
</data>
<data name="logBox.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;logBox.Name" xml:space="preserve">
<value>logBox</value>
</data>
<data name="&gt;&gt;logBox.Type" xml:space="preserve">
<value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;logBox.Parent" xml:space="preserve">
<value>groupBox3</value>
</data>
<data name="&gt;&gt;logBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 373</value>
</data>
<data name="groupBox3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox3.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 313</value>
</data>
<data name="groupBox3.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;groupBox3.Name" xml:space="preserve">
<value>groupBox3</value>
</data>
<data name="&gt;&gt;groupBox3.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>9, 20</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>988, 707</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 5, 4, 5</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormMFF08</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,176 @@
<?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="buttonClr.Text" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="buttonKeyWrite.Text" xml:space="preserve">
<value>Ремонт написать
Есть пароль
CUID карта</value>
</data>
<data name="buttonLoadKey.Text" xml:space="preserve">
<value>Loading ...</value>
</data>
<data name="buttonWriteEmpty.Text" xml:space="preserve">
<value>Ремонт написать
Нет секретного бланка
CUID карта</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>MFF08 Tool-CUID Ремонт инструмента</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>Этот инструмент был слегка изменен с помощью nfc-mfclassic. Может быть использован для ремонта 0U блока карты размера 1K.
Этот инструмент можно починить: неверный SAK (не распознанный тип карты), неправильный ATQA (не распознанный размер карты) и BCC невозможно записать неправильно.
Пожалуйста, подготовьте файл данных карты, который вызвал последние 0 повреждений карты (если карта зашифрована).</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>В последний раз при записи карты получено 0 поврежденных файлов данных карты:</value>
</data>
<data name="logBox.Lines[0]" xml:space="preserve">
<value>Когда все используют карту CUID, они всегда делают маленькие ошибки, потому что они не понимают или непреднамеренно.</value>
</data>
<data name="logBox.Lines[1]" xml:space="preserve">
<value>Например, если редактор используется для изменения UID, но BCC не изменяется, файл, дешифрованный картой SAK = 28, записывается напрямую или данные импортируются с карты S70 на карту 1K, но ATQA не исправляется.</value>
</data>
<data name="logBox.Lines[2]" xml:space="preserve">
<value>Инструмент MFF08 дает вам возможность исправить эти поврежденные карты сразу.</value>
</data>
<data name="logBox.Lines[3]" xml:space="preserve">
<value>-------------------------------------------------- ----------------------</value>
</data>
<data name="logBox.Text" xml:space="preserve">
<value>Когда все используют карту CUID, они всегда делают маленькие ошибки, потому что они не понимают или непреднамеренно.
Например, если редактор используется для изменения UID, но BCC не изменяется, файл, дешифрованный картой SAK = 28, записывается напрямую или данные импортируются с карты S70 на карту 1K, но ATQA не исправляется.
Инструмент MFF08 дает вам возможность исправить эти поврежденные карты сразу.
-------------------------------------------------- ----------------------
</value>
</data>
</root>

View File

@ -0,0 +1,176 @@
<?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="buttonClr.Text" xml:space="preserve">
<value>清除</value>
</data>
<data name="buttonKeyWrite.Text" xml:space="preserve">
<value>修复写入
有密码
CUID卡</value>
</data>
<data name="buttonLoadKey.Text" xml:space="preserve">
<value>加载…</value>
</data>
<data name="buttonWriteEmpty.Text" xml:space="preserve">
<value>修复写入
无密空白
CUID卡</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>MFF08 Tool-CUID修复工具</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>本工具由nfc-mfclassic做少许修改而来。可用于1K大小CUID卡0块损坏的修复。
本工具可以修复SAK写错不认卡类型、ATQA写错不认卡大小对于BCC写错暂时无能为力。
请准备好你最后一次写入该卡导致0块损坏的卡数据文件如果卡片有加密。</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>最后一次写卡导致0块损坏的卡数据文件</value>
</data>
<data name="logBox.Lines[0]" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。</value>
</data>
<data name="logBox.Lines[1]" xml:space="preserve">
<value>比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。</value>
</data>
<data name="logBox.Lines[2]" xml:space="preserve">
<value>MFF08工具给了你一次修复这些损坏卡片的机会。</value>
</data>
<data name="logBox.Lines[3]" xml:space="preserve">
<value>------------------------------------------------------------------------</value>
</data>
<data name="logBox.Text" xml:space="preserve">
<value>每个人使用CUID卡的时候总会因不了解或是不经意犯下一些小错误。
比如使用编辑器修改UID却没有改BCCSAK=28的卡片解密后的文件直接写入又或是从S70卡片导入数据写入1K卡却没有更正ATQA。
MFF08工具给了你一次修复这些损坏卡片的机会。
------------------------------------------------------------------------
</value>
</data>
</root>

View File

@ -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

View File

@ -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>
@ -95,30 +95,76 @@
<Compile Include="FormHTool.Designer.cs">
<DependentUpon>FormHTool.cs</DependentUpon>
</Compile>
<Compile Include="FormMFF08.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormMFF08.Designer.cs">
<DependentUpon>FormMFF08.cs</DependentUpon>
</Compile>
<Compile Include="GitHubUpdate.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.ru.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.zh.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDiff.resx">
<DependentUpon>FormDiff.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDiff.ru.resx">
<DependentUpon>FormDiff.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDiff.zh.resx">
<DependentUpon>FormDiff.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHardNes.resx">
<DependentUpon>FormHardNes.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHardNes.ru.resx">
<DependentUpon>FormHardNes.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHardNes.zh.resx">
<DependentUpon>FormHardNes.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHTool.resx">
<DependentUpon>FormHTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHTool.ru.resx">
<DependentUpon>FormHTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHTool.zh.resx">
<DependentUpon>FormHTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMFF08.resx">
<DependentUpon>FormMFF08.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMFF08.ru.resx">
<DependentUpon>FormMFF08.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMFF08.zh.resx">
<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="Properties\Resources.ru.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.zh.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@ -153,7 +199,25 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="MifareOneTool_ml.xml" />
<Content Include="nfc_128.ico" />
<None Include="Resources\round_sync_black_18pt_1x.png" />
<None Include="Resources\outline_info_black_18pt_1x.png" />
<None Include="Resources\round_info_black_18pt_1x.png" />
<None Include="Resources\round_timer_black_18pt_1x.png" />
<None Include="Resources\round_update_black_18pt_1x.png" />
<None Include="Resources\round_update_black_24pt_1x.png" />
<None Include="Resources\round_done_black_48pt_1x.png" />
<None Include="Resources\round_done_black_24pt_1x.png" />
<None Include="Resources\round_done_outline_black_24pt_1x.png" />
<None Include="Resources\round_done_all_black_24pt_1x.png" />
<None Include="Resources\round_done_all_black_36pt_1x.png" />
<None Include="Resources\round_done_all_black_18pt_1x.png" />
<None Include="Resources\round_done_all_black_18pt_2x.png" />
<None Include="Resources\round_clear_black_24dp.png" />
<None Include="Resources\round_done_all_black_36dp.png" />
<None Include="Resources\round_done_all_black_24dp.png" />
<None Include="Resources\round_chevron_right_black_24dp.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
using System;
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
@ -34,7 +35,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);

View File

@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("XciCode")]
[assembly: AssemblyProduct("MifareOneTool")]
[assembly: AssemblyCopyright("Copyright © XciCode 2018")]
[assembly: AssemblyCopyright("Copyright © XciCode 2018-2019")]
[assembly: AssemblyTrademark("M1T")]
[assembly: AssemblyCulture("")]
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.6.6.0")]
[assembly: AssemblyFileVersion("1.6.6.0")]
[assembly: AssemblyVersion("1.7.0.0")]
[assembly: AssemblyFileVersion("1.7.0.0")]

File diff suppressed because it is too large Load Diff

View File

@ -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,494 @@
<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="写入出错" 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="标准" 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>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="round_chevron_right_black_24dp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_chevron_right_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_clear_black_24dp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_clear_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_all_black_24dp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_all_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="outline_info_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\outline_info_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_all_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_all_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_all_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_all_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_done_outline_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_done_outline_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_info_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_info_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_sync_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_sync_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_timer_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_timer_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_update_black_18pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_update_black_18pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="round_update_black_24pt_1x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\round_update_black_24pt_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,556 @@
<?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="写入出错" 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="标准" 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>

View File

@ -0,0 +1,565 @@
<?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="写入出错" 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="标准" 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>

View File

@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
@ -12,7 +12,7 @@ namespace MifareOneTool.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@ -58,7 +58,7 @@ namespace MifareOneTool.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool AutoLoadUidKey {
get {
return ((bool)(this["AutoLoadUidKey"]));
@ -163,5 +163,29 @@ namespace MifareOneTool.Properties {
this["MultiMode"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool CuidKeyOver {
get {
return ((bool)(this["CuidKeyOver"]));
}
set {
this["CuidKeyOver"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string Language {
get {
return ((string)(this["Language"]));
}
set {
this["Language"] = value;
}
}
}
}

View File

@ -12,7 +12,7 @@
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="AutoLoadUidKey" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="MainCLIColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">192, 255, 255</Value>
@ -38,5 +38,11 @@
<Setting Name="MultiMode" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CuidKeyOver" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="Language" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

View File

@ -0,0 +1,286 @@
using MultiLang;
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Reflection;
using System.Globalization;
using System.IO;
using System.IO.IsolatedStorage;
using System.Threading;
using System.Text;
using System.Xml;
using System.Collections.Generic;
namespace MultiLang
{
public partial class SelectLanguage : Form
{
public SelectLanguage()
{
InitializeComponent();
}
//----------------------------------------------
//Enums
//----------------------------------------------
public enum enumStartupMode
{
UseDefaultCulture = 0,
UseSavedCulture = 1,
ShowDialog = 2
}
private enum enumCultureMatch
{
None = 0,
Language = 1,
Neutral = 2,
Region = 3
}
//----------------------------------------------
//Member Variables
//----------------------------------------------
private enumStartupMode StartupMode;
private CultureInfo SelectedCulture;
// The array of supported cultures is updated automatically by Multi-Language for Visual Studio
private static string[] SupportedCultures = { "ru", "zh" } ; //MLHIDE
//----------------------------------------------
//Public Methods
//----------------------------------------------
public void LoadSettingsAndShow()
{
LoadSettingsAndShow(false);
}
public void LoadSettingsAndShow(Boolean ForceShow)
{
LoadSettings();
if (ForceShow || (StartupMode == enumStartupMode.ShowDialog))
{
this.ShowDialog();
if (lstCultures.SelectedItem != null)
{
SelectedCulture = (CultureInfo)lstCultures.SelectedItem;
}
SaveSettings();
}
if (StartupMode != enumStartupMode.UseDefaultCulture)
{
if (SelectedCulture != null)
{
// Actually change the culture of the current thread.
Thread.CurrentThread.CurrentUICulture = SelectedCulture;
if (ForceShow)
{
#if true
// The code generated by VS.NET cannot be used to change the
// language of an active form. Show a message to this effect.
MessageBox.Show("The settings have been saved.\n" +
"The language change will take full effect the next time you start the program.",
"Select language",
MessageBoxButtons.OK);
#else
MLRuntime.MLRuntime.BroadcastLanguageChanged() ;
#endif
}
}
}
}
//----------------------------------------------
//Private Methods
//----------------------------------------------
//
// SaveSettings and LoadSettings use an XML file, saved in so called
// Isolated Storage.
//
// I'm not convinced that this is really the best way or the best place
// to store this information, but it's certainly a .NET way to do it.
//
private void LoadSettings()
{
// Set the defaults
StartupMode = enumStartupMode.ShowDialog;
SelectedCulture = Thread.CurrentThread.CurrentUICulture;
// Create an IsolatedStorageFile object and get the store
// for this application.
IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForDomain();
// Check whether the file exists
if (isoStorage.GetFileNames("CultureSettings.xml").Length > 0) //MLHIDE
{
// Create isoStorage StreamReader.
StreamReader stmReader = new StreamReader
(new IsolatedStorageFileStream
("CultureSettings.xml",
FileMode.Open,
isoStorage)); //MLHIDE
XmlTextReader xmlReader = new XmlTextReader(stmReader);
// Loop through the XML file until all Nodes have been read and processed.
while (xmlReader.Read())
{
switch (xmlReader.Name)
{
case "StartupMode": //MLHIDE
StartupMode = (enumStartupMode)int.Parse(xmlReader.ReadString());
break;
case "Culture": //MLHIDE
String CultName = xmlReader.ReadString();
CultureInfo CultInfo = new CultureInfo(CultName);
SelectedCulture = CultInfo;
break;
}
}
// Close the reader
xmlReader.Close();
stmReader.Close();
}
isoStorage.Close();
}
private void SaveSettings()
{
// Get an isolated store for user, domain, and assembly and put it into
// an IsolatedStorageFile object.
IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForDomain();
// Create isoStorage StreamWriter and assign it to an XmlTextWriter variable.
IsolatedStorageFileStream stmWriter = new IsolatedStorageFileStream("CultureSettings.xml", FileMode.Create, isoStorage); //MLHIDE
XmlTextWriter writer = new XmlTextWriter(stmWriter, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("CultureSettings"); //MLHIDE
writer.WriteStartElement("StartupMode"); //MLHIDE
writer.WriteString(((int)StartupMode).ToString());
writer.WriteEndElement();
writer.WriteStartElement("Culture"); //MLHIDE
writer.WriteString(SelectedCulture.Name);
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
writer.Close();
stmWriter.Close();
isoStorage.Close();
}
private void SelectLanguage_Load(object sender, System.EventArgs e)
{
enumCultureMatch Match = enumCultureMatch.None;
enumCultureMatch NewMatch = enumCultureMatch.None;
// Version 1 detected which subdirectories are present.
// String AsmLocation = Assembly.GetExecutingAssembly ( ).Location;
// String AsmPath = Path.GetDirectoryName ( AsmLocation );
// List<String> DirList = new List<String> ( );
//
// DirList.AddRange ( Directory.GetDirectories ( AsmPath, "??" ) );
// DirList.AddRange ( Directory.GetDirectories ( AsmPath, "??-??*" ) );
//
// foreach ( String SubDirName in DirList )
// {
// try
// {
// String BaseName = Path.GetFileName ( SubDirName );
// CultureInfo Cult = new CultureInfo ( BaseName );
// Version 2 used the SupportedCultures array in MlString.h,
// which is autoamatically updated by Multi-Language for Visual Studio
// foreach ( String IetfTag in ml.SupportedCultures )
// Version 3 uses the SupportedCultures array in this file,
// which is autoamatically updated by Multi-Language for Visual Studio
foreach (String IetfTag in SupportedCultures)
{
try
{
CultureInfo Cult = new CultureInfo(IetfTag);
// Note: The property lstCultures.DisplayName is set to "NativeName" in order to
// show language name in its own language.
lstCultures.Items.Add(Cult);
// The rest of this logic is just to find the nearest match to the
// current UI culture.
// How well does this culture match?
if (SelectedCulture.Equals(Cult))
{
NewMatch = enumCultureMatch.Region;
}
else if (Cult.TwoLetterISOLanguageName == SelectedCulture.TwoLetterISOLanguageName)
{
if (Cult.IsNeutralCulture)
NewMatch = enumCultureMatch.Neutral;
else
NewMatch = enumCultureMatch.Language;
}
// Is that better than the best match so far?
if (NewMatch > Match)
{
Match = NewMatch;
lstCultures.SelectedItem = Cult;
}
}
catch
{
}
}
switch (StartupMode)
{
case enumStartupMode.ShowDialog:
rbShow.Checked = true;
break;
case enumStartupMode.UseDefaultCulture:
rbDefault.Checked = true;
break;
case enumStartupMode.UseSavedCulture:
rbSelected.Checked = true;
break;
}
}
private void btOK_Click(object sender, System.EventArgs e)
{
if (lstCultures.SelectedItem != null)
{
SelectedCulture = (CultureInfo)lstCultures.SelectedItem;
}
this.Close();
}
private void OnStartup_CheckedChanged(object sender, System.EventArgs e)
{
if (rbShow.Checked)
StartupMode = enumStartupMode.ShowDialog;
else if (rbSelected.Checked)
StartupMode = enumStartupMode.UseSavedCulture;
else if (rbDefault.Checked)
StartupMode = enumStartupMode.UseDefaultCulture;
}
}
}

161
MifareOneTool/SelectLanguage.designer.cs generated Normal file
View File

@ -0,0 +1,161 @@
namespace MultiLang
{
partial class SelectLanguage
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.rbSelected = new System.Windows.Forms.RadioButton();
this.rbShow = new System.Windows.Forms.RadioButton();
this.lblStartup = new System.Windows.Forms.Label();
this.rbDefault = new System.Windows.Forms.RadioButton();
this.lstCultures = new System.Windows.Forms.ListBox();
this.btOK = new System.Windows.Forms.Button();
this.Panel1 = new System.Windows.Forms.Panel();
this.Panel1.SuspendLayout();
this.SuspendLayout();
//
// rbSelected
//
this.rbSelected.AccessibleDescription = "";
this.rbSelected.AccessibleName = "";
this.rbSelected.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.rbSelected.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.rbSelected.Location = new System.Drawing.Point(4, 40);
this.rbSelected.Name = "rbSelected";
this.rbSelected.Size = new System.Drawing.Size(209, 20);
this.rbSelected.TabIndex = 2;
this.rbSelected.Text = "Use the selected language";
this.rbSelected.CheckedChanged += new System.EventHandler(this.OnStartup_CheckedChanged);
//
// rbShow
//
this.rbShow.AccessibleDescription = "";
this.rbShow.AccessibleName = "";
this.rbShow.Checked = true;
this.rbShow.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.rbShow.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.rbShow.Location = new System.Drawing.Point(4, 20);
this.rbShow.Name = "rbShow";
this.rbShow.Size = new System.Drawing.Size(209, 20);
this.rbShow.TabIndex = 1;
this.rbShow.TabStop = true;
this.rbShow.Text = "Show this form again";
this.rbShow.CheckedChanged += new System.EventHandler(this.OnStartup_CheckedChanged);
//
// lblStartup
//
this.lblStartup.AccessibleDescription = "";
this.lblStartup.AccessibleName = "";
this.lblStartup.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.lblStartup.Location = new System.Drawing.Point(4, 3);
this.lblStartup.Name = "lblStartup";
this.lblStartup.Size = new System.Drawing.Size(209, 17);
this.lblStartup.TabIndex = 0;
this.lblStartup.Text = "Next time ...";
//
// rbDefault
//
this.rbDefault.AccessibleDescription = "";
this.rbDefault.AccessibleName = "";
this.rbDefault.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.rbDefault.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.rbDefault.Location = new System.Drawing.Point(4, 60);
this.rbDefault.Name = "rbDefault";
this.rbDefault.Size = new System.Drawing.Size(209, 20);
this.rbDefault.TabIndex = 3;
this.rbDefault.Text = "Use the default language";
this.rbDefault.CheckedChanged += new System.EventHandler(this.OnStartup_CheckedChanged);
//
// lstCultures
//
this.lstCultures.AccessibleDescription = "";
this.lstCultures.AccessibleName = "";
this.lstCultures.DisplayMember = "NativeName";
this.lstCultures.Font = new System.Drawing.Font("Arial", 9.75F);
this.lstCultures.IntegralHeight = false;
this.lstCultures.ItemHeight = 16;
this.lstCultures.Location = new System.Drawing.Point(4, 4);
this.lstCultures.Name = "lstCultures";
this.lstCultures.Size = new System.Drawing.Size(264, 220);
this.lstCultures.TabIndex = 7;
this.lstCultures.DoubleClick += new System.EventHandler(this.btOK_Click);
//
// btOK
//
this.btOK.AccessibleDescription = "";
this.btOK.AccessibleName = "";
this.btOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.btOK.Location = new System.Drawing.Point(180, 316);
this.btOK.Name = "btOK";
this.btOK.Size = new System.Drawing.Size(90, 32);
this.btOK.TabIndex = 8;
this.btOK.Text = "OK";
this.btOK.Click += new System.EventHandler(this.btOK_Click);
//
// Panel1
//
this.Panel1.AccessibleDescription = "";
this.Panel1.AccessibleName = "";
this.Panel1.BackColor = System.Drawing.SystemColors.Control;
this.Panel1.Controls.Add(this.rbDefault);
this.Panel1.Controls.Add(this.rbSelected);
this.Panel1.Controls.Add(this.rbShow);
this.Panel1.Controls.Add(this.lblStartup);
this.Panel1.Location = new System.Drawing.Point(4, 228);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(264, 84);
this.Panel1.TabIndex = 9;
//
// SelectLanguage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(272, 352);
this.Controls.Add(this.lstCultures);
this.Controls.Add(this.btOK);
this.Controls.Add(this.Panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "SelectLanguage";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "SelectLanguage";
this.Load += new System.EventHandler(this.SelectLanguage_Load);
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
internal System.Windows.Forms.RadioButton rbSelected;
internal System.Windows.Forms.RadioButton rbShow;
internal System.Windows.Forms.Label lblStartup;
internal System.Windows.Forms.RadioButton rbDefault;
internal System.Windows.Forms.ListBox lstCultures;
internal System.Windows.Forms.Button btOK;
internal System.Windows.Forms.Panel Panel1;
}
}

View File

@ -0,0 +1,120 @@
<?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>
</root>

View File

@ -24,7 +24,7 @@
<value>True</value>
</setting>
<setting name="AutoLoadUidKey" serializeAs="String">
<value>False</value>
<value>True</value>
</setting>
<setting name="MainCLIColor" serializeAs="String">
<value>192, 255, 255</value>
@ -50,6 +50,12 @@
<setting name="MultiMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="CuidKeyOver" serializeAs="String">
<value>True</value>
</setting>
<setting name="Language" serializeAs="String">
<value />
</setting>
</MifareOneTool.Properties.Settings>
</userSettings>
</configuration>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,40 +1,4 @@
# MifareOneTool
A GUI Mifare Classic tool on Windows
## 文档版本
- v1.5.0
## 安装
1. [下载最新发布](https://github.com/xcicode/MifareOneTool/releases/latest)
2. 解压M1T-Release.zip到独立目录建议目录中不要出现空格
3. 就绪!
## 兼容设备
PN532-UART
ACR122U(需要手动打开支持)
## 高级界面功能说明
检测检测NFC设备连接状态
手动扫描: 扫描读卡器上的卡片并显示基本信息
手动CLI 打开cmd切换到nfc-bin/下,可手动调用命令行工具
读卡: 读取普通卡片需要指定KeyA/B如果不是默认密码或空白卡片需要指定密钥文件
写卡: 写入普通卡片需要指定KeyA/B如果不是默认密码或空白卡片需要指定密钥文件
选择key.mfd 指定密钥文件
UID重置 将UID卡的UID重置为随机数
UID全格 执行[UID重置]并清空所有扇区数据、恢复访问控制位
UID写号 将UID卡的UID设置为指定号码
MFOC 执行半加密卡Nested破解(仅建议针对SAK=08的卡片使用
`注按住Ctrl点击该按钮可添加已知密钥。`
后门读: 读取UID卡忽视扇区密钥
后门写: 写入UID卡忽视扇区密钥
清空终端: 清空终端缓冲区显示的文本
保存日志: 将终端缓冲区的文本保存至m1t.log文件中
停止运行: 强行停止正在运行的功能
MFCUK爆密钥 调用MFCUK工具爆破全加密卡的密钥
CUID写 写入CUID卡(一种使用普通指令写0块的卡片)
锁Ufuid 锁定Ufuid卡片的0扇区使其不可再写入
清M1卡 使用选择的key.mfd清空卡内数据
启用ACR122U支持 打开对ACR122U的支持
`注:打开后可能会导致运行速度变慢。`
Hex编辑器 打开集成编辑器S50HTool
检加密查看M1卡的加密情况
因作者事务繁忙,软件不再更新。