From 8707e18fa947d4a8f563cb512336c13e25f88ccb Mon Sep 17 00:00:00 2001 From: Li Date: Mon, 24 Jul 2023 00:15:53 +1200 Subject: [PATCH] Inital Commit: --- .gitignore | 3 + aes.js | 1451 ++++++++++++++++++++++++++++++++++++++++++ ent.js | 131 ++++ forge.config.js | 31 + main.js | 158 +++++ packDecrypter.js | 197 ++++++ package.json | 27 + preload.js | 6 + progress.js | 14 + renderer/Thumbs.db | Bin 0 -> 27648 bytes renderer/decrypt.ico | Bin 0 -> 162621 bytes renderer/index.html | 11 + renderer/pack.png | Bin 0 -> 27267 bytes renderer/script.js | 117 ++++ renderer/styles.css | 88 +++ renderer/worker.js | 8 + 16 files changed, 2242 insertions(+) create mode 100644 .gitignore create mode 100644 aes.js create mode 100644 ent.js create mode 100644 forge.config.js create mode 100644 main.js create mode 100644 packDecrypter.js create mode 100644 package.json create mode 100644 preload.js create mode 100644 progress.js create mode 100644 renderer/Thumbs.db create mode 100644 renderer/decrypt.ico create mode 100644 renderer/index.html create mode 100644 renderer/pack.png create mode 100644 renderer/script.js create mode 100644 renderer/styles.css create mode 100644 renderer/worker.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be695f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +out/* +node_modules/* + diff --git a/aes.js b/aes.js new file mode 100644 index 0000000..13c3950 --- /dev/null +++ b/aes.js @@ -0,0 +1,1451 @@ +const rounds = 14 // 256 bit key +const roundsX4 = rounds * 4 +const roundKeyCount = (rounds + 1) * 4 + +// Round constant words +const rcon = new Uint8Array([ + 0x01, + 0x02, + 0x04, + 0x08, + 0x10, + 0x20, + 0x40, + 0x80, + 0x1b, + 0x36, + 0x6c, + 0xd8, + 0xab, + 0x4d, + 0x9a, + 0x2f, + 0x5e, + 0xbc, + 0x63, + 0xc6, + 0x97, + 0x35, + 0x6a, + 0xd4, + 0xb3, + 0x7d, + 0xfa, + 0xef, + 0xc5, + 0x91 +]) + +// S-box and Inverse S-box (S is for Substitution) +const S = new Uint8Array([ + 0x63, + 0x7c, + 0x77, + 0x7b, + 0xf2, + 0x6b, + 0x6f, + 0xc5, + 0x30, + 0x01, + 0x67, + 0x2b, + 0xfe, + 0xd7, + 0xab, + 0x76, + 0xca, + 0x82, + 0xc9, + 0x7d, + 0xfa, + 0x59, + 0x47, + 0xf0, + 0xad, + 0xd4, + 0xa2, + 0xaf, + 0x9c, + 0xa4, + 0x72, + 0xc0, + 0xb7, + 0xfd, + 0x93, + 0x26, + 0x36, + 0x3f, + 0xf7, + 0xcc, + 0x34, + 0xa5, + 0xe5, + 0xf1, + 0x71, + 0xd8, + 0x31, + 0x15, + 0x04, + 0xc7, + 0x23, + 0xc3, + 0x18, + 0x96, + 0x05, + 0x9a, + 0x07, + 0x12, + 0x80, + 0xe2, + 0xeb, + 0x27, + 0xb2, + 0x75, + 0x09, + 0x83, + 0x2c, + 0x1a, + 0x1b, + 0x6e, + 0x5a, + 0xa0, + 0x52, + 0x3b, + 0xd6, + 0xb3, + 0x29, + 0xe3, + 0x2f, + 0x84, + 0x53, + 0xd1, + 0x00, + 0xed, + 0x20, + 0xfc, + 0xb1, + 0x5b, + 0x6a, + 0xcb, + 0xbe, + 0x39, + 0x4a, + 0x4c, + 0x58, + 0xcf, + 0xd0, + 0xef, + 0xaa, + 0xfb, + 0x43, + 0x4d, + 0x33, + 0x85, + 0x45, + 0xf9, + 0x02, + 0x7f, + 0x50, + 0x3c, + 0x9f, + 0xa8, + 0x51, + 0xa3, + 0x40, + 0x8f, + 0x92, + 0x9d, + 0x38, + 0xf5, + 0xbc, + 0xb6, + 0xda, + 0x21, + 0x10, + 0xff, + 0xf3, + 0xd2, + 0xcd, + 0x0c, + 0x13, + 0xec, + 0x5f, + 0x97, + 0x44, + 0x17, + 0xc4, + 0xa7, + 0x7e, + 0x3d, + 0x64, + 0x5d, + 0x19, + 0x73, + 0x60, + 0x81, + 0x4f, + 0xdc, + 0x22, + 0x2a, + 0x90, + 0x88, + 0x46, + 0xee, + 0xb8, + 0x14, + 0xde, + 0x5e, + 0x0b, + 0xdb, + 0xe0, + 0x32, + 0x3a, + 0x0a, + 0x49, + 0x06, + 0x24, + 0x5c, + 0xc2, + 0xd3, + 0xac, + 0x62, + 0x91, + 0x95, + 0xe4, + 0x79, + 0xe7, + 0xc8, + 0x37, + 0x6d, + 0x8d, + 0xd5, + 0x4e, + 0xa9, + 0x6c, + 0x56, + 0xf4, + 0xea, + 0x65, + 0x7a, + 0xae, + 0x08, + 0xba, + 0x78, + 0x25, + 0x2e, + 0x1c, + 0xa6, + 0xb4, + 0xc6, + 0xe8, + 0xdd, + 0x74, + 0x1f, + 0x4b, + 0xbd, + 0x8b, + 0x8a, + 0x70, + 0x3e, + 0xb5, + 0x66, + 0x48, + 0x03, + 0xf6, + 0x0e, + 0x61, + 0x35, + 0x57, + 0xb9, + 0x86, + 0xc1, + 0x1d, + 0x9e, + 0xe1, + 0xf8, + 0x98, + 0x11, + 0x69, + 0xd9, + 0x8e, + 0x94, + 0x9b, + 0x1e, + 0x87, + 0xe9, + 0xce, + 0x55, + 0x28, + 0xdf, + 0x8c, + 0xa1, + 0x89, + 0x0d, + 0xbf, + 0xe6, + 0x42, + 0x68, + 0x41, + 0x99, + 0x2d, + 0x0f, + 0xb0, + 0x54, + 0xbb, + 0x16 +]) + +// Transformations for encryption +const T1 = new Uint32Array([ + 0xc66363a5, + 0xf87c7c84, + 0xee777799, + 0xf67b7b8d, + 0xfff2f20d, + 0xd66b6bbd, + 0xde6f6fb1, + 0x91c5c554, + 0x60303050, + 0x02010103, + 0xce6767a9, + 0x562b2b7d, + 0xe7fefe19, + 0xb5d7d762, + 0x4dababe6, + 0xec76769a, + 0x8fcaca45, + 0x1f82829d, + 0x89c9c940, + 0xfa7d7d87, + 0xeffafa15, + 0xb25959eb, + 0x8e4747c9, + 0xfbf0f00b, + 0x41adadec, + 0xb3d4d467, + 0x5fa2a2fd, + 0x45afafea, + 0x239c9cbf, + 0x53a4a4f7, + 0xe4727296, + 0x9bc0c05b, + 0x75b7b7c2, + 0xe1fdfd1c, + 0x3d9393ae, + 0x4c26266a, + 0x6c36365a, + 0x7e3f3f41, + 0xf5f7f702, + 0x83cccc4f, + 0x6834345c, + 0x51a5a5f4, + 0xd1e5e534, + 0xf9f1f108, + 0xe2717193, + 0xabd8d873, + 0x62313153, + 0x2a15153f, + 0x0804040c, + 0x95c7c752, + 0x46232365, + 0x9dc3c35e, + 0x30181828, + 0x379696a1, + 0x0a05050f, + 0x2f9a9ab5, + 0x0e070709, + 0x24121236, + 0x1b80809b, + 0xdfe2e23d, + 0xcdebeb26, + 0x4e272769, + 0x7fb2b2cd, + 0xea75759f, + 0x1209091b, + 0x1d83839e, + 0x582c2c74, + 0x341a1a2e, + 0x361b1b2d, + 0xdc6e6eb2, + 0xb45a5aee, + 0x5ba0a0fb, + 0xa45252f6, + 0x763b3b4d, + 0xb7d6d661, + 0x7db3b3ce, + 0x5229297b, + 0xdde3e33e, + 0x5e2f2f71, + 0x13848497, + 0xa65353f5, + 0xb9d1d168, + 0x00000000, + 0xc1eded2c, + 0x40202060, + 0xe3fcfc1f, + 0x79b1b1c8, + 0xb65b5bed, + 0xd46a6abe, + 0x8dcbcb46, + 0x67bebed9, + 0x7239394b, + 0x944a4ade, + 0x984c4cd4, + 0xb05858e8, + 0x85cfcf4a, + 0xbbd0d06b, + 0xc5efef2a, + 0x4faaaae5, + 0xedfbfb16, + 0x864343c5, + 0x9a4d4dd7, + 0x66333355, + 0x11858594, + 0x8a4545cf, + 0xe9f9f910, + 0x04020206, + 0xfe7f7f81, + 0xa05050f0, + 0x783c3c44, + 0x259f9fba, + 0x4ba8a8e3, + 0xa25151f3, + 0x5da3a3fe, + 0x804040c0, + 0x058f8f8a, + 0x3f9292ad, + 0x219d9dbc, + 0x70383848, + 0xf1f5f504, + 0x63bcbcdf, + 0x77b6b6c1, + 0xafdada75, + 0x42212163, + 0x20101030, + 0xe5ffff1a, + 0xfdf3f30e, + 0xbfd2d26d, + 0x81cdcd4c, + 0x180c0c14, + 0x26131335, + 0xc3ecec2f, + 0xbe5f5fe1, + 0x359797a2, + 0x884444cc, + 0x2e171739, + 0x93c4c457, + 0x55a7a7f2, + 0xfc7e7e82, + 0x7a3d3d47, + 0xc86464ac, + 0xba5d5de7, + 0x3219192b, + 0xe6737395, + 0xc06060a0, + 0x19818198, + 0x9e4f4fd1, + 0xa3dcdc7f, + 0x44222266, + 0x542a2a7e, + 0x3b9090ab, + 0x0b888883, + 0x8c4646ca, + 0xc7eeee29, + 0x6bb8b8d3, + 0x2814143c, + 0xa7dede79, + 0xbc5e5ee2, + 0x160b0b1d, + 0xaddbdb76, + 0xdbe0e03b, + 0x64323256, + 0x743a3a4e, + 0x140a0a1e, + 0x924949db, + 0x0c06060a, + 0x4824246c, + 0xb85c5ce4, + 0x9fc2c25d, + 0xbdd3d36e, + 0x43acacef, + 0xc46262a6, + 0x399191a8, + 0x319595a4, + 0xd3e4e437, + 0xf279798b, + 0xd5e7e732, + 0x8bc8c843, + 0x6e373759, + 0xda6d6db7, + 0x018d8d8c, + 0xb1d5d564, + 0x9c4e4ed2, + 0x49a9a9e0, + 0xd86c6cb4, + 0xac5656fa, + 0xf3f4f407, + 0xcfeaea25, + 0xca6565af, + 0xf47a7a8e, + 0x47aeaee9, + 0x10080818, + 0x6fbabad5, + 0xf0787888, + 0x4a25256f, + 0x5c2e2e72, + 0x381c1c24, + 0x57a6a6f1, + 0x73b4b4c7, + 0x97c6c651, + 0xcbe8e823, + 0xa1dddd7c, + 0xe874749c, + 0x3e1f1f21, + 0x964b4bdd, + 0x61bdbddc, + 0x0d8b8b86, + 0x0f8a8a85, + 0xe0707090, + 0x7c3e3e42, + 0x71b5b5c4, + 0xcc6666aa, + 0x904848d8, + 0x06030305, + 0xf7f6f601, + 0x1c0e0e12, + 0xc26161a3, + 0x6a35355f, + 0xae5757f9, + 0x69b9b9d0, + 0x17868691, + 0x99c1c158, + 0x3a1d1d27, + 0x279e9eb9, + 0xd9e1e138, + 0xebf8f813, + 0x2b9898b3, + 0x22111133, + 0xd26969bb, + 0xa9d9d970, + 0x078e8e89, + 0x339494a7, + 0x2d9b9bb6, + 0x3c1e1e22, + 0x15878792, + 0xc9e9e920, + 0x87cece49, + 0xaa5555ff, + 0x50282878, + 0xa5dfdf7a, + 0x038c8c8f, + 0x59a1a1f8, + 0x09898980, + 0x1a0d0d17, + 0x65bfbfda, + 0xd7e6e631, + 0x844242c6, + 0xd06868b8, + 0x824141c3, + 0x299999b0, + 0x5a2d2d77, + 0x1e0f0f11, + 0x7bb0b0cb, + 0xa85454fc, + 0x6dbbbbd6, + 0x2c16163a +]) +const T2 = new Uint32Array([ + 0xa5c66363, + 0x84f87c7c, + 0x99ee7777, + 0x8df67b7b, + 0x0dfff2f2, + 0xbdd66b6b, + 0xb1de6f6f, + 0x5491c5c5, + 0x50603030, + 0x03020101, + 0xa9ce6767, + 0x7d562b2b, + 0x19e7fefe, + 0x62b5d7d7, + 0xe64dabab, + 0x9aec7676, + 0x458fcaca, + 0x9d1f8282, + 0x4089c9c9, + 0x87fa7d7d, + 0x15effafa, + 0xebb25959, + 0xc98e4747, + 0x0bfbf0f0, + 0xec41adad, + 0x67b3d4d4, + 0xfd5fa2a2, + 0xea45afaf, + 0xbf239c9c, + 0xf753a4a4, + 0x96e47272, + 0x5b9bc0c0, + 0xc275b7b7, + 0x1ce1fdfd, + 0xae3d9393, + 0x6a4c2626, + 0x5a6c3636, + 0x417e3f3f, + 0x02f5f7f7, + 0x4f83cccc, + 0x5c683434, + 0xf451a5a5, + 0x34d1e5e5, + 0x08f9f1f1, + 0x93e27171, + 0x73abd8d8, + 0x53623131, + 0x3f2a1515, + 0x0c080404, + 0x5295c7c7, + 0x65462323, + 0x5e9dc3c3, + 0x28301818, + 0xa1379696, + 0x0f0a0505, + 0xb52f9a9a, + 0x090e0707, + 0x36241212, + 0x9b1b8080, + 0x3ddfe2e2, + 0x26cdebeb, + 0x694e2727, + 0xcd7fb2b2, + 0x9fea7575, + 0x1b120909, + 0x9e1d8383, + 0x74582c2c, + 0x2e341a1a, + 0x2d361b1b, + 0xb2dc6e6e, + 0xeeb45a5a, + 0xfb5ba0a0, + 0xf6a45252, + 0x4d763b3b, + 0x61b7d6d6, + 0xce7db3b3, + 0x7b522929, + 0x3edde3e3, + 0x715e2f2f, + 0x97138484, + 0xf5a65353, + 0x68b9d1d1, + 0x00000000, + 0x2cc1eded, + 0x60402020, + 0x1fe3fcfc, + 0xc879b1b1, + 0xedb65b5b, + 0xbed46a6a, + 0x468dcbcb, + 0xd967bebe, + 0x4b723939, + 0xde944a4a, + 0xd4984c4c, + 0xe8b05858, + 0x4a85cfcf, + 0x6bbbd0d0, + 0x2ac5efef, + 0xe54faaaa, + 0x16edfbfb, + 0xc5864343, + 0xd79a4d4d, + 0x55663333, + 0x94118585, + 0xcf8a4545, + 0x10e9f9f9, + 0x06040202, + 0x81fe7f7f, + 0xf0a05050, + 0x44783c3c, + 0xba259f9f, + 0xe34ba8a8, + 0xf3a25151, + 0xfe5da3a3, + 0xc0804040, + 0x8a058f8f, + 0xad3f9292, + 0xbc219d9d, + 0x48703838, + 0x04f1f5f5, + 0xdf63bcbc, + 0xc177b6b6, + 0x75afdada, + 0x63422121, + 0x30201010, + 0x1ae5ffff, + 0x0efdf3f3, + 0x6dbfd2d2, + 0x4c81cdcd, + 0x14180c0c, + 0x35261313, + 0x2fc3ecec, + 0xe1be5f5f, + 0xa2359797, + 0xcc884444, + 0x392e1717, + 0x5793c4c4, + 0xf255a7a7, + 0x82fc7e7e, + 0x477a3d3d, + 0xacc86464, + 0xe7ba5d5d, + 0x2b321919, + 0x95e67373, + 0xa0c06060, + 0x98198181, + 0xd19e4f4f, + 0x7fa3dcdc, + 0x66442222, + 0x7e542a2a, + 0xab3b9090, + 0x830b8888, + 0xca8c4646, + 0x29c7eeee, + 0xd36bb8b8, + 0x3c281414, + 0x79a7dede, + 0xe2bc5e5e, + 0x1d160b0b, + 0x76addbdb, + 0x3bdbe0e0, + 0x56643232, + 0x4e743a3a, + 0x1e140a0a, + 0xdb924949, + 0x0a0c0606, + 0x6c482424, + 0xe4b85c5c, + 0x5d9fc2c2, + 0x6ebdd3d3, + 0xef43acac, + 0xa6c46262, + 0xa8399191, + 0xa4319595, + 0x37d3e4e4, + 0x8bf27979, + 0x32d5e7e7, + 0x438bc8c8, + 0x596e3737, + 0xb7da6d6d, + 0x8c018d8d, + 0x64b1d5d5, + 0xd29c4e4e, + 0xe049a9a9, + 0xb4d86c6c, + 0xfaac5656, + 0x07f3f4f4, + 0x25cfeaea, + 0xafca6565, + 0x8ef47a7a, + 0xe947aeae, + 0x18100808, + 0xd56fbaba, + 0x88f07878, + 0x6f4a2525, + 0x725c2e2e, + 0x24381c1c, + 0xf157a6a6, + 0xc773b4b4, + 0x5197c6c6, + 0x23cbe8e8, + 0x7ca1dddd, + 0x9ce87474, + 0x213e1f1f, + 0xdd964b4b, + 0xdc61bdbd, + 0x860d8b8b, + 0x850f8a8a, + 0x90e07070, + 0x427c3e3e, + 0xc471b5b5, + 0xaacc6666, + 0xd8904848, + 0x05060303, + 0x01f7f6f6, + 0x121c0e0e, + 0xa3c26161, + 0x5f6a3535, + 0xf9ae5757, + 0xd069b9b9, + 0x91178686, + 0x5899c1c1, + 0x273a1d1d, + 0xb9279e9e, + 0x38d9e1e1, + 0x13ebf8f8, + 0xb32b9898, + 0x33221111, + 0xbbd26969, + 0x70a9d9d9, + 0x89078e8e, + 0xa7339494, + 0xb62d9b9b, + 0x223c1e1e, + 0x92158787, + 0x20c9e9e9, + 0x4987cece, + 0xffaa5555, + 0x78502828, + 0x7aa5dfdf, + 0x8f038c8c, + 0xf859a1a1, + 0x80098989, + 0x171a0d0d, + 0xda65bfbf, + 0x31d7e6e6, + 0xc6844242, + 0xb8d06868, + 0xc3824141, + 0xb0299999, + 0x775a2d2d, + 0x111e0f0f, + 0xcb7bb0b0, + 0xfca85454, + 0xd66dbbbb, + 0x3a2c1616 +]) +const T3 = new Uint32Array([ + 0x63a5c663, + 0x7c84f87c, + 0x7799ee77, + 0x7b8df67b, + 0xf20dfff2, + 0x6bbdd66b, + 0x6fb1de6f, + 0xc55491c5, + 0x30506030, + 0x01030201, + 0x67a9ce67, + 0x2b7d562b, + 0xfe19e7fe, + 0xd762b5d7, + 0xabe64dab, + 0x769aec76, + 0xca458fca, + 0x829d1f82, + 0xc94089c9, + 0x7d87fa7d, + 0xfa15effa, + 0x59ebb259, + 0x47c98e47, + 0xf00bfbf0, + 0xadec41ad, + 0xd467b3d4, + 0xa2fd5fa2, + 0xafea45af, + 0x9cbf239c, + 0xa4f753a4, + 0x7296e472, + 0xc05b9bc0, + 0xb7c275b7, + 0xfd1ce1fd, + 0x93ae3d93, + 0x266a4c26, + 0x365a6c36, + 0x3f417e3f, + 0xf702f5f7, + 0xcc4f83cc, + 0x345c6834, + 0xa5f451a5, + 0xe534d1e5, + 0xf108f9f1, + 0x7193e271, + 0xd873abd8, + 0x31536231, + 0x153f2a15, + 0x040c0804, + 0xc75295c7, + 0x23654623, + 0xc35e9dc3, + 0x18283018, + 0x96a13796, + 0x050f0a05, + 0x9ab52f9a, + 0x07090e07, + 0x12362412, + 0x809b1b80, + 0xe23ddfe2, + 0xeb26cdeb, + 0x27694e27, + 0xb2cd7fb2, + 0x759fea75, + 0x091b1209, + 0x839e1d83, + 0x2c74582c, + 0x1a2e341a, + 0x1b2d361b, + 0x6eb2dc6e, + 0x5aeeb45a, + 0xa0fb5ba0, + 0x52f6a452, + 0x3b4d763b, + 0xd661b7d6, + 0xb3ce7db3, + 0x297b5229, + 0xe33edde3, + 0x2f715e2f, + 0x84971384, + 0x53f5a653, + 0xd168b9d1, + 0x00000000, + 0xed2cc1ed, + 0x20604020, + 0xfc1fe3fc, + 0xb1c879b1, + 0x5bedb65b, + 0x6abed46a, + 0xcb468dcb, + 0xbed967be, + 0x394b7239, + 0x4ade944a, + 0x4cd4984c, + 0x58e8b058, + 0xcf4a85cf, + 0xd06bbbd0, + 0xef2ac5ef, + 0xaae54faa, + 0xfb16edfb, + 0x43c58643, + 0x4dd79a4d, + 0x33556633, + 0x85941185, + 0x45cf8a45, + 0xf910e9f9, + 0x02060402, + 0x7f81fe7f, + 0x50f0a050, + 0x3c44783c, + 0x9fba259f, + 0xa8e34ba8, + 0x51f3a251, + 0xa3fe5da3, + 0x40c08040, + 0x8f8a058f, + 0x92ad3f92, + 0x9dbc219d, + 0x38487038, + 0xf504f1f5, + 0xbcdf63bc, + 0xb6c177b6, + 0xda75afda, + 0x21634221, + 0x10302010, + 0xff1ae5ff, + 0xf30efdf3, + 0xd26dbfd2, + 0xcd4c81cd, + 0x0c14180c, + 0x13352613, + 0xec2fc3ec, + 0x5fe1be5f, + 0x97a23597, + 0x44cc8844, + 0x17392e17, + 0xc45793c4, + 0xa7f255a7, + 0x7e82fc7e, + 0x3d477a3d, + 0x64acc864, + 0x5de7ba5d, + 0x192b3219, + 0x7395e673, + 0x60a0c060, + 0x81981981, + 0x4fd19e4f, + 0xdc7fa3dc, + 0x22664422, + 0x2a7e542a, + 0x90ab3b90, + 0x88830b88, + 0x46ca8c46, + 0xee29c7ee, + 0xb8d36bb8, + 0x143c2814, + 0xde79a7de, + 0x5ee2bc5e, + 0x0b1d160b, + 0xdb76addb, + 0xe03bdbe0, + 0x32566432, + 0x3a4e743a, + 0x0a1e140a, + 0x49db9249, + 0x060a0c06, + 0x246c4824, + 0x5ce4b85c, + 0xc25d9fc2, + 0xd36ebdd3, + 0xacef43ac, + 0x62a6c462, + 0x91a83991, + 0x95a43195, + 0xe437d3e4, + 0x798bf279, + 0xe732d5e7, + 0xc8438bc8, + 0x37596e37, + 0x6db7da6d, + 0x8d8c018d, + 0xd564b1d5, + 0x4ed29c4e, + 0xa9e049a9, + 0x6cb4d86c, + 0x56faac56, + 0xf407f3f4, + 0xea25cfea, + 0x65afca65, + 0x7a8ef47a, + 0xaee947ae, + 0x08181008, + 0xbad56fba, + 0x7888f078, + 0x256f4a25, + 0x2e725c2e, + 0x1c24381c, + 0xa6f157a6, + 0xb4c773b4, + 0xc65197c6, + 0xe823cbe8, + 0xdd7ca1dd, + 0x749ce874, + 0x1f213e1f, + 0x4bdd964b, + 0xbddc61bd, + 0x8b860d8b, + 0x8a850f8a, + 0x7090e070, + 0x3e427c3e, + 0xb5c471b5, + 0x66aacc66, + 0x48d89048, + 0x03050603, + 0xf601f7f6, + 0x0e121c0e, + 0x61a3c261, + 0x355f6a35, + 0x57f9ae57, + 0xb9d069b9, + 0x86911786, + 0xc15899c1, + 0x1d273a1d, + 0x9eb9279e, + 0xe138d9e1, + 0xf813ebf8, + 0x98b32b98, + 0x11332211, + 0x69bbd269, + 0xd970a9d9, + 0x8e89078e, + 0x94a73394, + 0x9bb62d9b, + 0x1e223c1e, + 0x87921587, + 0xe920c9e9, + 0xce4987ce, + 0x55ffaa55, + 0x28785028, + 0xdf7aa5df, + 0x8c8f038c, + 0xa1f859a1, + 0x89800989, + 0x0d171a0d, + 0xbfda65bf, + 0xe631d7e6, + 0x42c68442, + 0x68b8d068, + 0x41c38241, + 0x99b02999, + 0x2d775a2d, + 0x0f111e0f, + 0xb0cb7bb0, + 0x54fca854, + 0xbbd66dbb, + 0x163a2c16 +]) +const T4 = new Uint32Array([ + 0x6363a5c6, + 0x7c7c84f8, + 0x777799ee, + 0x7b7b8df6, + 0xf2f20dff, + 0x6b6bbdd6, + 0x6f6fb1de, + 0xc5c55491, + 0x30305060, + 0x01010302, + 0x6767a9ce, + 0x2b2b7d56, + 0xfefe19e7, + 0xd7d762b5, + 0xababe64d, + 0x76769aec, + 0xcaca458f, + 0x82829d1f, + 0xc9c94089, + 0x7d7d87fa, + 0xfafa15ef, + 0x5959ebb2, + 0x4747c98e, + 0xf0f00bfb, + 0xadadec41, + 0xd4d467b3, + 0xa2a2fd5f, + 0xafafea45, + 0x9c9cbf23, + 0xa4a4f753, + 0x727296e4, + 0xc0c05b9b, + 0xb7b7c275, + 0xfdfd1ce1, + 0x9393ae3d, + 0x26266a4c, + 0x36365a6c, + 0x3f3f417e, + 0xf7f702f5, + 0xcccc4f83, + 0x34345c68, + 0xa5a5f451, + 0xe5e534d1, + 0xf1f108f9, + 0x717193e2, + 0xd8d873ab, + 0x31315362, + 0x15153f2a, + 0x04040c08, + 0xc7c75295, + 0x23236546, + 0xc3c35e9d, + 0x18182830, + 0x9696a137, + 0x05050f0a, + 0x9a9ab52f, + 0x0707090e, + 0x12123624, + 0x80809b1b, + 0xe2e23ddf, + 0xebeb26cd, + 0x2727694e, + 0xb2b2cd7f, + 0x75759fea, + 0x09091b12, + 0x83839e1d, + 0x2c2c7458, + 0x1a1a2e34, + 0x1b1b2d36, + 0x6e6eb2dc, + 0x5a5aeeb4, + 0xa0a0fb5b, + 0x5252f6a4, + 0x3b3b4d76, + 0xd6d661b7, + 0xb3b3ce7d, + 0x29297b52, + 0xe3e33edd, + 0x2f2f715e, + 0x84849713, + 0x5353f5a6, + 0xd1d168b9, + 0x00000000, + 0xeded2cc1, + 0x20206040, + 0xfcfc1fe3, + 0xb1b1c879, + 0x5b5bedb6, + 0x6a6abed4, + 0xcbcb468d, + 0xbebed967, + 0x39394b72, + 0x4a4ade94, + 0x4c4cd498, + 0x5858e8b0, + 0xcfcf4a85, + 0xd0d06bbb, + 0xefef2ac5, + 0xaaaae54f, + 0xfbfb16ed, + 0x4343c586, + 0x4d4dd79a, + 0x33335566, + 0x85859411, + 0x4545cf8a, + 0xf9f910e9, + 0x02020604, + 0x7f7f81fe, + 0x5050f0a0, + 0x3c3c4478, + 0x9f9fba25, + 0xa8a8e34b, + 0x5151f3a2, + 0xa3a3fe5d, + 0x4040c080, + 0x8f8f8a05, + 0x9292ad3f, + 0x9d9dbc21, + 0x38384870, + 0xf5f504f1, + 0xbcbcdf63, + 0xb6b6c177, + 0xdada75af, + 0x21216342, + 0x10103020, + 0xffff1ae5, + 0xf3f30efd, + 0xd2d26dbf, + 0xcdcd4c81, + 0x0c0c1418, + 0x13133526, + 0xecec2fc3, + 0x5f5fe1be, + 0x9797a235, + 0x4444cc88, + 0x1717392e, + 0xc4c45793, + 0xa7a7f255, + 0x7e7e82fc, + 0x3d3d477a, + 0x6464acc8, + 0x5d5de7ba, + 0x19192b32, + 0x737395e6, + 0x6060a0c0, + 0x81819819, + 0x4f4fd19e, + 0xdcdc7fa3, + 0x22226644, + 0x2a2a7e54, + 0x9090ab3b, + 0x8888830b, + 0x4646ca8c, + 0xeeee29c7, + 0xb8b8d36b, + 0x14143c28, + 0xdede79a7, + 0x5e5ee2bc, + 0x0b0b1d16, + 0xdbdb76ad, + 0xe0e03bdb, + 0x32325664, + 0x3a3a4e74, + 0x0a0a1e14, + 0x4949db92, + 0x06060a0c, + 0x24246c48, + 0x5c5ce4b8, + 0xc2c25d9f, + 0xd3d36ebd, + 0xacacef43, + 0x6262a6c4, + 0x9191a839, + 0x9595a431, + 0xe4e437d3, + 0x79798bf2, + 0xe7e732d5, + 0xc8c8438b, + 0x3737596e, + 0x6d6db7da, + 0x8d8d8c01, + 0xd5d564b1, + 0x4e4ed29c, + 0xa9a9e049, + 0x6c6cb4d8, + 0x5656faac, + 0xf4f407f3, + 0xeaea25cf, + 0x6565afca, + 0x7a7a8ef4, + 0xaeaee947, + 0x08081810, + 0xbabad56f, + 0x787888f0, + 0x25256f4a, + 0x2e2e725c, + 0x1c1c2438, + 0xa6a6f157, + 0xb4b4c773, + 0xc6c65197, + 0xe8e823cb, + 0xdddd7ca1, + 0x74749ce8, + 0x1f1f213e, + 0x4b4bdd96, + 0xbdbddc61, + 0x8b8b860d, + 0x8a8a850f, + 0x707090e0, + 0x3e3e427c, + 0xb5b5c471, + 0x6666aacc, + 0x4848d890, + 0x03030506, + 0xf6f601f7, + 0x0e0e121c, + 0x6161a3c2, + 0x35355f6a, + 0x5757f9ae, + 0xb9b9d069, + 0x86869117, + 0xc1c15899, + 0x1d1d273a, + 0x9e9eb927, + 0xe1e138d9, + 0xf8f813eb, + 0x9898b32b, + 0x11113322, + 0x6969bbd2, + 0xd9d970a9, + 0x8e8e8907, + 0x9494a733, + 0x9b9bb62d, + 0x1e1e223c, + 0x87879215, + 0xe9e920c9, + 0xcece4987, + 0x5555ffaa, + 0x28287850, + 0xdfdf7aa5, + 0x8c8c8f03, + 0xa1a1f859, + 0x89898009, + 0x0d0d171a, + 0xbfbfda65, + 0xe6e631d7, + 0x4242c684, + 0x6868b8d0, + 0x4141c382, + 0x9999b029, + 0x2d2d775a, + 0x0f0f111e, + 0xb0b0cb7b, + 0x5454fca8, + 0xbbbbd66d, + 0x16163a2c +]) + +function convertToInt32(bytes) { + const result = new Int32Array(bytes.length / 4) + for (let i = 0; i < bytes.length; i += 4) { + result[i / 4] = + (bytes[i] << 24) | + (bytes[i + 1] << 16) | + (bytes[i + 2] << 8) | + bytes[i + 3] + } + return result +} + +function expand_aes(key) { + if (key.length == 0) throw "key too short" + // encryption round keys + const _Ke = new Uint32Array(roundKeyCount) + + const KC = key.length / 4 + // convert the key into ints + const tk = convertToInt32(key) + + // copy values into round key arrays + for (let i = 0; i < KC; i++) _Ke[i] ^= tk[i] + + // key expansion (fips-197 section 5.2) + let rconpointer = 0 + let t = KC, + tt + while (t < roundKeyCount) { + tt = tk[KC - 1] + tk[0] ^= + (S[(tt >> 16) & 0xff] << 24) ^ + (S[(tt >> 8) & 0xff] << 16) ^ + (S[tt & 0xff] << 8) ^ + S[(tt >> 24) & 0xff] ^ + (rcon[rconpointer] << 24) + rconpointer += 1 + + // 256bit Key Expansion + for (let i = 1; i < KC / 2; i++) tk[i] ^= tk[i - 1] + tt = tk[KC / 2 - 1] + + tk[KC / 2] ^= + S[tt & 0xff] ^ + (S[(tt >> 8) & 0xff] << 8) ^ + (S[(tt >> 16) & 0xff] << 16) ^ + (S[(tt >> 24) & 0xff] << 24) + + for (let i = KC / 2 + 1; i < KC; i++) tk[i] ^= tk[i - 1] + + // copy values into round key arrays + for (let i = 0; i < KC && t < roundKeyCount; i++, t++) _Ke[t] ^= tk[i] + } + return _Ke +} + +function encrypt_aes(bytes, _Ke) { + // convert plaintext to (ints ^ key) + let t0 = + ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) ^ _Ke[0] + let t1 = + ((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7]) ^ _Ke[1] + let t2 = + ((bytes[8] << 24) | (bytes[9] << 16) | (bytes[10] << 8) | bytes[11]) ^ + _Ke[2] + let t3 = + ((bytes[12] << 24) | (bytes[13] << 16) | (bytes[14] << 8) | bytes[15]) ^ + _Ke[3] + + // apply round transforms + let a0, a1, a2 + let r = 4 + while (r < roundsX4) { + a0 = + T1[(t0 >> 24) & 0xff] ^ + T2[(t1 >> 16) & 0xff] ^ + T3[(t2 >> 8) & 0xff] ^ + T4[t3 & 0xff] ^ + _Ke[r] + a1 = + T1[(t1 >> 24) & 0xff] ^ + T2[(t2 >> 16) & 0xff] ^ + T3[(t3 >> 8) & 0xff] ^ + T4[t0 & 0xff] ^ + _Ke[r + 1] + a2 = + T1[(t2 >> 24) & 0xff] ^ + T2[(t3 >> 16) & 0xff] ^ + T3[(t0 >> 8) & 0xff] ^ + T4[t1 & 0xff] ^ + _Ke[r + 2] + t3 = + T1[(t3 >> 24) & 0xff] ^ + T2[(t0 >> 16) & 0xff] ^ + T3[(t1 >> 8) & 0xff] ^ + T4[t2 & 0xff] ^ + _Ke[r + 3] + t0 = a0 + t1 = a1 + t2 = a2 + r += 4 + } + + // only need the first byte + return (S[(t0 >> 24) & 0xff] ^ (_Ke[roundsX4] >> 24)) & 0xff +} + +module.exports = function aescfb(ciphertext, key) { + const KE = expand_aes(key) + const _iv = Array.from(key.slice(0, 16)) + + for (let i = 0; i < ciphertext.length; i += 1) { + const temp = ciphertext[i] + ciphertext[i] ^= encrypt_aes(_iv, KE) + _iv.shift() + _iv.push(temp) + } + return ciphertext +} diff --git a/ent.js b/ent.js new file mode 100644 index 0000000..c9c5ef2 --- /dev/null +++ b/ent.js @@ -0,0 +1,131 @@ +const fs = require("fs"); +const path = require("path"); +const aescfb = require('./aes'); + +const skinKey = "s5s5ejuDru4uchuF2drUFuthaspAbepE"; + +const localStatePath = path.join(process.env.LocalAppData, "/Packages/Microsoft.MinecraftUWP_8wekyb3d8bbwe/LocalState"); +const mcpePath = path.join(localStatePath, "/games/com.mojang/minecraftpe"); + +const keyDb = {}; + +getEntFile(); +function getTitleAccountId() { + const optionsTxt = path.join(mcpePath, 'options.txt'); + if(fs.existsSync(optionsTxt)) { + const options = fs.readFileSync(optionsTxt).toString(); + const lines = options.split('\n'); + for (let i = 0; i < lines.length; i++) { + const [key, value] = lines[i].split(':'); + if (key === "last_title_account_id") { + return value.replace("\n", "").replace("\r", ""); + } + } + } +} + +function getEntKey() { + const titleAccountId = getTitleAccountId(); + const entXorKey = "X(nG*ejm&E8)m+8c;-SkLTjF)*QdN6_Y"; + const entKey = Buffer.alloc(32); + + for (let i = 0; i < 32; i++) { + entKey[i] = titleAccountId.charCodeAt(i % titleAccountId.length) ^ entXorKey.charCodeAt(i); + } + + + return entKey; +} + +function lookupKey(uuid) { + return keyDb[uuid] || skinKey; +} + + +function getEntFile() { + if(fs.existsSync(localStatePath)) { + const files = fs.readdirSync(localStatePath); + const entFileNames = files.filter(file => file.endsWith(".ent")); + + const entFiles = entFileNames.map(file => fs.readFileSync(path.join(localStatePath, file)).toString().substring("Version2".length)); + + for (let index = 0; index < entFiles.length; index++) { + const entFile = entFiles[index]; + const cipherText = Buffer.from(entFile, 'base64') + const decrypted = decryptBuffer(cipherText, getEntKey()); + try { + const json = JSON.parse(decrypted.toString()); + parseEnt(json) + } catch { + continue; + } + + } + } +} +module.exports = lookupKey; + +function parseEnt(ent) { + const mainReceipt = ent.Receipt; + parseReceipt(mainReceipt) + + for (let index = 0; index < ent.Items.length; index++) { + const item = ent.Items[index]; + const receipt = item.Receipt; + parseReceipt(receipt); + } +} + +function parseReceipt(receipt) { + const receiptContent = receipt.split(".")[1]; + const content = JSON.parse(atob(receiptContent)); + + const entitlements = content.Receipt.Entitlements; + + const deviceId = content.Receipt.ReceiptData?.DeviceId; + const entityId = content.Receipt.EntityId; + if (!deviceId || !entityId) return; + const userKey = deriveUserKey(deviceId, entityId); + + for (let index = 0; index < entitlements.length; index++) { + const element = entitlements[index]; + if (!element.ContentKey) continue; + keyDb[element.FriendlyId] = deobfuscateContentKey(element.ContentKey, userKey); + } +} + +function deriveUserKey(deviceId, entityId) { + const deviceIdBuffer = Buffer.from(deviceId, 'utf16le'); + const entityIdBuffer = Buffer.from(entityId, 'utf16le'); + + let length = deviceIdBuffer.length; + if (entityIdBuffer.length < length) length = entityIdBuffer.length; + const userKey = Buffer.alloc(length); + + for (let index = 0; index < userKey.length; index++) { + userKey[index] = deviceIdBuffer[index] ^ entityIdBuffer[index]; + } + return userKey; +} + +function deobfuscateContentKey(contentKey, userKey) { + const b64DecodedKey = Buffer.from(contentKey, 'base64'); + + let length = b64DecodedKey.length; + if (userKey.length < length) length = userKey.length; + const deobfuscatedKey = Buffer.alloc(length); + + for (let index = 0; index < deobfuscatedKey.length; index++) { + deobfuscatedKey[index] = b64DecodedKey[index] ^ userKey[index]; + } + + return deobfuscatedKey.toString("utf16le"); +} + + +function decryptBuffer(buffer, key) { + const bufferKey = Buffer.from(key, 'binary'); + + + return aescfb(buffer, bufferKey); +} \ No newline at end of file diff --git a/forge.config.js b/forge.config.js new file mode 100644 index 0000000..f2bdd5c --- /dev/null +++ b/forge.config.js @@ -0,0 +1,31 @@ +module.exports = { + packagerConfig: { + asar: true, + icon: 'renderer/decrypt' + }, + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-squirrel', + config: {}, + }, + { + name: '@electron-forge/maker-zip', + platforms: ['darwin'], + }, + { + name: '@electron-forge/maker-deb', + config: {}, + }, + { + name: '@electron-forge/maker-rpm', + config: {}, + }, + ], + plugins: [ + { + name: '@electron-forge/plugin-auto-unpack-natives', + config: {}, + }, + ], +}; diff --git a/main.js b/main.js new file mode 100644 index 0000000..d9ef796 --- /dev/null +++ b/main.js @@ -0,0 +1,158 @@ +const {app, BrowserWindow, ipcMain, dialog} = require("electron"); +const path = require("path"); +const fs = require("fs"); +const PackDecryptor = require("./packDecrypter"); + +const minecraftFolderPath = path.join(process.env.LocalAppData, "/Packages/Microsoft.MinecraftUWP_8wekyb3d8bbwe"); +const localStatePath = path.join(minecraftFolderPath, "LocalState") +const premiumCachePath = path.join(localStatePath, "premium_cache"); +const worldsPath = path.join(localStatePath, "/games/com.mojang/minecraftWorlds"); + + +function checkWorldEncrypted(worldPath){ + const worldDbFolder = path.join(worldPath, "db"); + const dbFiles = fs.readdirSync(worldDbFolder); + for(let index = 0; index < dbFiles.length; index++) { + if(path.extname(dbFiles[index]).toLowerCase() === ".ldb") { + return PackDecryptor.isContentFileEncrypted(path.join(worldDbFolder, dbFiles[index])) + } + } + return false; +} + +function getWorlds() { + const worlds = []; + if(fs.existsSync(worldsPath)) { + const files = fs.readdirSync(worldsPath); + for (let index = 0; index < files.length; index++) { + const isEncrypted = checkWorldEncrypted(path.join(worldsPath, files[index])); + if (!isEncrypted) continue; + const name = fs.readFileSync(path.join(worldsPath, files[index], 'levelname.txt'), 'utf8'); + const packIcon = getPackIcon(path.join(worldsPath, files[index])); + worlds.push({ + name: replaceName(name), + packPath: path.join(worldsPath, files[index]), + packIcon, + }) + } + } + return worlds; +} + +function getPremiumCache() { + const packTypes = {}; + if(fs.existsSync(premiumCachePath)) { + const files = fs.readdirSync(premiumCachePath); + for (let index = 0; index < files.length; index++) { + const dirname = files[index]; + packTypes[dirname] = []; + const packs = getPacks(path.join(premiumCachePath, dirname)) + if (packs.length === 0) { + delete packTypes[dirname]; + continue; + } + packTypes[dirname] = packs; + } + } + return packTypes +} + +function getPacks(dirPath) { + const packList = fs.readdirSync(dirPath); + return packList.map(packDir => { + const packPath = path.join(dirPath, packDir); + const packName = getPackName(packPath) + return { + name: replaceName(packName), + + packPath: packPath, + packIcon: getPackIcon(packPath), + } + }) +} + +function replaceName(name) { + return name + .replaceAll("#", "") + .replaceAll("?", "") + .replaceAll("*", "") + .replaceAll("<", "") + .replaceAll(">", "") + .replaceAll("|", "") + .replaceAll(":", "") + .replaceAll("\\", "") + .replaceAll("/", "") + .trim() +} + + +function getPackIcon(packPath) { + const packIconNames = ["pack_icon.png", "pack_icon.jpeg" ,"world_icon.jpeg", "world_icon.png"] + for (let index = 0; index < packIconNames.length; index++) { + const packIconName = packIconNames[index]; + const iconPath = path.join(packPath, packIconName); + if (fs.existsSync(iconPath)) { + return fs.readFileSync(iconPath, 'base64') + } + } + return null; +} + +function getPackName(packPath) { + const langFile = fs.readFileSync(path.join(packPath, "texts", "en_US.lang"), 'utf8'); + return langFile.split("\n")[0].split("=").at(-1).replace("\n", "").replace("\r", ""); +} + +app.whenReady().then(() => { + const win = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), + nodeIntegrationInWorker: true, + } + }); + win.removeMenu() + win.loadFile("./renderer/index.html") + + //win.webContents.openDevTools({mode: 'detach'}) + + ipcMain.handle("get-packs", (event) => { + packs = {worlds: getWorlds(), ...getPremiumCache()}; + if(packs["worlds"].length == 0) + delete packs["worlds"]; + return packs; + }) + + ipcMain.handle("pick-path", async (event, {path, type, name}) => { + const filter = {}; + if (type === "world_templates") { + filter.name = "World Template"; + filter.extensions = ["mctemplate"] + } + if (type === "resource_packs") { + filter.name = "Resource Pack"; + filter.extensions = ["mcpack"] + } + if (type === "skin_packs") { + filter.name = "Skin Pack"; + filter.extensions = ["mcpack"] + } + if (type === "persona") { + filter.name = "Persona Peice"; + filter.extensions = ["mcpersona"] + } + if (type === "worlds") { + filter.name = "World"; + filter.extensions = ["mcworld"] + } + + const dialogReturnValue = await dialog.showSaveDialog({ + defaultPath: name, + filters: [filter] + }) + if (dialogReturnValue.canceled) return; + return dialogReturnValue.filePath; + + }) +}) \ No newline at end of file diff --git a/packDecrypter.js b/packDecrypter.js new file mode 100644 index 0000000..763ac7d --- /dev/null +++ b/packDecrypter.js @@ -0,0 +1,197 @@ +const fs = require("fs"); +const path = require("path"); +const aescfb = require('./aes'); +const JSZip = require("jszip"); +const lookupKey = require("./ent"); +const Progress = require("./progress"); +const { ipcMain } = require("electron"); + + +module.exports = class PackDecryptor extends Progress { + + inputPath = ""; + outputFilePath = ""; + zip = new JSZip(); + zippedContent = []; + contentFiles = [] + + decryptDenylist = ["pack_icon.png", "pack_icon.jpeg", "world_icon.png", "world_icon.jpeg", "manifest.json"] + + + constructor(inputPath, outputFilePath) { + super(); + this.inputPath = inputPath; + this.outputFilePath = outputFilePath; + } + async start() { + return new Promise(async res => { + console.log("start") + const dbPath = path.join(this.inputPath, "db"); + this.contentFiles = recursiveReaddirrSync(this.inputPath); + this._started = true; + + if (fs.existsSync(dbPath)) { + const dbDir = recursiveReaddirrSync(dbPath); + + for (let index = 0; index < dbDir.length; index++) { + const dbFilePath = dbDir[index]; + if (fs.lstatSync(dbFilePath).isDirectory()) { + continue; + } + const decrypted = await this.decryptContentFile(dbFilePath); + this.addFile(dbFilePath, decrypted) + } + } + + for (let index = 0; index < this.contentFiles.length; index++) { + const name = path.basename(this.contentFiles[index]); + if (name.toLowerCase() === "contents.json") { + await this.decryptContent(this.contentFiles[index]); + } + } + + for (let index = 0; index < this.contentFiles.length; index++) { + const filePath = this.contentFiles[index]; + if (!this.zippedContent.includes(filePath)) { + this.addFile(filePath, fs.readFileSync(filePath)); + } + } + + await this.crackSkinPack() + this.crackWorld(); + + + this.zip.generateAsync({type:"arraybuffer"}).then((content) => { + fs.writeFileSync(this.outputFilePath, Buffer.from(content)); + console.log("done") + res(0); + }); + }) + } + crackWorld() { + const levelDatPath = path.join(this.inputPath, "level.dat"); + if (!fs.existsSync(levelDatPath)) return; + const levelDat = fs.readFileSync(levelDatPath); + + + let offset = levelDat.indexOf("prid"); + while (offset !== -1) { + levelDat.writeUInt8("a".charCodeAt(0), offset); + offset = levelDat.indexOf("prid"); + } + + this.addFile(levelDatPath, levelDat) + } + + addFile(filePath, content) { + const relPath = path.relative(this.inputPath, filePath).replaceAll("\\", "/"); + if (!this.zippedContent.includes(filePath)) { + this.zippedContent.push(filePath); + } + this.zip.file(relPath, content, {binary: true}) + + self.postMessage(this.getPercentage()); + + } + + + static isContentFileEncrypted(filePath){ + const contents = fs.readFileSync(filePath); + if (contents.length < 0x100) return false; + const magic = contents.readUint32LE(0x4); + if (magic === 2614082044) { + return true; + } + return false; + } + + async decryptContent(filePath) { + const dirname = path.dirname(filePath); + const isEncrypted = PackDecryptor.isContentFileEncrypted(filePath); + const content = await this.decryptContentFile(filePath); + const parsedContent = JSON.parse(content); + + if(isEncrypted) { + for (let index = 0; index < parsedContent.content.length; index++) { + const key = parsedContent.content[index].key; + const filePath = parsedContent.content[index].path; + const fileName = path.basename(filePath); + + if(this.decryptDenylist.indexOf(fileName.toLowerCase()) !== -1) continue; + if (!key) continue; + + const joinedPath = path.join(dirname, filePath); + const file = await this.decryptFile(joinedPath, key); + this.addFile(joinedPath, file) + } + } + + this.addFile(filePath, content) + } + + async decryptContentFile(filePath) { + const contents = fs.readFileSync(filePath); + if (contents.length < 0x100) return contents; + const magic = contents.readUint32LE(0x4); + if (magic === 2614082044) { + const cipherText = contents.subarray(0x100); + const uuidSize = contents.readUInt8(0x10) + const uuid = contents.subarray(0x11, 0x11 + uuidSize) + const key = lookupKey(uuid); + + const decrypted = decryptAes(key, cipherText) + return decrypted + } else { + return contents; + } + } + + async decryptFile(filePath, key) { + const contents = fs.readFileSync(filePath); + + const decrypted = decryptAes(key, contents) + return decrypted; + } + + async crackSkinPack() { + const skinJsonFilePath = "skins.json"; + + if (!this.zip.files[skinJsonFilePath]) return; + const skinsFile = await this.zip.files[skinJsonFilePath].async("string"); + + try{ + const skins = JSON.parse(skinsFile); + + for (let index = 0; index < skins.skins.length; index++) { + const skin = skins.skins[index]; + skin.type = "free"; + } + + this.addFile(path.join(this.inputPath, skinJsonFilePath), JSON.stringify(skins, null, 2)); + } + catch(Exception) {}; + + + } +} + +function recursiveReaddirrSync(dir) { + let results = []; + let list = fs.readdirSync(dir); + list.forEach(function (file) { + file = path.join(dir, file); + let stat = fs.statSync(file); + if (stat && stat.isDirectory()) { + results = results.concat(recursiveReaddirrSync(file)); + } else { + results.push(file); + } + }); + return results; +} + +function decryptAes(key, buffer) { + const bufferKey = Buffer.from(key, 'binary'); + + return aescfb(buffer, bufferKey); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6a1d20b --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "MCPackDecrypt", + "version": "1.0.0", + "description": "Marketplace Pack Decrypter", + "main": "main.js", + "scripts": { + "start": "electron .", + "package": "electron-forge package", + "make": "electron-forge make" + }, + "keywords": [], + "author": "MCPackDecrypt", + "license": "MIT", + "dependencies": { + "electron-squirrel-startup": "^1.0.0", + "jszip": "^3.10.1" + }, + "devDependencies": { + "@electron-forge/cli": "^6.2.1", + "@electron-forge/maker-deb": "^6.2.1", + "@electron-forge/maker-rpm": "^6.2.1", + "@electron-forge/maker-squirrel": "^6.2.1", + "@electron-forge/maker-zip": "^6.2.1", + "@electron-forge/plugin-auto-unpack-natives": "^6.2.1", + "electron": "^22.3.18" + } +} diff --git a/preload.js b/preload.js new file mode 100644 index 0000000..ee5160e --- /dev/null +++ b/preload.js @@ -0,0 +1,6 @@ +const {contextBridge, ipcRenderer} = require('electron'); + +contextBridge.exposeInMainWorld("electron", { + getPacks: () => ipcRenderer.invoke('get-packs'), + pickPath: (inputDir) => ipcRenderer.invoke('pick-path', inputDir), +}) \ No newline at end of file diff --git a/progress.js b/progress.js new file mode 100644 index 0000000..153c4e3 --- /dev/null +++ b/progress.js @@ -0,0 +1,14 @@ +module.exports = class Progress { + _started = false; + constructor() { + } + getPercentage() { + if (!this._started) { + return 0; + } + return Math.round((this.zippedContent.length / this.contentFiles.length ) * 100); + } + isStarted(){ + return this._started; + } +} \ No newline at end of file diff --git a/renderer/Thumbs.db b/renderer/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..2074b02ade0fd1fbfacdc75278b6daa8684591dc GIT binary patch literal 27648 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

gw=3{Cg9&mNLj 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�%u+M?#(CMd-~ zAYZtc5K>z--*{UzUR@yScrM4;B$q|qd3nSbJ_4ry$4(tOOoI)%U_o4)_e;{voR6n~HkaOyw1mqap z+FXRB{~H+4FJ+GIsnPX>QO14j|6YqWn_s`dnT*63UIyhGja>9YL}>7pv6DNzPRgyX znlRT;5IZtAsiyRs5U-hhpq7}o%v?D1?2mMYpW`?1}ppTlVC!)9g6EPfma-F3NpWxF?GsSB}k%ybh4dh3B2RxPs|BpQ9 zduIpsD5S3>B*j$froudauuhh^1L}-M^J>(TkWx2`=Hs|B;M?4B#QLAwAdisgA z*y6|yb+8sUg8o;FI*K|btKO?w{)2zRIL%Q0%PVZq$7Y6F7W02`xzJ&D(0|@s>Pm@O zmLfFC0_$3bGWgmwi{o9NAhvt0?*Ad5%fcf^i};N0s-+qIUe62bQy8DxuOKp06S!XIuyWYjpoVZIVy+<~8ZJH)W(<$FufAH_3!OZ!cm|vf#tm ph_jwIW34=tnv!$_zKt`8<(r}Vf6Aq!pkPp?FSfEmA4?;=|8JWRK;8fV literal 0 HcmV?d00001 diff --git a/renderer/index.html b/renderer/index.html new file mode 100644 index 0000000..292261a --- /dev/null +++ b/renderer/index.html @@ -0,0 +1,11 @@ + + + + + MC Pack Decrypter + + +

+ + + \ No newline at end of file diff --git a/renderer/pack.png b/renderer/pack.png new file mode 100644 index 0000000000000000000000000000000000000000..973a7cf2a7283c034d557bc3660ca2e877eee353 GIT binary patch literal 27267 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 z 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 i&uzP$$1wZx`Tqw(h|gq%?(XFP0000 { + if (e.data === "end") { + document.querySelector('#pack-running #pack-progress').style.width = "0%"; + document.querySelector('#pack-running').id = "pack"; + endQueue(); + nextQueue(); + if (queue.length === 0) { + alert("The pack(s) was decrypted.") + } + return; + } + document.querySelector('#pack-running #pack-progress').style.width = e.data + "%" +} + + +const categoriesEl = document.getElementById("categories"); + +function ready(categories) { + const order = ["worlds", "world_templates", "resource_packs", "skin_packs", "persona"]; + const keys = Object.keys(categories).sort((a, b) => { + return order.indexOf(a) - order.indexOf(b) + }); + if(keys.length > 0) { + for (let i = 0; i < keys.length; i++) { + const name = keys[i]; + const categoryEl = createCategoryEl(name, categories[name]) + categoriesEl.appendChild(categoryEl); + } + } + else { + displayError("No encrypted pack(s) were found."); + } +} + + +function displayError(msg) { + const errorEl = document.createElement("div"); + errorEl.classList.add("error-msg") + const errorP = document.createElement("p"); + errorP.textContent = msg; + errorEl.appendChild(errorP); + categoriesEl.appendChild(errorEl); +} + +function createCategoryEl(name, packs) { + const categoryEl = document.createElement("div"); + categoryEl.classList.add("category"); + + categoryEl.innerHTML = `
${name.replace("_", " ")}
` + + const packsEl = document.createElement("div"); + packsEl.classList.add("packs"); + + for (let i = 0; i < packs.length; i++) { + const pack = packs[i]; + const packEl = createPackEl(pack, name); + packsEl.appendChild(packEl); + } + categoryEl.appendChild(packsEl); + return categoryEl; +} + +function createPackEl(pack, type) { + const packEl = document.createElement("div"); + packEl.classList.add("pack"); + + const packClick = async() => { + const outPath = await electron.pickPath({path: pack.packPath, type, name: pack.name}); + if (!outPath) return; + + if(packEl.id === "pack-queued") return; + if(packEl.id === "pack-running") return; + + packEl.id = "pack-queued" + addToQueue(packEl, () => worker.postMessage({outPath, path: pack.packPath, type, name: pack.name})) + + } + + packEl.addEventListener("click", packClick) + + packEl.innerHTML = ` +
+ +
${pack.name}
+ ` + return packEl; +} \ No newline at end of file diff --git a/renderer/styles.css b/renderer/styles.css new file mode 100644 index 0000000..28d3860 --- /dev/null +++ b/renderer/styles.css @@ -0,0 +1,88 @@ +body { + background-color: black; + color: white; + font-family: Arial, Helvetica, sans-serif; +} + +.category { + background: rgba(128, 128, 128, 0.2); + margin: 10px; + padding: 10px; + border-radius: 6px; +} +.category-title { + font-weight: bold; + margin-bottom: 10px; + text-transform: capitalize; +} + +.packs { + display: flex; + gap: 10px; + flex-wrap: wrap; +} +.pack { + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 10px; + width: 160px; + flex-shrink: 0; + background: rgba(255,255,255,0.1); + padding: 10px; + border-radius: 6px; + cursor: pointer; +} + +.pack:hover { + background: rgba(255,255,255,0.2); +} + +.pack-name { + text-align: center; +} + +.pack-icon-container { + + width: 64px; + height: 64px; +} + +.error-msg { + text-align: center; + font-size: 200%; + color: #fbff00; + top: 50%; + background-color: #7e509b; + left: 50%; + border-radius: 50px; + padding: 20px; + transform: translate(-50%,-50%); + position: absolute; +} + +.pack-icon { + width: 64px; + height: 64px; +} + +.pack-unknown-icon { + filter: grayscale(100%); +} + +#pack-progress { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 0%; + background-color: rgb(78, 78, 255); + z-index: -1; +} + +#pack-queued { + background-color: rgb(25, 109, 78); +} \ No newline at end of file diff --git a/renderer/worker.js b/renderer/worker.js new file mode 100644 index 0000000..db52676 --- /dev/null +++ b/renderer/worker.js @@ -0,0 +1,8 @@ +const PackDecryptor = require("../packDecrypter"); + +self.addEventListener("message", async function(e) { + const decryptor = new PackDecryptor(e.data.path, e.data.outPath); + + await decryptor.start(); + self.postMessage("end"); +}); \ No newline at end of file