Compare commits
No commits in common. "dev" and "v1.3.0" have entirely different histories.
20
.github/ISSUE_TEMPLATE/---request.md
vendored
@ -1,20 +0,0 @@
|
||||
---
|
||||
name: 新特性Request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**提出这个新功能的要求是不是因为在使用过程中遇到了问题?**
|
||||
讲讲。
|
||||
|
||||
**说说你的看法**
|
||||
简洁明了的描述一下你的设想。
|
||||
|
||||
**有没有备选方案呢?**
|
||||
说说看。
|
||||
|
||||
**还有什么想说的?**
|
||||
比如,截屏/简图?
|
||||
34
.github/ISSUE_TEMPLATE/bug--.md
vendored
@ -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
@ -330,4 +330,4 @@ ASALocalRun/
|
||||
.mfractor/
|
||||
|
||||
nfc-bin.zip
|
||||
DirectOP/
|
||||
Setup1/
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.不恰当的4字节UID长度); }
|
||||
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()
|
||||
{
|
||||
/* 检验该块内容是否合法
|
||||
* 0块:检查BCC
|
||||
* 非0块:检查访问控制
|
||||
* ********
|
||||
* 0000:正常
|
||||
* 0001:BCC错
|
||||
* 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.不恰当的4字节UID长度); }
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
1695
MifareOneTool/Form1.Designer.cs
generated
125
MifareOneTool/FormDiff.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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=">>richTextBox1.Name" xml:space="preserve">
|
||||
<value>richTextBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>richTextBox1.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>button1.Name" xml:space="preserve">
|
||||
<value>button1</value>
|
||||
</data>
|
||||
<data name=">>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=">>button1.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>button2.Name" xml:space="preserve">
|
||||
<value>button2</value>
|
||||
</data>
|
||||
<data name=">>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=">>button2.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>button2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="button3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="button3.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="button3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="button3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>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=">>button3.Name" xml:space="preserve">
|
||||
<value>button3</value>
|
||||
</data>
|
||||
<data name=">>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=">>button3.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>button3.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
|
||||
<value>TopDown</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>295, 54</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>346, 60</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
|
||||
<value>TopDown</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>370, 456</value>
|
||||
</data>
|
||||
<data name="flowLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.Name" xml:space="preserve">
|
||||
<value>flowLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel2.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<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=">>$this.Name" xml:space="preserve">
|
||||
<value>FormDiff</value>
|
||||
</data>
|
||||
<data name=">>$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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
594
MifareOneTool/FormHTool.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
@ -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>
|
||||
286
MifareOneTool/FormHardNes.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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=">>button1.Name" xml:space="preserve">
|
||||
<value>button1</value>
|
||||
</data>
|
||||
<data name=">>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=">>button1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel5</value>
|
||||
</data>
|
||||
<data name=">>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=">>button2.Name" xml:space="preserve">
|
||||
<value>button2</value>
|
||||
</data>
|
||||
<data name=">>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=">>button2.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel5</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="radioKey1B" Row="1" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioKey1A" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="keyEdit" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="label3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="sector1" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0" /></TableLayoutSettings></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=">>groupBox1.Name" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel3</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey1B.Name" xml:space="preserve">
|
||||
<value>radioKey1B</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey1B.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey1A.Name" xml:space="preserve">
|
||||
<value>radioKey1A</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey1A.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>label4.Name" xml:space="preserve">
|
||||
<value>label4</value>
|
||||
</data>
|
||||
<data name=">>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=">>label4.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>label3.Name" xml:space="preserve">
|
||||
<value>label3</value>
|
||||
</data>
|
||||
<data name=">>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=">>label3.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>sector1.Name" xml:space="preserve">
|
||||
<value>sector1</value>
|
||||
</data>
|
||||
<data name=">>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=">>sector1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>keyEdit.Name" xml:space="preserve">
|
||||
<value>keyEdit</value>
|
||||
</data>
|
||||
<data name=">>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=">>keyEdit.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>label2.Name" xml:space="preserve">
|
||||
<value>label2</value>
|
||||
</data>
|
||||
<data name=">>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=">>label2.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>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=">>label1.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey2B.Name" xml:space="preserve">
|
||||
<value>radioKey2B</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey2B.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey2A.Name" xml:space="preserve">
|
||||
<value>radioKey2A</value>
|
||||
</data>
|
||||
<data name=">>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=">>radioKey2A.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>label5.Name" xml:space="preserve">
|
||||
<value>label5</value>
|
||||
</data>
|
||||
<data name=">>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=">>label5.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>label6.Name" xml:space="preserve">
|
||||
<value>label6</value>
|
||||
</data>
|
||||
<data name=">>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=">>label6.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel4.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel4</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel4.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel4.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel4.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="checkBoxColOnly" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Absolute,20" /></TableLayoutSettings></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=">>groupBox2.Name" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox2.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel3</value>
|
||||
</data>
|
||||
<data name=">>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=">>checkBoxColOnly.Name" xml:space="preserve">
|
||||
<value>checkBoxColOnly</value>
|
||||
</data>
|
||||
<data name=">>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=">>checkBoxColOnly.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel4</value>
|
||||
</data>
|
||||
<data name=">>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=">>sector2.Name" xml:space="preserve">
|
||||
<value>sector2</value>
|
||||
</data>
|
||||
<data name=">>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=">>sector2.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel2.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel2.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel4</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel2.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="radioKey2B" Row="1" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="radioKey2A" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="label6" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label5" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="sector2" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0" /></TableLayoutSettings></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=">>tableLayoutPanel5.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel5</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel5.Parent" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel5.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel5.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50" /><Rows Styles="Percent,50" /></TableLayoutSettings></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=">>flowLayoutPanel1.Name" xml:space="preserve">
|
||||
<value>flowLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>flowLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel3</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel3.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel3</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel3.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel3.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="groupBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="groupBox2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings></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=">>$this.Name" xml:space="preserve">
|
||||
<value>FormHardNes</value>
|
||||
</data>
|
||||
<data name=">>$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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
160
MifareOneTool/FormMFF08.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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却没有改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>
|
||||
<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=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>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=">>label1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox1.Name" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonClr.Name" xml:space="preserve">
|
||||
<value>buttonClr</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonClr.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonLoadKey.Name" xml:space="preserve">
|
||||
<value>buttonLoadKey</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonLoadKey.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>keyfileBox.Name" xml:space="preserve">
|
||||
<value>keyfileBox</value>
|
||||
</data>
|
||||
<data name=">>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=">>keyfileBox.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>label2.Name" xml:space="preserve">
|
||||
<value>label2</value>
|
||||
</data>
|
||||
<data name=">>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=">>label2.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonKeyWrite.Name" xml:space="preserve">
|
||||
<value>buttonKeyWrite</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonKeyWrite.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonWriteEmpty.Name" xml:space="preserve">
|
||||
<value>buttonWriteEmpty</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonWriteEmpty.Parent" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox2.Name" xml:space="preserve">
|
||||
<value>groupBox2</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>logBox.Name" xml:space="preserve">
|
||||
<value>logBox</value>
|
||||
</data>
|
||||
<data name=">>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=">>logBox.Parent" xml:space="preserve">
|
||||
<value>groupBox3</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox3.Name" xml:space="preserve">
|
||||
<value>groupBox3</value>
|
||||
</data>
|
||||
<data name=">>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=">>groupBox3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>$this.Name" xml:space="preserve">
|
||||
<value>FormMFF08</value>
|
||||
</data>
|
||||
<data name=">>$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>
|
||||
@ -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>
|
||||
@ -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却没有改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>
|
||||
@ -1,5 +1,4 @@
|
||||
using MifareOneTool.Properties;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@ -13,37 +12,19 @@ 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());
|
||||
}
|
||||
}
|
||||
Version localVersion;
|
||||
Version remoteVersion;
|
||||
//public static T FromJSON<T>(this string input)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// return JsonConvert.DeserializeObject<T>(input);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// return default(T);
|
||||
// }
|
||||
//}
|
||||
public GitHubUpdate(string GitHubR)
|
||||
{
|
||||
this.localVersion = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.3.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.3.0.0")]
|
||||
|
||||
1501
MifareOneTool/Properties/Resources.Designer.cs
generated
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
166
MifareOneTool/Properties/Settings.Designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
Before Width: | Height: | Size: 247 B |
|
Before Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 200 B |
|
Before Width: | Height: | Size: 191 B |
|
Before Width: | Height: | Size: 309 B |
|
Before Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 309 B |
|
Before Width: | Height: | Size: 309 B |
|
Before Width: | Height: | Size: 162 B |
|
Before Width: | Height: | Size: 248 B |
|
Before Width: | Height: | Size: 273 B |
|
Before Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 214 B |
|
Before Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 271 B |
|
Before Width: | Height: | Size: 328 B |
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
161
MifareOneTool/SelectLanguage.designer.cs
generated
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
@ -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>
|
||||
|
Before Width: | Height: | Size: 66 KiB |
25
README.md
@ -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文件中
|
||||
停止运行: 强行停止正在运行的功能
|
||||
|
||||