Files
kami_itunes_june/AppleBatch_June.Utils/ClientInfoCode.cs
2024-07-22 00:43:14 +08:00

247 lines
7.3 KiB
C#

using System.Collections.Generic;
using System.Globalization;
using System.Text.RegularExpressions;
namespace AppleBatch_June.Utils
{
public class ClientInfoCode
{
private Dictionary<int, int[]> dict_w;
private string key_A = ".0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";
private string[] dict_y = new string[31]
{
"%20", ";;;", "%3B", "%2C", "und", "fin", "ed;", "%28", "%29", "%3A",
"/53", "ike", "Web", "0;", ".0", "e;", "on", "il", "ck", "01",
"in", "Mo", "fa", "00", "32", "la", ".1", "ri", "it", "%u",
"le"
};
private string[] unicode_list = new string[31]
{
"\u0001", "\u0002", "\u0003", "\u0004", "\u0005", "\u0006", "\a", "\b", "\t", "\n",
"\v", "\f", "\r", "\u000e", "\u000f", "\u0010", "\u0011", "\u0012", "\u0013", "\u0014",
"\u0015", "\u0016", "\u0017", "\u0018", "\u0019", "\u001a", "\u001b", "\u001c", "\u001d", "\u001e",
"\u001f"
};
private string this_n = "";
private int this_r;
private int this_o;
public ClientInfoCode()
{
dict_w = new Dictionary<int, int[]>();
dict_w.Add(0, new int[2] { 16, 44928 });
dict_w.Add(1, new int[2] { 4, 15 });
dict_w.Add(2, new int[2] { 5, 3 });
dict_w.Add(3, new int[2] { 6, 4 });
dict_w.Add(4, new int[2] { 7, 110 });
dict_w.Add(5, new int[2] { 7, 107 });
dict_w.Add(6, new int[2] { 7, 104 });
dict_w.Add(7, new int[2] { 7, 97 });
dict_w.Add(8, new int[2] { 7, 72 });
dict_w.Add(9, new int[2] { 7, 71 });
dict_w.Add(10, new int[2] { 7, 63 });
dict_w.Add(11, new int[2] { 8, 181 });
dict_w.Add(12, new int[2] { 8, 170 });
dict_w.Add(13, new int[2] { 8, 117 });
dict_w.Add(14, new int[2] { 6, 24 });
dict_w.Add(15, new int[2] { 7, 91 });
dict_w.Add(16, new int[2] { 7, 88 });
dict_w.Add(17, new int[2] { 7, 73 });
dict_w.Add(18, new int[2] { 7, 69 });
dict_w.Add(19, new int[2] { 7, 57 });
dict_w.Add(20, new int[2] { 7, 16 });
dict_w.Add(21, new int[2] { 7, 31 });
dict_w.Add(22, new int[2] { 7, 33 });
dict_w.Add(23, new int[2] { 7, 18 });
dict_w.Add(24, new int[2] { 7, 45 });
dict_w.Add(25, new int[2] { 8, 232 });
dict_w.Add(26, new int[2] { 8, 210 });
dict_w.Add(27, new int[2] { 8, 179 });
dict_w.Add(28, new int[2] { 8, 178 });
dict_w.Add(29, new int[2] { 8, 174 });
dict_w.Add(30, new int[2] { 8, 172 });
dict_w.Add(31, new int[2] { 8, 158 });
dict_w.Add(37, new int[2] { 7, 44 });
dict_w.Add(42, new int[2] { 15, 22465 });
dict_w.Add(43, new int[2] { 9, 45 });
dict_w.Add(45, new int[2] { 7, 96 });
dict_w.Add(46, new int[2] { 6, 51 });
dict_w.Add(47, new int[2] { 6, 14 });
dict_w.Add(48, new int[2] { 6, 33 });
dict_w.Add(49, new int[2] { 5, 5 });
dict_w.Add(50, new int[2] { 5, 10 });
dict_w.Add(51, new int[2] { 5, 9 });
dict_w.Add(52, new int[2] { 5, 1 });
dict_w.Add(53, new int[2] { 5, 6 });
dict_w.Add(54, new int[2] { 5, 0 });
dict_w.Add(55, new int[2] { 6, 37 });
dict_w.Add(56, new int[2] { 7, 117 });
dict_w.Add(57, new int[2] { 7, 118 });
dict_w.Add(59, new int[2] { 5, 23 });
dict_w.Add(64, new int[2] { 16, 44929 });
dict_w.Add(65, new int[2] { 7, 68 });
dict_w.Add(66, new int[2] { 8, 64 });
dict_w.Add(67, new int[2] { 7, 56 });
dict_w.Add(68, new int[2] { 9, 318 });
dict_w.Add(69, new int[2] { 7, 60 });
dict_w.Add(70, new int[2] { 7, 10 });
dict_w.Add(71, new int[2] { 8, 233 });
dict_w.Add(72, new int[2] { 8, 180 });
dict_w.Add(73, new int[2] { 8, 23 });
dict_w.Add(74, new int[2] { 8, 238 });
dict_w.Add(75, new int[2] { 7, 17 });
dict_w.Add(76, new int[2] { 7, 46 });
dict_w.Add(77, new int[2] { 7, 70 });
dict_w.Add(78, new int[2] { 8, 124 });
dict_w.Add(79, new int[2] { 8, 116 });
dict_w.Add(80, new int[2] { 7, 61 });
dict_w.Add(81, new int[2] { 9, 350 });
dict_w.Add(82, new int[2] { 9, 422 });
dict_w.Add(83, new int[2] { 6, 26 });
dict_w.Add(84, new int[2] { 6, 38 });
dict_w.Add(85, new int[2] { 8, 38 });
dict_w.Add(86, new int[2] { 8, 39 });
dict_w.Add(87, new int[2] { 9, 44 });
dict_w.Add(88, new int[2] { 10, 703 });
dict_w.Add(89, new int[2] { 12, 2809 });
dict_w.Add(90, new int[2] { 14, 11233 });
dict_w.Add(95, new int[2] { 8, 94 });
dict_w.Add(97, new int[2] { 6, 50 });
dict_w.Add(98, new int[2] { 8, 171 });
dict_w.Add(99, new int[2] { 7, 84 });
dict_w.Add(100, new int[2] { 7, 78 });
dict_w.Add(101, new int[2] { 5, 28 });
dict_w.Add(102, new int[2] { 9, 319 });
dict_w.Add(103, new int[2] { 9, 423 });
dict_w.Add(104, new int[2] { 7, 111 });
dict_w.Add(105, new int[2] { 6, 54 });
dict_w.Add(106, new int[2] { 7, 30 });
dict_w.Add(107, new int[2] { 13, 5617 });
dict_w.Add(108, new int[2] { 6, 17 });
dict_w.Add(109, new int[2] { 7, 106 });
dict_w.Add(110, new int[2] { 8, 239 });
dict_w.Add(111, new int[2] { 6, 49 });
dict_w.Add(112, new int[2] { 6, 40 });
dict_w.Add(113, new int[2] { 11, 1405 });
dict_w.Add(114, new int[2] { 6, 27 });
dict_w.Add(115, new int[2] { 6, 25 });
dict_w.Add(116, new int[2] { 6, 32 });
dict_w.Add(117, new int[2] { 6, 41 });
dict_w.Add(118, new int[2] { 8, 173 });
dict_w.Add(119, new int[2] { 7, 59 });
dict_w.Add(120, new int[2] { 8, 65 });
dict_w.Add(121, new int[2] { 8, 125 });
dict_w.Add(122, new int[2] { 8, 95 });
}
public void t(int[] e)
{
this_r = (this_r << e[0]) | e[1];
this_o += e[0];
while (this_o >= 6)
{
int num = (this_r >> this_o - 6) & 0x3F;
this_n += key_A.Substring(num, 1);
this_r ^= num << (this_o -= 6);
}
}
public string do_l(string e)
{
int[] e2 = new int[2]
{
6,
((7 & e.Length) << 3) | 0
};
t(e2);
int[] e3 = new int[2]
{
6,
(0x38 & e.Length) | 1
};
t(e3);
int num = 0;
while (true)
{
if (num < e.Length)
{
if (dict_w.ContainsKey(e[num]))
{
if (dict_w[e[num]] == null)
{
break;
}
t(dict_w[e[num]]);
num++;
continue;
}
return "";
}
t(dict_w[0]);
if (this_o > 0)
{
int[] e4 = new int[2]
{
6 - this_o,
0
};
t(e4);
}
return this_n;
}
return "";
}
public string UnicodeDecode(string unicodeStr)
{
int result;
if (!string.IsNullOrWhiteSpace(unicodeStr) && (unicodeStr.Contains("\\u") || unicodeStr.Contains("\\U")))
{
return Regex.Replace(unicodeStr, "\\\\[uU](.{4})", (Match m) => int.TryParse(m.Groups[1].Value, NumberStyles.HexNumber, null, out result) ? ((char)result).ToString() : m.Groups[0].Value, RegexOptions.Singleline);
}
return unicodeStr;
}
public string f(string e)
{
string text = e;
for (int i = 0; i < dict_y.Length; i++)
{
string oldValue = dict_y[i];
string unicodeStr = unicode_list[i];
string newValue = UnicodeDecode(unicodeStr);
text = text.Replace(oldValue, newValue);
}
string text2 = do_l(text);
if (text2 == null)
{
return e;
}
int num = 65535;
for (int j = 0; j < e.Length; j++)
{
num = 0xFFFF & ((num >> 8) | (num << 8));
num ^= 0xFF & e[j];
num ^= (0xFF & num) >> 4;
num ^= (num << 12) & 0xFFFF;
num ^= ((0xFF & num) << 5) & 0xFFFF;
}
num = 0xFFFF & num;
e = "";
int index = num >> 12;
e += key_A[index];
int index2 = (num >> 6) & 0x3F;
e += key_A[index2];
int index3 = 0x3F & num;
e += key_A[index3];
return text2 + e;
}
}
}