Last active
December 15, 2015 17:49
-
-
Save Higgs1/5299134 to your computer and use it in GitHub Desktop.
Cipher for Minecraft lastlogin files implemented in JavaScript.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(a) { | |
var j = [1056971584,1092420379, 222248973,1128348931, 239223324, 473841219, | |
507790366, 924989, 457179966,1060977933,1092295748, 218317597, | |
1075723843,1141775679, 239223296, 505151553], | |
k = [1953896747, 688289143,2020897649,1982400117, 707557120,1897474930, | |
746061866, 443773466, 2848041,2003989273,1920337524, 721820017, | |
443754872, 746027052, 704673306,1903522858], | |
n = [ 206766165,1442849110, 576215071,1411535372,1359237899, 542266657, | |
1461722967, 72616785,1397826060, 525555200, 186799190,1477115989, | |
1461670228, 69279832,1381436498, 553932064], | |
t = [ 957682952, 926628886, 3552824, 151009852, 18036025, 137696788, | |
989926458, 322385929, 977024568, 150994998, 339360513, 957682952, | |
940114195,1008088891, 370423097, 137696055], | |
v = [ 172443245, 654993734,1864845423,1835739241,1164865024,1886153800, | |
1802502250,1195731496, 661457477,1766223215,1214868295,1862944107, | |
1814588012,1174433386, 675835943, 7227248], | |
w = [1751258980,1644520497,1714631016, 879124760, 3434263, 845612389, | |
1694511971, 405955425,1711629618,1680939112, 828793112,1751396962, | |
862126181, 85418547, 389310208,1667314791], | |
x = [ 760041216, 256847691,1278017616, 38358288,1311715406,1347046192, | |
1242501196, 771901742,1227763023,1330466050, 810110509,1259351883, | |
273697866, 771752524, 3099151,1347292976], | |
y = [1594958684,1499400025, 643456036,1529155847,1516264978, 606494043, | |
301989981,1616782627, 623074065, 123539749,1577541722,1566122847, | |
6039136,1516134144,1545872402, 304503131], | |
z = [ 169287213, 236724513, 889459721,1043930168, 254288666, 302986752, | |
222238508, 605366540, 335741730, 959253547,1059391543, 137248032, | |
320025114, 639041851, 339286801, 488312581, | |
255336493, 187055880, 573252874, 624235567, 907086649, 976749828, | |
453784352, 322844721, 723192378, 336796204, 471995678, 523308336, | |
772673842, 942019331, 589762096, 555431438], | |
A = [0, NaN, 3, 2, 1, 6, 7, 4, 5, 10, 9, 12, 8, 15, 11, 14, 13, 16, 19, | |
21, 17, 18, 22, 25, 20], B = [0], C = 47, D = String.fromCharCode, | |
E = function(d) { | |
return[d].concat(isNaN(A[d - 7]) ? [] : E(A[d - 7])) }, | |
F = function(d) { | |
var e = [Math.pow(2, d) * (31 <= d ? -1 : 1)]; | |
d = isNaN(A[d - 7]) ? [] : E(A[d - 7]); | |
for(var f = 0;f < d.length;f++) | |
for(var b = F(d[f]), h = 0;h < b.length;h++) | |
e.push(e[0] + b[h]); | |
return e }, | |
G = function(d) { | |
for(var e = C, f = 0;4 > f;f++) | |
d[4 * e + (3 - f)] = B[d[e] >> 8 * f & 255] }, | |
H = function(d, e) { | |
var f = d.length, b = 8 - f % 8; | |
e && (d += D(b, b, b, b, b, b, b, b), 8 == b && (f += 8)); | |
for(var h = -1073379694, r = -328741063, | |
p = "", u = "", s = 0, g = 0, I, J;g < f;) { | |
A = d.charCodeAt(g++) << 24 | d.charCodeAt(g++) << 16 | |
| d.charCodeAt(g++) << 8 | d.charCodeAt(g++); | |
c = d.charCodeAt(g++) << 24 | d.charCodeAt(g++) << 16 | |
| d.charCodeAt(g++) << 8 | d.charCodeAt(g++); | |
e ? (A ^= h, c ^= r) : (I = h, J = r, h = A, r = c); | |
b = (A >>> 4 ^ c) & 252645135; c ^= b; A ^= b << 4; | |
b = (A >>> 16 ^ c) & 65535; c ^= b; A ^= b << 16; | |
b = (c >>> 2 ^ A) & 858993459; A ^= b; c ^= b << 2; | |
b = (c >>> 8 ^ A) & 16711935; A ^= b; c ^= b << 8; | |
b = (A >>> 1 ^ c) & 1431655765; c ^= b; A ^= b << 1; | |
A = A << 1 | A >>> 31; | |
c = c << 1 | c >>> 31; | |
for(var q = e ? 0 : 30, K = e ? 32 : -2, L = e ? 2 : -2;q != K;q += L) | |
m = c ^ z[q], l = (c >>> 4 | c << 28) ^ z[q + 1], b = A, A = c, | |
c = b ^ (k[m >>> 24 & 63] | t[m >>> 16 & 63] | w[m >>> 8 & 63] | y[m & 63] | |
| j[l >>> 24 & 63] | n[l >>> 16 & 63] | v[l >>> 8 & 63] | x[l & 63]); | |
b = A; A = c; c = b; | |
A = A >>> 1 | A << 31; | |
c = c >>> 1 | c << 31; | |
b = (A >>> 1 ^ c) & 1431655765; c ^= b; A ^= b << 1; | |
b = (c >>> 8 ^ A) & 16711935; A ^= b; c ^= b << 8; | |
b = (c >>> 2 ^ A) & 858993459; A ^= b; c ^= b << 2; | |
b = (A >>> 16 ^ c) & 65535; c ^= b; A ^= b << 16; | |
b = (A >>> 4 ^ c) & 252645135; c ^= b; A ^= b << 4; | |
e ? (h = A, r = c) : (A ^= I, c ^= J); | |
p += D(A >>> 24, A >>> 16 & 255, A >>> 8 & 255, A & 255, | |
c >>> 24, c >>> 16 & 255, c >>> 8 & 255, c & 255); | |
s += 8; 512 == s && (u += p, p = "", s = 0) | |
} | |
return u + p } | |
for(; 16 <= C; C--) B = B.concat(F(47 - C)); | |
for(; 0 <= C; C--) G(j), G(k), G(n), G(t), G(v), G(w), G(x), G(y); | |
a.mcll_encrypt = function(d, e) { | |
d instanceof Array && (e = d[1], d = d[0]); e = e || ""; | |
return H(D(d.length >> 8 & 255) + D(d.length & 255) + d + | |
D(e.length >> 8 & 255) + D(e.length & 255) + e, !0) } | |
a.mcll_decrypt = function(d) { | |
var e = ((d = H(d, !1)).charCodeAt( ) << 8) + d.charCodeAt(1) | |
return [d.substr(2, e), d.substr(e += 3, | |
(d.charCodeAt(e++) << 8) + d.charCodeAt(e))]} | |
})(window) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment