Skip to content

Instantly share code, notes, and snippets.

@Higgs1
Last active December 15, 2015 17:49
Show Gist options
  • Save Higgs1/5299134 to your computer and use it in GitHub Desktop.
Save Higgs1/5299134 to your computer and use it in GitHub Desktop.
Cipher for Minecraft lastlogin files implemented in JavaScript.
(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