Compare commits

..

No commits in common. "dev" and "v1.1.0" have entirely different histories.
dev ... v1.1.0

66 changed files with 482 additions and 48072 deletions

View File

@ -1,20 +0,0 @@
---
name: 新特性Request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**提出这个新功能的要求是不是因为在使用过程中遇到了问题?**
讲讲。
**说说你的看法**
简洁明了的描述一下你的设想。
**有没有备选方案呢?**
说说看。
**还有什么想说的?**
比如,截屏/简图?

View File

@ -1,34 +0,0 @@
---
name: Bug报告
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**描述一下bug**
尽量简洁明了。
**如何重现这个bug呢**
写一下步骤,如:
1. 打开软件
2. 点了xxx
3. 又点了yyy
4. 出错了
**你觉得应该是怎样的?**
请讲。
**截屏**
尽量带截屏,以便我们更快了解情况。
**环境 (请填表):**
- 操作系统: [e.g. Win8]
- 读写器型号 [e.g. PN532]
- 连接线型号 [e.g. CH340G]
- 软件版本 [e.g. v1.5.0.0]
- 操作的卡片 [e.g. CUID卡]
**还有什么想说的?**
写下来。

2
.gitignore vendored
View File

@ -330,4 +330,4 @@ ASALocalRun/
.mfractor/
nfc-bin.zip
DirectOP/
Setup1/

View File

@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MifareOneTool", "MifareOneTool\MifareOneTool.csproj", "{CDB26016-FC77-403F-B22A-A011F8622FCF}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup1", "Setup1\Setup1.vdproj", "{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -27,6 +29,22 @@ Global
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Release|Win32.ActiveCfg = Release|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Release|x86.ActiveCfg = Release|x86
{CDB26016-FC77-403F-B22A-A011F8622FCF}.Release|x86.Build.0 = Release|x86
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|Any CPU.ActiveCfg = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|Any CPU.Build.0 = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|Mixed Platforms.ActiveCfg = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|Mixed Platforms.Build.0 = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|Win32.ActiveCfg = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|Win32.Build.0 = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|x86.ActiveCfg = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Debug|x86.Build.0 = Debug
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|Any CPU.ActiveCfg = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|Any CPU.Build.0 = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|Mixed Platforms.ActiveCfg = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|Mixed Platforms.Build.0 = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|Win32.ActiveCfg = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|Win32.Build.0 = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|x86.ActiveCfg = Release
{989F68A9-CDD0-46FE-9A86-E36F581A3F7E}.Release|x86.Build.0 = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -1,444 +0,0 @@
using MifareOneTool.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Text.RegularExpressions;
namespace MifareOneTool
{
class Utils
{
public static string Hex2Str(byte[] bytes)
{
StringBuilder ret = new StringBuilder();
foreach (byte b in bytes)
{
ret.AppendFormat("{0:x2}", b);
}
return ret.ToString();
}
public static string Hex2StrWithSpan(byte[] bytes)
{
StringBuilder ret = new StringBuilder();
foreach (byte b in bytes)
{
ret.AppendFormat("{0:x2}", b);
ret.Append(" ");
}
return ret.ToString();
}
public static byte[] Hex2Block(string hex, int bytelen)
{
hex = hex.Replace(" ", "");
byte[] returnBytes = new byte[bytelen];
for (int i = 0; i < bytelen; i++)
returnBytes[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
return returnBytes;
}
public static byte[] ReadAC(byte[] ac)
{
byte[] acbits = new byte[4];
acbits[0] = (byte)(((ac[2] & 0x10) >> 4)
+ ((ac[2] & 0x01) << 1)
+ ((ac[1] & 0x10) >> 2));
acbits[1] = (byte)(((ac[2] & 0x20) >> 5)
+ ((ac[2] & 0x02))
+ ((ac[1] & 0x20) >> 3));
acbits[2] = (byte)(((ac[2] & 0x40) >> 6)
+ ((ac[2] & 0x04) >> 1)
+ ((ac[1] & 0x40) >> 4));
acbits[3] = (byte)(((ac[2] & 0x80) >> 7)
+ ((ac[2] & 0x08) >> 2)
+ ((ac[1] & 0x80) >> 5));
return acbits;
}
public static byte[] ReadRAC(byte[] ac)
{
byte[] acbits = new byte[4];
for (int i = 0; i < ac.Length; i++)
{
ac[i] = (byte)~ac[i];
}
acbits[0] = (byte)(((ac[0] & 0x01) << 2)
+ ((ac[0] & 0x10) >> 3)
+ ((ac[1] & 0x01)));
acbits[1] = (byte)(((ac[0] & 0x02) << 1)
+ ((ac[0] & 0x20) >> 4)
+ ((ac[1] & 0x02) >> 1));
acbits[2] = (byte)(((ac[0] & 0x04))
+ ((ac[0] & 0x40) >> 5)
+ ((ac[1] & 0x04) >> 2));
acbits[3] = (byte)(((ac[0] & 0x08) >> 1)
+ ((ac[0] & 0x80) >> 6)
+ ((ac[1] & 0x08) >> 3));
return acbits;
}
public static byte[] GenAC(byte[] ac)
{
byte[] acbits = new byte[4];
acbits[3] = 0x00;
acbits[1] = (byte)(((ac[0] << 2) & 0x10)
| ((ac[1] << 3) & 0x20)
| ((ac[2] << 4) & 0x40)
| ((ac[3] << 5) & 0x80));
acbits[2] = (byte)(((ac[0] >> 1) & 0x01)
| ((ac[1]) & 0x02)
| ((ac[2] << 1) & 0x04)
| ((ac[3] << 2) & 0x08)
| ((ac[0] << 4) & 0x10)
| ((ac[1] << 5) & 0x20)
| ((ac[2] << 6) & 0x40)
| ((ac[3] << 7) & 0x80));
for (int i = 0; i < ac.Length; i++)
{
ac[i] = (byte)~ac[i];
}
acbits[1] = (byte)(acbits[1] |
((ac[0]) & 0x01)
| ((ac[1] << 1) & 0x02)
| ((ac[2] << 2) & 0x04)
| ((ac[3] << 3) & 0x08));
acbits[0] = (byte)(((ac[0] >> 2) & 0x01)
| ((ac[1] >> 1) & 0x02)
| ((ac[2]) & 0x04)
| ((ac[3] << 1) & 0x08)
| ((ac[0] << 3) & 0x10)
| ((ac[1] << 4) & 0x20)
| ((ac[2] << 5) & 0x40)
| ((ac[3] << 6) & 0x80));
return acbits;
}
//public static bool DtKeyAB(byte[] ac)
//{
// byte[] acbits = new byte[4];
// acbits[0] = (byte)(((ac[2] & 0x10) >> 4)
// + ((ac[2] & 0x01) << 1)
// + ((ac[1] & 0x10) >> 2));
// acbits[1] = (byte)(((ac[2] & 0x20) >> 5)
// + ((ac[2] & 0x02))
// + ((ac[1] & 0x20) >> 3));
// acbits[2] = (byte)(((ac[2] & 0x40) >> 6)
// + ((ac[2] & 0x04) >> 1)
// + ((ac[1] & 0x40) >> 4));
// acbits[3] = (byte)(((ac[2] & 0x80) >> 7)
// + ((ac[2] & 0x08) >> 2)
// + ((ac[1] & 0x80) >> 5));
// return acbits;
//}
}
enum AccessBitsT
{
KeyAW_KeyAR_KeyARW,
keyAW_KeyARW_KeyARW,
Never_KeyAR_KeyAR,
KeyBW_KeyABRKeyBW_KeyBW,
KeyBW_KeyABR_KeyBW,
Never_KeyABRKeyBW_Never,
Never_KeyABR_Never,
Never_KeyABR_Never2
}
enum AccessBitsD
{
AB_AB_AB_AB,
AB_N_N_AB,
AB_N_N_N,
B_B_N_N,
AB_B_N_N,
B_N_N_N,
AB_B_B_AB,
N_N_N_N
}
class Sector
{
private byte[][] _sector = new byte[4][] { new byte[16], new byte[16], new byte[16], new byte[16], };
public byte[][] Block
{
get { return _sector; }
set { _sector = value; }
}
private bool _isSector0 = false;
public bool IsSector0
{
get { return _isSector0; }
set { _isSector0 = value; }
}
public void Wipe()
{
byte[] zeroBlock = this._sector[0];
this._sector = new byte[4][]{
new byte[16]{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
new byte[16]{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
new byte[16]{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
new byte[16]{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x07,0x80,0x69,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
};
if (this._isSector0)
{
this._sector[0] = zeroBlock;
}
}
public Sector(bool sector0 = false)
{
this._isSector0 = sector0;
this.Wipe();
if (sector0)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] uid = new byte[4];
rng.GetNonZeroBytes(uid);
byte bcc = (byte)(uid[0] ^ uid[1] ^ uid[2] ^ uid[3]);
this._sector[0] = new byte[16] { uid[0], uid[1], uid[2], uid[3], bcc, 0x08, 0x04, 0x00,
0x62, 0x63, 0x64, 0x65, 0x66,0x67,0x68,0x69 };
}
}
public Sector(byte[] 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]);
this._sector[0] = new byte[16] { uid[0], uid[1], uid[2], uid[3], bcc, 0x08, 0x04, 0x00,
0x62, 0x63, 0x64, 0x65, 0x66,0x67,0x68,0x69 };
}
public int Verify()
{
/*
* 0BCC
* 0访
* ********
* 0000
* 0001BCC错
* 0010访
* 0100访
*
*/
int retCode = 0;
if (this._isSector0)
{
byte bc0 = (byte)(_sector[0][0] ^ _sector[0][1] ^ _sector[0][2] ^ _sector[0][3] ^ _sector[0][4]);
if (bc0 != 0x00) { retCode = retCode | 0x01; }
}
byte[] ac = new byte[4] { _sector[3][6], _sector[3][7], _sector[3][8], _sector[3][9] };
byte[] acP = Utils.ReadAC(ac);
byte[] acN = Utils.ReadRAC(ac);
if (!Enumerable.SequenceEqual(acP, acN))
{
retCode = retCode | 0x04;
}
foreach (byte acc in acP)
{
if (acc > 0x08)
{
retCode = retCode | 0x02;
break;
}
}
return retCode;
}
public string Info(int sec)
{
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]) &&
Enumerable.SequenceEqual(
new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
this._sector[1]) &&
Enumerable.SequenceEqual(
new byte[16] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
this._sector[2]))
{
info += Resources._空扇区;
}
else
{
info += Resources._有数据;
}
if (this.Verify() != 0x00)
{
info += Resources._有错误;
}
return info;
}
public byte[] KeyA
{
get { return this._sector[3].Skip(0).Take(6).ToArray(); }
set { for (int i = 0; i < 6; i++) { this._sector[3][i] = value[i]; } }
}
public byte[] KeyB
{
get { return this._sector[3].Skip(10).Take(6).ToArray(); }
set { for (int i = 10; i < 16; i++) { this._sector[3][i] = value[i]; } }
}
public byte[] ACBits
{
get { return this._sector[3].Skip(6).Take(4).ToArray(); }
set { for (int i = 6; i < 10; i++) { this._sector[3][i] = value[i]; } }
}
}
class S50
{
private List<Sector> _sectors = new List<Sector>(16);
internal byte[] SectorsRaw
{
get
{
byte[] buffer = new byte[1024];
for (int i = 0; i < 16; i++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 16; k++)
{
buffer[i * 64 + j * 16 + k] = this._sectors[i].Block[j][k];
}
}
}
return buffer;
}
set
{
for (int i = 0; i < 16; i++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 16; k++)
{
this._sectors[i].Block[j][k] = value[i * 64 + j * 16 + k];
}
}
}
}
}
public List<Sector> Sectors
{
get { return _sectors; }
set { _sectors = value; }
}
public S50()
{
_sectors.Capacity = 16;
for (int i = 0; i < 16; i++)
{
if (i == 0) { _sectors.Add(new Sector(true)); }
else { _sectors.Add(new Sector()); }
}
}
public S50(byte[] uid)
{
_sectors.Capacity = 16;
if (uid.Length != 4) { throw new Exception(Resources.4UID长度); }
for (int i = 0; i < 16; i++)
{
if (i == 0) { _sectors.Add(new Sector(uid)); }
else { _sectors.Add(new Sector()); }
}
}
public void Wipe()
{
for (int i = 0; i < 16; i++)
{
_sectors[i].Wipe();
}
}
public int[] Verify()
{
int[] ret = new int[17];
int t = 0;
for (int i = 0; i < 16; i++)
{
ret[i] = _sectors[i].Verify();
t += ret[i];
}
ret[16] = t;
return ret;
}
public int Verify(int sector)
{
return _sectors[sector].Verify();
}
public void LoadFromMfd(string file)
{
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(Resources.); }
long fileLength=new FileInfo(file).Length;
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)
{
if (!Regex.IsMatch(line, "[0-9A-Fa-f]{32}") || line.Length != 32)
{
invaild.Add(line);
}
}
foreach (string inv in invaild)
{
lines.Remove(inv);
}
if (lines.Count != 64)
{
throw new Exception(Resources.64_可能不完整或不兼容);
}
this.Wipe();
for (int i = 0; i < lines.Count; i++)
{
this._sectors[i / 4].Block[i % 4] = Utils.Hex2Block(lines[i], 16);
}
}
public void ExportToMfd(string file)
{
byte[] fileBuffer = this.SectorsRaw;
File.WriteAllBytes(file, fileBuffer);
}
public void ExportToMctTxt(string file)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++)
{
sb.AppendLine(Resources._Sector + i.ToString());
for (int j = 0; j < 4; j++)
{
sb.AppendLine(Utils.Hex2Str(this._sectors[i].Block[j]));
}
}
File.WriteAllText(file, sb.ToString());
}
public List<byte[]> KeyList()
{
List<byte[]> keys = new List<byte[]>();
foreach (Sector s in this._sectors)
{
keys.Add(s.KeyA);
keys.Add(s.KeyB);
}
keys = keys.Distinct().ToList();
return keys;
}
public List<string> KeyListStr()
{
List<string> keys = new List<string>();
foreach (Sector s in this._sectors)
{
keys.Add(Utils.Hex2Str(s.KeyA));
keys.Add(Utils.Hex2Str(s.KeyB));
}
keys = keys.Distinct().ToList();
return keys;
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,125 +0,0 @@
namespace MifareOneTool
{
partial class FormDiff
{
/// <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(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.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.TextChanged += new System.EventHandler(this.RichTextBox1_TextChanged);
//
// button1
//
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
resources.ApplyResources(this.button2, "button2");
this.button2.Name = "button2";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
resources.ApplyResources(this.button3, "button3");
this.button3.Name = "button3";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.button3, 1, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.button1);
this.flowLayoutPanel1.Controls.Add(this.button2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// flowLayoutPanel2
//
resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2");
this.flowLayoutPanel2.Controls.Add(this.tableLayoutPanel1);
this.flowLayoutPanel2.Controls.Add(this.richTextBox1);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
//
// FormDiff
//
this.AcceptButton = this.button3;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.flowLayoutPanel2);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.Name = "FormDiff";
this.Load += new System.EventHandler(this.FormDiff_Load);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.RichTextBox richTextBox1;
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,145 +0,0 @@
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.IO;
namespace MifareOneTool
{
public partial class FormDiff : Form
{
public FormDiff()
{
InitializeComponent();
}
private S50 sa = new S50();
private S50 sb = new S50();
private string fa = "";
private string fb = "";
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = Resources.MFD文件_mfd_dump;
ofd.Title = Resources.MFD文件_比较A;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
fa = ofd.FileName;
}
else
{
return;
}
sa = new S50();
try
{
sa.LoadFromMfd(fa);
button1.Text = "A=" + ofd.SafeFileName;
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
sa = new S50();
return;
}
}
private void FormDiff_Load(object sender, EventArgs e)
{
}
private void logAppend(string msg)
{
richTextBox1.AppendText(msg + "\n");
richTextBox1.ScrollToCaret();
}
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = Resources.MFD文件_mfd_dump;
ofd.Title = Resources.MFD文件_比较B;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
fb = ofd.FileName;
}
else
{
return;
}
sb = new S50();
try
{
sb.LoadFromMfd(fb);
button2.Text = "B=" + ofd.SafeFileName;
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
sb = new S50();
return;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (File.Exists(fa) && File.Exists(fb))
{
richTextBox1.Clear();
richTextBox1.Text = Compare();
}
else
{
logAppend(Resources.AB文件中一个或两个无效);
}
}
private string Compare()
{
StringBuilder stb = new StringBuilder();
int diffCount = 0;
for (int i = 0; i < 16; i++)
{
stb.AppendLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
stb.AppendLine(Resources.0 + i.ToString());
for (int a = 0; a < 4; a++)
{
string res = "";
for (int b = 0; b < 16; b++)
{
if (sa.Sectors[i].Block[a][b] == sb.Sectors[i].Block[a][b])
{
res += "-- ";
}
else
{
res += "## ";
}
}
stb.AppendLine("A: " + Utils.Hex2StrWithSpan(sa.Sectors[i].Block[a]));
stb.AppendLine("B: " + Utils.Hex2StrWithSpan(sb.Sectors[i].Block[a]));
stb.AppendLine(" " + res);
if (res.Contains("##"))
{
diffCount++;
}
}
}
return Resources. + diffCount.ToString() + Resources._个块不同 + stb.ToString();
}
private void RichTextBox1_TextChanged(object sender, EventArgs e)
{
}
}
}

View File

@ -1,400 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,150 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,151 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,594 +0,0 @@
namespace MifareOneTool
{
partial class FormHTool
{
/// <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.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();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.退ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.UIDToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.MCT格式ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MCT格式ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.buttonSaveSectorEdit = new System.Windows.Forms.Button();
this.comboBox4 = new System.Windows.Forms.ComboBox();
this.comboBox3 = new System.Windows.Forms.ComboBox();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label9 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.keyBEdit = new System.Windows.Forms.TextBox();
this.keyAEdit = new System.Windows.Forms.TextBox();
this.block2Edit = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.block1Edit = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.block0Edit = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
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});
resources.ApplyResources(this.menuStrip1, "menuStrip1");
this.menuStrip1.Name = "menuStrip1";
//
// 文件ToolStripMenuItem
//
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripSeparator1,
this.退ToolStripMenuItem});
this.ToolStripMenuItem.Name = "文件ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "文件ToolStripMenuItem");
//
// 新建ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "新建ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "新建ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 打开ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "打开ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "打开ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 保存ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "保存ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "保存ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 另存为ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "另存为ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "另存为ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// 退出ToolStripMenuItem
//
this.退ToolStripMenuItem.Name = "退出ToolStripMenuItem";
resources.ApplyResources(this.退ToolStripMenuItem, "退出ToolStripMenuItem");
this.退ToolStripMenuItem.Click += new System.EventHandler(this.退ToolStripMenuItem_Click);
//
// 工具ToolStripMenuItem
//
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.UIDToolStripMenuItem,
this.toolStripSeparator2,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripSeparator3,
this.MCT格式ToolStripMenuItem,
this.MCT格式ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripSeparator4,
this.ToolStripMenuItem});
this.ToolStripMenuItem.Name = "工具ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "工具ToolStripMenuItem");
//
// 修改UIDToolStripMenuItem
//
this.UIDToolStripMenuItem.Name = "修改UIDToolStripMenuItem";
resources.ApplyResources(this.UIDToolStripMenuItem, "修改UIDToolStripMenuItem");
this.UIDToolStripMenuItem.Click += new System.EventHandler(this.UIDToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
//
// 检查全卡ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "检查全卡ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "检查全卡ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 检查并纠正全卡ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "检查并纠正全卡ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "检查并纠正全卡ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
//
// 导入MCT格式ToolStripMenuItem
//
this.MCT格式ToolStripMenuItem.Name = "导入MCT格式ToolStripMenuItem";
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";
resources.ApplyResources(this.MCT格式ToolStripMenuItem, "导出为MCT格式ToolStripMenuItem");
this.MCT格式ToolStripMenuItem.Click += new System.EventHandler(this.MCT格式ToolStripMenuItem_Click);
//
// 导出密钥字典ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "导出密钥字典ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "导出密钥字典ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
//
// 列出全卡密钥ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "列出全卡密钥ToolStripMenuItem";
resources.ApplyResources(this.ToolStripMenuItem, "列出全卡密钥ToolStripMenuItem");
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.dataGridView1);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.AllowUserToResizeColumns = false;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1});
resources.ApplyResources(this.dataGridView1, "dataGridView1");
this.dataGridView1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowTemplate.Height = 27;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
//
// Column1
//
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
resources.ApplyResources(this.Column1, "Column1");
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// groupBox2
//
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.tableLayoutPanel2);
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
// buttonSaveSectorEdit
//
resources.ApplyResources(this.buttonSaveSectorEdit, "buttonSaveSectorEdit");
this.buttonSaveSectorEdit.Name = "buttonSaveSectorEdit";
this.buttonSaveSectorEdit.UseVisualStyleBackColor = true;
this.buttonSaveSectorEdit.Click += new System.EventHandler(this.buttonSaveSectorEdit_Click);
//
// comboBox4
//
this.comboBox4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox4.DropDownWidth = 400;
this.comboBox4.FormattingEnabled = true;
this.comboBox4.Items.AddRange(new object[] {
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.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox3
//
this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox3.FormattingEnabled = true;
this.comboBox3.Items.AddRange(new object[] {
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.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox2
//
this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Items.AddRange(new object[] {
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.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
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.Validating += new System.ComponentModel.CancelEventHandler(this.comboBox1_Validating);
//
// label9
//
resources.ApplyResources(this.label9, "label9");
this.label9.Name = "label9";
//
// label8
//
resources.ApplyResources(this.label8, "label8");
this.label8.Name = "label8";
//
// label7
//
resources.ApplyResources(this.label7, "label7");
this.label7.Name = "label7";
//
// label6
//
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
//
// label5
//
resources.ApplyResources(this.label5, "label5");
this.label5.Name = "label5";
//
// keyBEdit
//
resources.ApplyResources(this.keyBEdit, "keyBEdit");
this.keyBEdit.Name = "keyBEdit";
this.keyBEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// keyAEdit
//
resources.ApplyResources(this.keyAEdit, "keyAEdit");
this.keyAEdit.Name = "keyAEdit";
this.keyAEdit.TextChanged += new System.EventHandler(this.keyAEdit_TextChanged);
this.keyAEdit.Validating += new System.ComponentModel.CancelEventHandler(this.keyAEdit_Validating);
//
// block2Edit
//
resources.ApplyResources(this.block2Edit, "block2Edit");
this.block2Edit.Name = "block2Edit";
this.block2Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label4
//
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4";
//
// label3
//
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
//
// block1Edit
//
resources.ApplyResources(this.block1Edit, "block1Edit");
this.block1Edit.Name = "block1Edit";
this.block1Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// block0Edit
//
resources.ApplyResources(this.block0Edit, "block0Edit");
this.block0Edit.Name = "block0Edit";
this.block0Edit.Validating += new System.ComponentModel.CancelEventHandler(this.block0Edit_Validating);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// labelCurSec
//
resources.ApplyResources(this.labelCurSec, "labelCurSec");
this.labelCurSec.Name = "labelCurSec";
//
// groupBox3
//
resources.ApplyResources(this.groupBox3, "groupBox3");
this.groupBox3.Controls.Add(this.richTextBox1);
this.groupBox3.Name = "groupBox3";
this.groupBox3.TabStop = false;
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.Color.Black;
this.richTextBox1.ForeColor = System.Drawing.Color.Cyan;
resources.ApplyResources(this.richTextBox1, "richTextBox1");
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.groupBox3, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.groupBox2, 1, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel3, 0, 3);
this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel1, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel2, 0, 1);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.labelCurSec);
this.flowLayoutPanel1.Controls.Add(this.buttonSaveSectorEdit);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// flowLayoutPanel2
//
resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2");
this.flowLayoutPanel2.Controls.Add(this.label1);
this.flowLayoutPanel2.Controls.Add(this.block0Edit);
this.flowLayoutPanel2.Controls.Add(this.label2);
this.flowLayoutPanel2.Controls.Add(this.block1Edit);
this.flowLayoutPanel2.Controls.Add(this.label3);
this.flowLayoutPanel2.Controls.Add(this.block2Edit);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
//
// tableLayoutPanel3
//
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
this.tableLayoutPanel3.Controls.Add(this.label4, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.keyAEdit, 0, 1);
this.tableLayoutPanel3.Controls.Add(this.label5, 1, 0);
this.tableLayoutPanel3.Controls.Add(this.keyBEdit, 1, 1);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
//
// flowLayoutPanel3
//
resources.ApplyResources(this.flowLayoutPanel3, "flowLayoutPanel3");
this.flowLayoutPanel3.Controls.Add(this.label6);
this.flowLayoutPanel3.Controls.Add(this.comboBox1);
this.flowLayoutPanel3.Controls.Add(this.label7);
this.flowLayoutPanel3.Controls.Add(this.comboBox2);
this.flowLayoutPanel3.Controls.Add(this.label8);
this.flowLayoutPanel3.Controls.Add(this.comboBox3);
this.flowLayoutPanel3.Controls.Add(this.label9);
this.flowLayoutPanel3.Controls.Add(this.comboBox4);
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
//
// s50BindingSource
//
this.s50BindingSource.DataSource = typeof(MifareOneTool.S50);
//
// FormHTool
//
this.AcceptButton = this.buttonSaveSectorEdit;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.menuStrip1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MainMenuStrip = this.menuStrip1;
this.MaximizeBox = false;
this.Name = "FormHTool";
this.Load += new System.EventHandler(this.FormHTool_Load);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
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();
}
#endregion
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripMenuItem 退ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem UIDToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.BindingSource s50BindingSource;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label labelCurSec;
private System.Windows.Forms.TextBox block0Edit;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox block1Edit;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox keyBEdit;
private System.Windows.Forms.TextBox keyAEdit;
private System.Windows.Forms.TextBox block2Edit;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button buttonSaveSectorEdit;
private System.Windows.Forms.ComboBox comboBox4;
private System.Windows.Forms.ComboBox comboBox3;
private System.Windows.Forms.ComboBox comboBox2;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripMenuItem MCT格式ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
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,499 +0,0 @@
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.IO;
using System.Text.RegularExpressions;
using System.Security.Cryptography;
using Microsoft.VisualBasic;
namespace MifareOneTool
{
public partial class FormHTool : Form
{
public FormHTool()
{
InitializeComponent();
}
private S50 currentS50 = new S50();
string currentFilename = "";
int currentSector = -1;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int sectorIndex = dataGridView1.SelectedRows[0].Index;
reloadEdit(sectorIndex);
logAppend(Resources. + sectorIndex.ToString());
}
}
private void logAppend(string msg)
{
richTextBox1.AppendText(msg + "\n");
richTextBox1.ScrollToCaret();
}
private void reloadEdit(int sectorIndex)
{
currentSector = sectorIndex;
if (sectorIndex == -1)
{
comboBox1.SelectedIndex = 0;
comboBox2.SelectedIndex = 0;
comboBox3.SelectedIndex = 0;
comboBox4.SelectedIndex = 1;
this.keyBEdit.Text = "";
this.keyAEdit.Text = "";
this.block2Edit.Text = "";
this.block1Edit.Text = "";
this.block0Edit.Text = "";
this.labelCurSec.Text = Resources.;
return;
}
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]);
keyAEdit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[3].Skip(0).Take(6).ToArray());
keyBEdit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[3].Skip(10).Take(6).ToArray());
byte[] acbits = Utils.ReadAC(currentS50.Sectors[sectorIndex].Block[3].Skip(6).Take(4).ToArray());
comboBox1.SelectedIndex = acbits[0] & 0x07;
comboBox2.SelectedIndex = acbits[1] & 0x07;
comboBox3.SelectedIndex = acbits[2] & 0x07;
comboBox4.SelectedIndex = acbits[3] & 0x07;
int res = currentS50.Sectors[sectorIndex].Verify();
string msg = "";
if ((res & 0x01) == 0x01)
{
currentS50.Sectors[sectorIndex].Block[0][4]
= (byte)(currentS50.Sectors[sectorIndex].Block[0][0]
^ currentS50.Sectors[sectorIndex].Block[0][1]
^ currentS50.Sectors[sectorIndex].Block[0][2]
^ currentS50.Sectors[sectorIndex].Block[0][3]);
block0Edit.Text = Form1.hex(currentS50.Sectors[sectorIndex].Block[0]);
msg += Resources.UID校验值错误_已经自动为您更正;
}
if ((res & 0x02) == 0x02)
{
comboBox1.SelectedIndex = 0;
comboBox2.SelectedIndex = 0;
comboBox3.SelectedIndex = 0;
comboBox4.SelectedIndex = 1;
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if ((res & 0x04) == 0x04)
{
comboBox1.SelectedIndex = 0;
comboBox2.SelectedIndex = 0;
comboBox3.SelectedIndex = 0;
comboBox4.SelectedIndex = 1;
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if (res != 0x00) { MessageBox.Show(msg.Trim()); }
this.ValidateChildren();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
reloadEdit(-1);
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = Resources.MFD文件_mfd_dump;
ofd.Title = Resources.MFD文件;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
currentFilename = ofd.FileName;
}
else
{
return;
}
this.currentS50 = new S50();
try
{
this.currentS50.LoadFromMfd(currentFilename);
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
this.currentS50 = new S50();
return;
}
reloadList();
logAppend(Resources. + ofd.FileName);
}
private void reloadList()
{
dataGridView1.Rows.Clear();
for (int i = 0; i < 16; i++)
{
Sector sec = currentS50.Sectors[i];
int index = dataGridView1.Rows.Add();
dataGridView1.Rows[index].Cells[0].Value = sec.Info(i);
}
}
private void 退ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
this.currentS50.ExportToMfd(currentFilename);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
logAppend(Resources. + currentFilename + Resources.res);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
string filename;
SaveFileDialog ofd = new SaveFileDialog();
ofd.AddExtension = true;
ofd.DefaultExt = ".mfd";
ofd.Title = Resources.MFD文件保存位置及文件名;
ofd.OverwritePrompt = true;
ofd.Filter = Resources.MFD文件_mfd_DUMP文件_dump;
if (ofd.ShowDialog() == DialogResult.OK)
{
filename = ofd.FileName;
}
else
{
return;
}
try
{
this.currentS50.ExportToMfd(filename);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
logAppend(Resources. + filename + "。");
}
private void block0Edit_Validating(object sender, CancelEventArgs e)
{
const string pattern = @"[0-9A-Fa-f]{32}";
TextBox tb = ((TextBox)sender);
string content = tb.Text.Trim();
if (!(Regex.IsMatch(content, pattern)&&content.Length==32))
{
tb.BackColor = Color.Tomato;
//e.Cancel = true;
}
else
{
tb.BackColor = Color.Aquamarine;
tb.Text = content;
}
}
private void keyAEdit_Validating(object sender, CancelEventArgs e)
{
const string pattern = @"[0-9A-Fa-f]{12}";
TextBox tb = ((TextBox)sender);
string content = tb.Text.Trim();
if (!(Regex.IsMatch(content, pattern) && content.Length == 12))
{
tb.BackColor = Color.Tomato;
//e.Cancel = true;
}
else
{
tb.BackColor = Color.Aquamarine;
tb.Text = content;
}
}
private void buttonSaveSectorEdit_Click(object sender, EventArgs e)
{
if (currentSector >= 0 && currentSector <= 15)
{
this.ValidateChildren();
if (block0Edit.BackColor != Color.Aquamarine
|| block1Edit.BackColor != Color.Aquamarine
|| block2Edit.BackColor != Color.Aquamarine
|| keyAEdit.BackColor != Color.Aquamarine
|| keyBEdit.BackColor != Color.Aquamarine)
{
MessageBox.Show(Resources._不能执行修改);
return;
}
currentS50.Sectors[currentSector].Block[0] = Utils.Hex2Block(block0Edit.Text.Trim(),16);
currentS50.Sectors[currentSector].Block[1] = Utils.Hex2Block(block1Edit.Text.Trim(), 16);
currentS50.Sectors[currentSector].Block[2] = Utils.Hex2Block(block2Edit.Text.Trim(), 16);
byte[] kA = Utils.Hex2Block(keyAEdit.Text.Trim(), 6);
byte[] kB = Utils.Hex2Block(keyBEdit.Text.Trim(), 6);
byte[] ac = new byte[4] {
(byte)comboBox1.SelectedIndex,
(byte)comboBox2.SelectedIndex,
(byte)comboBox3.SelectedIndex,
(byte)comboBox4.SelectedIndex };
byte[] kC = Utils.GenAC(ac);
List<byte> list3=new List<byte>(kA);
list3.AddRange(kC);
list3.AddRange(kB);
byte[] block3 = list3.Take(16).ToArray();
byte lastUC=currentS50.Sectors[currentSector].Block[3][9];
currentS50.Sectors[currentSector].Block[3] = block3;
currentS50.Sectors[currentSector].Block[3][9] = lastUC;
for (int i = 0; i < 16; i++)
{
dataGridView1.Rows[i].Cells[0].Value = currentS50.Sectors[i].Info(i);
}
logAppend(Resources. + currentSector.ToString());
}
}
private void comboBox1_Validating(object sender, CancelEventArgs e)
{
ComboBox tb = ((ComboBox)sender);
if (tb.SelectedIndex < 0 || tb.Text == Resources._文件中的值错误)
{
tb.BackColor = Color.Tomato;
//e.Cancel = true;
}
else
{
tb.BackColor = Color.Aquamarine;
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
int[] res = currentS50.Verify();
if (res[16] == 0)
{
MessageBox.Show(Resources.);
}
else
{
string msg = Resources.;
for (int i = 0; i < 16; i++)
{
msg += Resources. + i.ToString() + "\n";
if ((res[i] & 0x01) == 0x01)
{
msg += Resources.UID校验值错误_请点击打开扇区0来自动更正;
}
if ((res[i] & 0x02) == 0x02)
{
msg += Resources.访_写入将会损坏卡片_请重新设置;
}
if ((res[i] & 0x04) == 0x04)
{
msg += Resources.访_写入将会损坏卡片_请重新设置;
}
if (res[i] == 0)
{
msg += Resources.;
}
}
richTextBox1.Clear();
richTextBox1.Text = msg ;
}
}
private void UIDToolStripMenuItem_Click(object sender, EventArgs e)
{
reloadEdit(-1);
byte[] buid = new byte[4];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetNonZeroBytes(buid);
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(Resources.UID号不合法, Resources.InputError, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
buid = Utils.Hex2Block(uid, 4);
byte bcc=(byte)(buid[0]^buid[1]^buid[2]^buid[3]);
currentS50.Sectors[0].Block[0][0] = buid[0];
currentS50.Sectors[0].Block[0][1] = buid[1];
currentS50.Sectors[0].Block[0][2] = buid[2];
currentS50.Sectors[0].Block[0][3] = buid[3];
currentS50.Sectors[0].Block[0][4] = bcc;
logAppend(Resources.UID已改为 + Form1.hex(buid) + Resources._计算得到BCC + Form1.hex(new byte[]{bcc}));
reloadEdit(0);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
reloadEdit(-1);
this.currentS50 = new S50();
reloadList();
logAppend(Resources.);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
byte[] defaultAC = new byte[] { 0xff, 0x07, 0x80, 0x69 };
int[] res = currentS50.Verify();
if (res[16] == 0)
{
MessageBox.Show(Resources.);
}
else
{
string msg = Resources.;
for (int i = 0; i < 16; i++)
{
msg += Resources. + i.ToString() + "\n";
if ((res[i] & 0x01) == 0x01)
{
currentS50.Sectors[i].Block[0][4]
= (byte)(currentS50.Sectors[i].Block[0][0]
^ currentS50.Sectors[i].Block[0][1]
^ currentS50.Sectors[i].Block[0][2]
^ currentS50.Sectors[i].Block[0][3]);
block0Edit.Text = Form1.hex(currentS50.Sectors[i].Block[0]);
msg += Resources.UID校验值错误_已自动更正;
}
if ((res[i] & 0x02) == 0x02)
{
for (int j = 6; j < 10; j++)
{
currentS50.Sectors[i].Block[3][j] = defaultAC[j - 6];
}
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if ((res[i] & 0x04) == 0x04)
{
for (int j = 6; j < 10; j++)
{
currentS50.Sectors[i].Block[3][j] = defaultAC[j - 6];
}
msg += Resources.访_写入将会损坏卡片_已重新设置;
}
if (res[i] == 0)
{
msg += Resources.;
}
}
richTextBox1.Clear();
richTextBox1.Text=msg;
}
}
private void MCT格式ToolStripMenuItem_Click(object sender, EventArgs e)
{
string filename;
SaveFileDialog ofd = new SaveFileDialog();
ofd.AddExtension = true;
ofd.DefaultExt = ".txt";
ofd.Title = Resources.MCT_txt文件保存位置及文件名;
ofd.OverwritePrompt = true;
ofd.Filter = Resources.txt文件_txt;
if (ofd.ShowDialog() == DialogResult.OK)
{
filename = ofd.FileName;
}
else
{
return;
}
try
{
this.currentS50.ExportToMctTxt(filename);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
}
logAppend(Resources.MCT文件 + filename + "。");
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
string filename;
SaveFileDialog ofd = new SaveFileDialog();
ofd.AddExtension = true;
ofd.DefaultExt = ".dic";
ofd.Title = Resources.;
ofd.OverwritePrompt = true;
ofd.Filter = Resources._dic;
if (ofd.ShowDialog() == DialogResult.OK)
{
filename = ofd.FileName;
}
else
{
return;
}
File.WriteAllLines(filename, this.currentS50.KeyListStr().ToArray());
logAppend(Resources. + filename + "。");
}
private void MCT格式ToolStripMenuItem_Click(object sender, EventArgs e)
{
reloadEdit(-1);
OpenFileDialog ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.Filter = Resources.MCT格式;
ofd.Title = Resources.MCT格式文件;
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
currentFilename = ofd.FileName;
}
else
{
return;
}
this.currentS50 = new S50();
try
{
this.currentS50.LoadFromMctTxt(currentFilename);
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message, Resources., MessageBoxButtons.OK, MessageBoxIcon.Error);
this.currentS50 = new S50();
return;
}
reloadList();
logAppend(Resources. + ofd.FileName);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++)
{
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));
}
richTextBox1.Clear();
richTextBox1.Text = sb.ToString();
}
private void FormHTool_Load(object sender, EventArgs e)
{
ToolStripMenuItem_Click(sender, e);
}
private void keyAEdit_TextChanged(object sender, EventArgs e)
{
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,317 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,320 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,286 +0,0 @@
namespace MifareOneTool
{
partial class FormHardNes
{
/// <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(FormHardNes));
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.radioKey1B = new System.Windows.Forms.RadioButton();
this.radioKey1A = new System.Windows.Forms.RadioButton();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.sector1 = new System.Windows.Forms.TextBox();
this.keyEdit = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.radioKey2B = new System.Windows.Forms.RadioButton();
this.radioKey2A = new System.Windows.Forms.RadioButton();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
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
//
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
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.Name = "button2";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.tableLayoutPanel1);
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// radioKey1B
//
resources.ApplyResources(this.radioKey1B, "radioKey1B");
this.radioKey1B.Name = "radioKey1B";
this.radioKey1B.UseVisualStyleBackColor = true;
//
// radioKey1A
//
resources.ApplyResources(this.radioKey1A, "radioKey1A");
this.radioKey1A.Checked = true;
this.radioKey1A.Name = "radioKey1A";
this.radioKey1A.TabStop = true;
this.radioKey1A.UseVisualStyleBackColor = true;
//
// label4
//
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4";
//
// label3
//
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
//
// sector1
//
resources.ApplyResources(this.sector1, "sector1");
this.sector1.Name = "sector1";
//
// keyEdit
//
resources.ApplyResources(this.keyEdit, "keyEdit");
this.keyEdit.Name = "keyEdit";
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.ForeColor = System.Drawing.Color.Blue;
this.label1.Name = "label1";
//
// radioKey2B
//
resources.ApplyResources(this.radioKey2B, "radioKey2B");
this.radioKey2B.Name = "radioKey2B";
this.radioKey2B.UseVisualStyleBackColor = true;
//
// radioKey2A
//
resources.ApplyResources(this.radioKey2A, "radioKey2A");
this.radioKey2A.Checked = true;
this.radioKey2A.Name = "radioKey2A";
this.radioKey2A.TabStop = true;
this.radioKey2A.UseVisualStyleBackColor = true;
//
// label5
//
resources.ApplyResources(this.label5, "label5");
this.label5.Name = "label5";
//
// label6
//
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
//
// groupBox2
//
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.tableLayoutPanel4);
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
// checkBoxColOnly
//
resources.ApplyResources(this.checkBoxColOnly, "checkBoxColOnly");
this.checkBoxColOnly.Name = "checkBoxColOnly";
this.checkBoxColOnly.UseVisualStyleBackColor = true;
//
// sector2
//
resources.ApplyResources(this.sector2, "sector2");
this.sector2.Name = "sector2";
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.radioKey1B, 3, 1);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.radioKey1A, 2, 1);
this.tableLayoutPanel1.Controls.Add(this.keyEdit, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.label4, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.label3, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.sector1, 1, 1);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.Controls.Add(this.radioKey2B, 3, 1);
this.tableLayoutPanel2.Controls.Add(this.radioKey2A, 2, 1);
this.tableLayoutPanel2.Controls.Add(this.label6, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.label5, 2, 0);
this.tableLayoutPanel2.Controls.Add(this.sector2, 1, 1);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// tableLayoutPanel3
//
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
this.tableLayoutPanel3.Controls.Add(this.groupBox1, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.flowLayoutPanel1, 0, 2);
this.tableLayoutPanel3.Controls.Add(this.groupBox2, 0, 1);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
//
// tableLayoutPanel4
//
resources.ApplyResources(this.tableLayoutPanel4, "tableLayoutPanel4");
this.tableLayoutPanel4.Controls.Add(this.tableLayoutPanel2, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.checkBoxColOnly, 0, 0);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
//
// tableLayoutPanel5
//
resources.ApplyResources(this.tableLayoutPanel5, "tableLayoutPanel5");
this.tableLayoutPanel5.Controls.Add(this.button2, 0, 0);
this.tableLayoutPanel5.Controls.Add(this.button1, 1, 0);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.label1);
this.flowLayoutPanel1.Controls.Add(this.tableLayoutPanel5);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// FormHardNes
//
this.AcceptButton = this.button1;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.button2;
this.ControlBox = false;
this.Controls.Add(this.tableLayoutPanel3);
this.KeyPreview = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormHardNes";
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();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.RadioButton radioKey1B;
private System.Windows.Forms.RadioButton radioKey1A;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox keyEdit;
private System.Windows.Forms.RadioButton radioKey2B;
private System.Windows.Forms.RadioButton radioKey2A;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.GroupBox groupBox2;
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,126 +0,0 @@
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.Text.RegularExpressions;
namespace MifareOneTool
{
public partial class FormHardNes : Form
{
public FormHardNes()
{
InitializeComponent();
}
static int getBlock(int sector)
{//可能有bug
int trailer_block = 0;
if (sector < 32)
{
trailer_block = sector * 4 + 3;
}
else
{
trailer_block = 128 + 16 * (sector - 32) + 15;
}
return trailer_block;
}
public string GetArg()
{
string arg = "";
arg += keyEdit.Text.ToUpper() + " ";
arg += getBlock(Convert.ToInt32(sector1.Text.Trim())).ToString() + " ";
arg += (radioKey1A.Checked ? "A" : "B") + " ";
arg += getBlock(Convert.ToInt32(sector2.Text.Trim())).ToString() + " ";
arg += radioKey2A.Checked ? "A" : "B";
return arg;
}
public string GetFileAfter()
{
string a = "_";
a += string.Format("{0:D3}", getBlock(Convert.ToInt32(sector2.Text.Trim())));
a += radioKey2A.Checked ? "A" : "B";
a += ".txt";
return a;
}
public bool collectOnly()
{
return checkBoxColOnly.Checked;
}
private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
bool error = false;
const string pattern = @"[0-9A-Fa-f]{12}";
TextBox tb = keyEdit;
string content = tb.Text.Trim();
if (!(Regex.IsMatch(content, pattern) && content.Length == 12))
{
tb.BackColor = Color.Tomato;
error = true;
}
else
{
tb.BackColor = Color.Aquamarine;
tb.Text = content;
}
int sec1, sec2;
if (!int.TryParse(sector1.Text, out sec1))
{
sector1.BackColor = Color.Tomato;
error = true;
}
else
{
if (sec1 >= 0)
{
sector1.BackColor = Color.Aquamarine;
}
else
{
sector1.BackColor = Color.Tomato;
error = true;
}
}
if (!int.TryParse(sector2.Text, out sec2))
{
sector2.BackColor = Color.Tomato;
error = true;
}
else
{
if (sec2 >= 0)
{
sector2.BackColor = Color.Aquamarine;
}
else
{
sector2.BackColor = Color.Tomato;
error = true;
}
}
if (error)
{
MessageBox.Show(Resources._请修改);
return;
}
this.DialogResult = DialogResult.Yes;
this.Close();
}
}
}

View File

@ -1,921 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,180 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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>

View File

@ -1,160 +0,0 @@
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;
}
}

View File

@ -1,133 +0,0 @@
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

@ -1,491 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="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,5 +1,4 @@
using MifareOneTool.Properties;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -13,38 +12,20 @@ namespace MifareOneTool
{
class GitHubUpdate
{
public Version localVersion;
public string remoteVersion=Resources.;
public void Update(string GitHubR)
{
try
{//.net4.5可用
//处理HttpWebRequest访问https有安全证书的问题 请求被中止: 未能创建 SSL/TLS 安全通道。)
//System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var request = (HttpWebRequest)WebRequest.Create("https://api.github.com/repos/" + GitHubR + "/releases/latest");
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
JObject jo = JObject.Parse(responseString);
if (jo.GetValue("message") == null)
{
dynamic json = Newtonsoft.Json.Linq.JToken.Parse(responseString) as dynamic;
if (json.prerelease == false)
{
this.remoteVersion = (string)json.tag_name;
}
}
else
{
Console.Error.WriteLine("GitHub更新失效");
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
public GitHubUpdate(string GitHubR)
Version localVersion;
Version remoteVersion;
//public static T FromJSON<T>(this string input)
//{
// try
// {
// return JsonConvert.DeserializeObject<T>(input);
// }
// catch (Exception ex)
// {
// return default(T);
// }
//}
void _GitHubUpdate(string GitHubR)
{
this.localVersion = Assembly.GetExecutingAssembly().GetName().Version;
try
@ -57,7 +38,7 @@ namespace MifareOneTool
{
dynamic json = Newtonsoft.Json.Linq.JToken.Parse(responseString) as dynamic;
if(json.prerelease==false){
this.remoteVersion=(string)json.tag_name;
;
}
}
else

View File

@ -35,7 +35,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Сборки\</OutputPath>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -49,9 +49,6 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>nfc_128.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="Newtonsoft.Json">
@ -59,7 +56,6 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Net" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@ -70,101 +66,27 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ClassMifareS50.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="FormDiff.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormDiff.Designer.cs">
<DependentUpon>FormDiff.cs</DependentUpon>
</Compile>
<Compile Include="FormHardNes.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormHardNes.Designer.cs">
<DependentUpon>FormHardNes.cs</DependentUpon>
</Compile>
<Compile Include="FormHTool.cs">
<SubType>Form</SubType>
</Compile>
<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>PublicResXFileCodeGenerator</Generator>
<Generator>ResXFileCodeGenerator</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>
@ -198,27 +120,6 @@
<Install>true</Install>
</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.
Other similar extension points exist, see Microsoft.Common.targets.

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,7 @@
using MifareOneTool.Properties;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
using System.Reflection;
namespace MifareOneTool
{
@ -16,38 +13,9 @@ namespace MifareOneTool
[STAThread]
static void Main()
{
if (Properties.Settings.Default.MultiMode)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
bool ret;
System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out ret);
if (ret)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
mutex.ReleaseMutex();
}
else
{
if (MessageBox.Show(Resources.MifareOne_Tool_打开多个本程序可能, Resources., MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
mutex.ReleaseMutex();
}
else
{
Application.Exit();
}
}
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@ -10,8 +10,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("XciCode")]
[assembly: AssemblyProduct("MifareOneTool")]
[assembly: AssemblyCopyright("Copyright © XciCode 2018-2019")]
[assembly: AssemblyTrademark("M1T")]
[assembly: AssemblyCopyright("Copyright © XciCode 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.7.0.0")]
[assembly: AssemblyFileVersion("1.7.0.0")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.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.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@ -60,7 +60,6 @@
: 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">
@ -69,10 +68,9 @@
<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="name" 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">
@ -87,10 +85,9 @@
<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="name" type="xsd:string" 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">
@ -112,494 +109,9 @@
<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>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.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>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.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

@ -1,556 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_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

@ -1,565 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="_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", "16.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@ -31,161 +31,5 @@ namespace MifareOneTool.Properties {
return ((string)(this["GitHubR"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool AutoABN {
get {
return ((bool)(this["AutoABN"]));
}
set {
this["AutoABN"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool WriteCheck {
get {
return ((bool)(this["WriteCheck"]));
}
set {
this["WriteCheck"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool AutoLoadUidKey {
get {
return ((bool)(this["AutoLoadUidKey"]));
}
set {
this["AutoLoadUidKey"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("192, 255, 255")]
public global::System.Drawing.Color MainCLIColor {
get {
return ((global::System.Drawing.Color)(this["MainCLIColor"]));
}
set {
this["MainCLIColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("9")]
public float MainCLIFontSize {
get {
return ((float)(this["MainCLIFontSize"]));
}
set {
this["MainCLIFontSize"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DefIsAdv {
get {
return ((bool)(this["DefIsAdv"]));
}
set {
this["DefIsAdv"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool AutoSave {
get {
return ((bool)(this["AutoSave"]));
}
set {
this["AutoSave"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool HardLowCost {
get {
return ((bool)(this["HardLowCost"]));
}
set {
this["HardLowCost"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("ffffffffffff")]
public string LastTryKey {
get {
return ((string)(this["LastTryKey"]));
}
set {
this["LastTryKey"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool NewScan {
get {
return ((bool)(this["NewScan"]));
}
set {
this["NewScan"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MultiMode {
get {
return ((bool)(this["MultiMode"]));
}
set {
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

@ -5,44 +5,5 @@
<Setting Name="GitHubR" Type="System.String" Scope="Application">
<Value Profile="(Default)">xcicode/MifareOneTool</Value>
</Setting>
<Setting Name="AutoABN" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="WriteCheck" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="AutoLoadUidKey" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="MainCLIColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">192, 255, 255</Value>
</Setting>
<Setting Name="MainCLIFontSize" Type="System.Single" Scope="User">
<Value Profile="(Default)">9</Value>
</Setting>
<Setting Name="DefIsAdv" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="AutoSave" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="HardLowCost" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="LastTryKey" Type="System.String" Scope="User">
<Value Profile="(Default)">ffffffffffff</Value>
</Setting>
<Setting Name="NewScan" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<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.

Before

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

View File

@ -1,286 +0,0 @@
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;
}
}
}

View File

@ -1,161 +0,0 @@
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

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -4,9 +4,6 @@
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MifareOneTool.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MifareOneTool.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<MifareOneTool.Properties.Settings>
@ -15,47 +12,4 @@
</setting>
</MifareOneTool.Properties.Settings>
</applicationSettings>
<userSettings>
<MifareOneTool.Properties.Settings>
<setting name="AutoABN" serializeAs="String">
<value>True</value>
</setting>
<setting name="WriteCheck" serializeAs="String">
<value>True</value>
</setting>
<setting name="AutoLoadUidKey" serializeAs="String">
<value>True</value>
</setting>
<setting name="MainCLIColor" serializeAs="String">
<value>192, 255, 255</value>
</setting>
<setting name="MainCLIFontSize" serializeAs="String">
<value>9</value>
</setting>
<setting name="DefIsAdv" serializeAs="String">
<value>False</value>
</setting>
<setting name="AutoSave" serializeAs="String">
<value>False</value>
</setting>
<setting name="HardLowCost" serializeAs="String">
<value>False</value>
</setting>
<setting name="LastTryKey" serializeAs="String">
<value>ffffffffffff</value>
</setting>
<setting name="NewScan" serializeAs="String">
<value>True</value>
</setting>
<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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

View File

@ -1,4 +1,27 @@
# MifareOneTool
A GUI Mifare Classic tool on Windows
因作者事务繁忙,软件不再更新。
## 安装
1. [下载最新发布](https://github.com/xcicode/MifareOneTool/releases/latest)
2. 解压M1T-Release.zip到独立目录建议目录中不雅出现空格
3. 就绪!
## 兼容设备
PN532-UART
## 功能
检测检测NFC设备连接状态
手动扫描: 扫描读卡器上的卡片并显示基本信息
手动CLI 打开cmd切换到nfc-bin/下,可手动调用命令行工具
读卡: 读取普通卡片需要指定KeyA/B如果不是默认密码或空白卡片需要指定密钥文件
写卡: 写入普通卡片需要指定KeyA/B如果不是默认密码或空白卡片需要指定密钥文件
选择key.mfd 指定密钥文件
UID重置 将UID卡的UID重置为随机数
UID全格 执行[UID重置]并清空所有扇区数据、恢复访问控制位
UID写号 将UID卡的UID设置为指定号码
MFOC 执行半加密卡Nested破解(仅建议针对SAK=08的卡片使用
后门读: 读取UID卡忽视扇区密钥
后门写: 写入UID卡忽视扇区密钥
清空终端: 清空终端缓冲区显示的文本
保存日志: 将终端缓冲区的文本保存至m1t.log文件中
停止运行: 强行停止正在运行的功能