Skip to content

Commit 835cc87

Browse files
authored
Merge pull request #7 from xcicode/dev
Dev
2 parents 3f0fb90 + 91d2bdb commit 835cc87

13 files changed

+976
-264
lines changed

MifareOneTool/ClassMifareS50.cs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ public static string Hex2Str(byte[] bytes)
1818
}
1919
return ret.ToString();
2020
}
21+
public static string Hex2StrS(byte[] bytes)
22+
{
23+
StringBuilder ret = new StringBuilder();
24+
foreach (byte b in bytes)
25+
{
26+
ret.AppendFormat("{0:x2}", b);
27+
ret.Append(" ");
28+
}
29+
return ret.ToString();
30+
}
2131
public static byte[] ReadAC(byte[] ac)
2232
{
2333
byte[] acbits = new byte[4];
@@ -227,6 +237,21 @@ public string Info(int sec)
227237
}
228238
return info;
229239
}
240+
public byte[] KeyA
241+
{
242+
get { return this._sector[3].Skip(0).Take(6).ToArray(); }
243+
set { for (int i = 0; i < 6; i++) { this._sector[3][i] = value[i]; } }
244+
}
245+
public byte[] KeyB
246+
{
247+
get { return this._sector[3].Skip(10).Take(6).ToArray(); }
248+
set { for (int i = 10; i < 16; i++) { this._sector[3][i] = value[i]; } }
249+
}
250+
public byte[] ACBits
251+
{
252+
get { return this._sector[3].Skip(6).Take(4).ToArray(); }
253+
set { for (int i = 6; i < 10; i++) { this._sector[3][i] = value[i]; } }
254+
}
230255
}
231256
class S50
232257
{
@@ -337,5 +362,27 @@ public void ExportToMctTxt(string file)
337362
}
338363
File.WriteAllText(file, sb.ToString());
339364
}
365+
public List<byte[]> KeyList()
366+
{
367+
List<byte[]> keys = new List<byte[]>();
368+
foreach (Sector s in this._sectors)
369+
{
370+
keys.Add(s.KeyA);
371+
keys.Add(s.KeyB);
372+
}
373+
keys = keys.Distinct().ToList();
374+
return keys;
375+
}
376+
public List<string> KeyListStr()
377+
{
378+
List<string> keys = new List<string>();
379+
foreach (Sector s in this._sectors)
380+
{
381+
keys.Add(Utils.Hex2Str(s.KeyA));
382+
keys.Add(Utils.Hex2Str(s.KeyB));
383+
}
384+
keys = keys.Distinct().ToList();
385+
return keys;
386+
}
340387
}
341388
}

MifareOneTool/Form1.Designer.cs

Lines changed: 240 additions & 140 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

MifareOneTool/Form1.cs

Lines changed: 181 additions & 83 deletions
Large diffs are not rendered by default.

MifareOneTool/Form1.resx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,22 @@
126126
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
127127
<value>157, 17</value>
128128
</metadata>
129+
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
130+
<data name="toolStripCheckUpdate.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
131+
<value>
132+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
133+
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
134+
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
135+
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
136+
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
137+
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
138+
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
139+
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
140+
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
141+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
142+
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
143+
</value>
144+
</data>
129145
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
130146
<value>297, 17</value>
131147
</metadata>

MifareOneTool/FormDiff.Designer.cs

Lines changed: 107 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

MifareOneTool/FormDiff.cs

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Data;
5+
using System.Drawing;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Windows.Forms;
9+
using System.IO;
10+
11+
namespace MifareOneTool
12+
{
13+
public partial class FormDiff : Form
14+
{
15+
public FormDiff()
16+
{
17+
InitializeComponent();
18+
}
19+
20+
private S50 sa = new S50();
21+
private S50 sb = new S50();
22+
private string fa = "";
23+
private string fb = "";
24+
25+
private void button1_Click(object sender, EventArgs e)
26+
{
27+
OpenFileDialog ofd = new OpenFileDialog();
28+
ofd.CheckFileExists = true;
29+
ofd.Filter = "MFD文件|*.mfd;*.dump";
30+
ofd.Title = "请选择需要打开的MFD文件(比较A)";
31+
ofd.Multiselect = false;
32+
if (ofd.ShowDialog() == DialogResult.OK)
33+
{
34+
fa = ofd.FileName;
35+
}
36+
else
37+
{
38+
return;
39+
}
40+
sa = new S50();
41+
try
42+
{
43+
sa.LoadFromMfd(fa);
44+
button1.Text = "A=" + ofd.SafeFileName;
45+
}
46+
catch (IOException ioe)
47+
{
48+
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
49+
sa = new S50();
50+
return;
51+
}
52+
}
53+
54+
private void FormDiff_Load(object sender, EventArgs e)
55+
{
56+
}
57+
private void logAppend(string msg)
58+
{
59+
richTextBox1.AppendText(msg + "\n");
60+
richTextBox1.ScrollToCaret();
61+
}
62+
63+
private void button2_Click(object sender, EventArgs e)
64+
{
65+
OpenFileDialog ofd = new OpenFileDialog();
66+
ofd.CheckFileExists = true;
67+
ofd.Filter = "MFD文件|*.mfd;*.dump";
68+
ofd.Title = "请选择需要打开的MFD文件(比较B)";
69+
ofd.Multiselect = false;
70+
if (ofd.ShowDialog() == DialogResult.OK)
71+
{
72+
fb = ofd.FileName;
73+
}
74+
else
75+
{
76+
return;
77+
}
78+
sb = new S50();
79+
try
80+
{
81+
sb.LoadFromMfd(fb);
82+
button2.Text = "B=" + ofd.SafeFileName;
83+
}
84+
catch (IOException ioe)
85+
{
86+
MessageBox.Show(ioe.Message, "打开出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
87+
sb = new S50();
88+
return;
89+
}
90+
}
91+
92+
private void button3_Click(object sender, EventArgs e)
93+
{
94+
if (File.Exists(fa) && File.Exists(fb))
95+
{
96+
richTextBox1.Clear();
97+
richTextBox1.Text=Compare();
98+
}
99+
else
100+
{
101+
logAppend("AB文件中一个或两个无效。");
102+
}
103+
}
104+
private string Compare()
105+
{
106+
StringBuilder stb = new StringBuilder();
107+
for (int i = 0; i < 16; i++)
108+
{
109+
stb.AppendLine("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
110+
stb.AppendLine("扇区 " + i.ToString());
111+
for (int a = 0; a < 4; a++)
112+
{
113+
string res="";
114+
for(int b=0;b<16;b++){
115+
if(sa.Sectors[i].Block[a][b]==sb.Sectors[i].Block[a][b]){
116+
res+="-- ";
117+
}else{
118+
res+="## ";
119+
}
120+
}
121+
stb.AppendLine("A: " + Utils.Hex2StrS(sa.Sectors[i].Block[a]));
122+
stb.AppendLine("B: " + Utils.Hex2StrS(sb.Sectors[i].Block[a]));
123+
stb.AppendLine(" " + res);
124+
}
125+
126+
}
127+
return stb.ToString();
128+
}
129+
}
130+
}

0 commit comments

Comments
 (0)