Created
November 20, 2013 18:20
-
-
Save bacher09/7568288 to your computer and use it in GitHub Desktop.
Decrypt files from testing program
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
import six | |
from six.moves import zip | |
import struct | |
uint = lambda x: x & 0xffffffff | |
uhex = lambda x: hex(x & 0xffffffff) | |
str_to_int = lambda x: struct.unpack("<i", x)[0] | |
int_to_str = lambda x: struct.pack("<i", sign_int(x)) | |
sign_int = lambda x: x if x < 0x7FFFFFFF else x - 0x100000000 | |
if six.PY3: | |
bytes_to_str = bytes | |
str_to_bytes = bytes | |
else: | |
bytes_to_str = lambda x: "".join(map(chr, x)) | |
str_to_bytes = lambda x: map(ord, x) | |
def sign_arr(sarr, uarr): | |
for item in uarr: | |
sarr.append(sign_int(item)) | |
FIRST_STR = six.b('\xf4;\xbc7\x89\xcfw\x01') | |
BASE_KEYS = [ | |
0x44, 0xEF, 0x34, 0x25, 0x67, 0xCA, 0x38, 0x29, | |
0x2D, 0x32, 0x28, 0xC2, 0x64, 0xC6, 0x71, 0xDE, | |
0x5C, 0xEA, 0x57, 0xCB, 0xEF, 0xE0, 0x54, 0x21, | |
0xE1, 0xD4, 0x4B, 0xC2, 0x6E, 0xB3, 0x3A, 0xDB, | |
0x51, 0xE4, 0x62, 0x35, 0x6B, 0xD3, 0xC6, 0x77, | |
0x33, 0x6F, 0x64, 0x31, 0x75, 0xDC, 0xFB, 0x54, | |
0xE9, 0x6C, 0x36, 0x2B, 0x68, 0x3D, 0x5F, 0x6A | |
] | |
DINDEX_ARR = [ | |
0x08C82875, 0xFEB8D524, 0x8CB47ACC, 0xD9632A9E, | |
0xCC29C498, 0xCFC717CB, 0x8B190F90, 0x0D5859BD, | |
0xCBE4459B, 0xF3B150E6, 0xD1E65C03, 0x631F2C66, | |
0xFA5204E3, 0x2FE14EF7, 0x69873821, 0x82ED77C2, | |
0x10C98F2B, 0xC6F84327 | |
] | |
DARR1 = [ | |
0xFE4E03E7, 0xCC81ACDD, 0x3F725207, 0xD822609F, | |
0x9EEE2ADD, 0xD40F878A, 0x330DFD27, 0x955A347A, | |
0x7ACF87A8, 0x8D9E426A, 0xE2221912, 0xF7E082A9, | |
0x98559108, 0x7A9DF352, 0x88E9BD46, 0x426F9AD5, | |
0x513287CC, 0xE7DC9CF8, 0x8821AE11, 0xC9CE2BA8, | |
0x21BE48A8, 0x86F300F7, 0x394183C4, 0xF07BEE67, | |
0x0ECB8C4F, 0x6599113A, 0xC106A7D0, 0x7E28436A, | |
0x6F1816B1, 0xF90DB8BB, 0xEC25B393, 0xD332AB12, | |
0xB002BC46, 0x232898A3, 0x8BC4C0CB, 0x3D47AD64, | |
0xC112DF73, 0x78680154, 0xE436CACE, 0x55BD2344, | |
0x0BB6B5A1, 0x0BEDB15D, 0x844405AB, 0x688E3490, | |
0xFB7D2DCE, 0xD158C2A6, 0x29206A33, 0xEF8F7392, | |
0x4CA8DE70, 0x41E71330, 0x2B708E68, 0x22258EE8, | |
0x77A49DD0, 0xD493BD99, 0x56256BB7, 0x9D507D73, | |
0x745AF2C6, 0x3E39281F, 0xF2F7B26B, 0xF2BEB2F1, | |
0x7460B4D3, 0xB2523076, 0x9346C07F, 0x9F4957DD, | |
0x624994AA, 0x812C71EF, 0x4A1AF9AF, 0xF89578EA, | |
0x9A2FA8C2, 0x8BFC691A, 0xBCB6EF63, 0x37CC9B9F, | |
0x0B629ECE, 0xCBA9058F, 0x3BA821BC, 0x4A6827AD, | |
0x4FEB0FCA, 0x5F182AFB, 0x13271420, 0x4A0978F1, | |
0x42BBB913, 0xD1BE4B3D, 0x7E3FB929, 0xDD5B9D0C, | |
0xC957360A, 0xC5A640E1, 0xF8B82897, 0x4D8DFAE2, | |
0x2766E7C5, 0xD6C5DE9D, 0x4F2A11EF, 0x616CF3D0, | |
0x9B6E7F91, 0x67FF2D3C, 0xE2D4A58B, 0xEE2DB372, | |
0x8498FC38, 0x742B97A6, 0x8CCF6085, 0x7E5C61AC, | |
0x6CD1D325, 0xCA96B6FF, 0x915D9CD7, 0xA5E7F4C9, | |
0x1FF4E3BF, 0xAEFBEAE7, 0x21F8F7C1, 0x93A65FDF, | |
0xF0F71808, 0x0BD690C5, 0xFCC7A5CB, 0x3D27BD59, | |
0x329C75A7, 0xA48FC38A, 0x2F66BB6C, 0xE32E0683, | |
0xF06B8CE0, 0x6FE57A07, 0x89D9BD99, 0x97B10A4A, | |
0x0BA7527C, 0xAAF9AADC, 0x736876F3, 0xA9CE6178, | |
0xA7FD9FB1, 0x07209D26, 0x32C6FA83, 0xC60DBF2E, | |
0x59BE6143, 0x3B5B7A96, 0x8833F67B, 0xC4853E41, | |
0x5872329B, 0xDC0B1AC7, 0xAA263D27, 0x3645A662, | |
0x5D2DF424, 0x18E9D9E5, 0xEAC95EE6, 0x6836CA25, | |
0x932389AC, 0x408631CF, 0xB043976B, 0x167D04B2, | |
0x61A1AF18, 0xE3899B71, 0x43DA04DC, 0xCA6FC167, | |
0x607299D4, 0x3CFC8664, 0x8404E0F1, 0x100A7811, | |
0x29145EDD, 0x6400F106, 0x43491B51, 0x31EE93AB, | |
0x079C77A7, 0xACAD1165, 0x571E6E6C, 0xD58B9230, | |
0xC73D166A, 0x21B75276, 0xF2AF5CFE, 0x601F62F6, | |
0x8B931305, 0x401CA977, 0xDF94F00F, 0x05767DE9, | |
0xFA7C2767, 0xD547FA7A, 0xA1534A7D, 0x2B78BC4B, | |
0x19FFE7E9, 0xC1E08E17, 0x006B84FB, 0x9117FC61, | |
0x843A4C63, 0xB946665C, 0xF3D24BD6, 0xE132F356, | |
0x9967F6BD, 0x1DDF9246, 0x5F208B65, 0xA5C11758, | |
0x847E3B62, 0x2F3ED34E, 0xF54FBBA8, 0x4B8C9936, | |
0xB049DD79, 0xA6D11291, 0x7C6F13A8, 0xC7595CC1, | |
0xD8D9493B, 0x678C6E68, 0xAF3684B7, 0x1FE75132, | |
0xC07E2830, 0x20F0553D, 0x72F2B0CB, 0x452C8F38, | |
0x1D2F6051, 0x2BDE320C, 0xB36D3622, 0xFA7AB7A8, | |
0x741CAF2A, 0x33BFB0F6, 0xD9127C5B, 0xE988D295, | |
0x0A3915F7, 0xD7666D0F, 0x73E34473, 0x60DAAF8E, | |
0x1D3D2046, 0x6DB0A581, 0xEA3A1086, 0x9DD55399, | |
0xF6C3C0D1, 0x8F46A679, 0x23D38371, 0xCA3C2961, | |
0xA0D68A8F, 0xEA171056, 0x0850AC2D, 0x4A1750A2, | |
0x18608CE4, 0x8956F91A, 0x66540773, 0x56A5E7B6, | |
0xF68B2C2B, 0x0AC53BC7, 0x83E8E9C9, 0x1CD57E9E, | |
0x91E985E0, 0x9545B2E7, 0xC9B2E523, 0x383404E6, | |
0x69D0312D, 0x8B410ED2, 0x119E50F1, 0x1423FF8B, | |
0x9BD818D8, 0x9532BD22, 0x44870256, 0x1704F750, | |
0xABE8E5E1, 0x5266A578, 0x4A144DA3, 0x96132212, | |
0xE25F01A9, 0x24F99FE9, 0x86C549B6, 0xBFF785A6, | |
0x6EA4C887, 0x91505387, 0xCC1E326C, 0x0E2D4E93 | |
] | |
DARR2 = [ | |
0x0B556F10, 0x43DE30DE, 0xEC93E292, 0x797E2B2B, | |
0xBF69DF42, 0x39EE5A4B, 0xDECAA7C5, 0x240D7571, | |
0xA7D329D0, 0x60458A73, 0xF34C4AF3, 0xEFD3E354, | |
0xDF8F9EB6, 0xA53A873A, 0xF2AC12DF, 0x7023B080, | |
0xDF9D5A2F, 0x75FAEA8D, 0x9E318CD6, 0x9965F6CA, | |
0xC3652DB7, 0xB72DA8D2, 0x219607EE, 0x95FF7C42, | |
0x3EE7520A, 0xF67508A9, 0xC6991D5F, 0xD5016DAC, | |
0x207D3587, 0x3B78DD14, 0xFDF437A3, 0x64A6EC26, | |
0x03072662, 0x2B419456, 0xAEA99BFA, 0x5C39168E, | |
0x455D8509, 0xCDD2784B, 0x8ECED252, 0xDE8DF31E, | |
0xF647E927, 0x75BFD5BE, 0xC0A5371D, 0x1514D456, | |
0x53B80276, 0x8C530B66, 0xC30D8B25, 0x245F46A9, | |
0x3BCBA668, 0x3B82EFD7, 0xE783888A, 0x656EC3F4, | |
0xE351273E, 0x96DE4BD8, 0xC618BAA6, 0x1DB04E21, | |
0xE75FC6D3, 0xDEDCD7F9, 0xE8D9567F, 0x0132F1AE, | |
0x5116291F, 0xC2C44FD0, 0x52B29816, 0x98730E25, | |
0x98FD236E, 0x622F6E30, 0x5B2B896F, 0x29DCA9FF, | |
0xFF430CFE, 0x378923CA, 0x8C37A5F3, 0xF8E74C80, | |
0xBB5A7EB9, 0xC226C02B, 0x66DAFEEC, 0x55E155F6, | |
0x63088C24, 0x263FABF7, 0xC6EED051, 0x8FD45ECC, | |
0x68C09CBF, 0x378D20BE, 0xB30B9DCA, 0x2AD6B610, | |
0x5E99F744, 0x96F54383, 0x46F3F64F, 0xB9E66273, | |
0xB73A57C7, 0x37A21EC8, 0xD2CE741A, 0x9A3967D8, | |
0x2244C597, 0xDBA98AF3, 0xB131361E, 0x43197593, | |
0x673D7D87, 0xB8B1D085, 0x631DA16B, 0x92C2BEC1, | |
0xBC1E8FC4, 0xCD957945, 0x31682705, 0x144382DE, | |
0x9D1729F2, 0x9AA6935B, 0xCD62515E, 0x273D464C, | |
0x06269712, 0xD0A9098C, 0x62F02913, 0xAAC694CF, | |
0xF14877C3, 0xC85A3E2B, 0x30C15813, 0x1B5524E2, | |
0x4CE1737C, 0xA4DB6467, 0x02C8BBCE, 0x82C3B1BB, | |
0x807281F3, 0x5820F59C, 0xE44F4B17, 0xA1E03081, | |
0x70EB63C7, 0x589940A0, 0x6306DED3, 0x3610A9E0, | |
0xE2434948, 0x2C7B3531, 0xF60A3E53, 0x96C1E80C, | |
0xF551FB1C, 0x49BB2785, 0x18B37D36, 0x03C005EC, | |
0x9AF93855, 0x47092181, 0x7A690757, 0xEE80AF8B, | |
0x48C531EC, 0x70429322, 0xFF4F7C8A, 0x91161E6A, | |
0xC244DEFB, 0x29D2F925, 0xF20E0B86, 0xAE179B4F, | |
0xA07A5F0C, 0x46F48080, 0x32D226E7, 0xB52E0E53, | |
0x14D33793, 0x17F6A82D, 0x23A87358, 0x0AA1F976, | |
0xFF0C77A4, 0x2AF28F91, 0x87E57F26, 0xB31B0286, | |
0xF40A18C5, 0xA9ACED0D, 0x4BABE57B, 0xCFE5376E, | |
0x9E46418A, 0xD19EE22F, 0x6AA4958F, 0x5252231F, | |
0x24CEC090, 0x53E64F72, 0x79E56571, 0x1A4D4849, | |
0x887A1D63, 0x39444625, 0xAE21102D, 0x07F60FA6, | |
0x6FB45369, 0xD10A95A8, 0x781652C4, 0x09CF3DC5, | |
0x40011A3F, 0x1D7651C9, 0x1D065DE5, 0x7FB58466, | |
0x9BC7F1D3, 0xDCDE147F, 0xF0760FBE, 0x3577D97B, | |
0x6F8C1B55, 0xBE4FAC51, 0xDF633FBE, 0x923C81F9, | |
0xE9C610C5, 0x8890A60F, 0xEC5ACCB9, 0x68744A9C, | |
0x37023440, 0xA7163D98, 0x75FEFABA, 0x18804108, | |
0x8C9BDCC3, 0x0422BBA6, 0x563D6645, 0x1B0BE6D1, | |
0xB7EB9206, 0x7F1D89A5, 0x7E9E73F6, 0x9F9B7F34, | |
0xFB951EAF, 0x5DFA903A, 0xBDBF5B37, 0xB83AA2F7, | |
0xCE663C14, 0x0CFE9A04, 0xFEBD685F, 0x70B20578, | |
0x32066888, 0xFBBCB9EE, 0xD62A4660, 0xA6F08D13, | |
0xFC2CEEB7, 0x2B94B630, 0x35EF4044, 0x36154FC0, | |
0x3D0DE3B4, 0x23313F82, 0xB0DDF755, 0x7379DC0E, | |
0x94773AB6, 0x89CBCAB0, 0xAC344E95, 0xCAC89230, | |
0xA5CC807B, 0x3F6AB246, 0x977CEB16, 0xF9D2C408, | |
0x67E1BF29, 0x04CFEA9B, 0xC1CBD120, 0xA47F0B40, | |
0xE7D24609, 0xB7C51C19, 0xAD50D5E6, 0xB3381AE2, | |
0x318A4D54, 0x11AD8554, 0x11B8EDE1, 0xFC546A83, | |
0xF5D29CA0, 0x87C53342, 0x56BBE1D0, 0x9DD60468, | |
0x0FEDFA1C, 0x46F5FF65, 0xB04D7F77, 0x38E3A51A, | |
] | |
DARR3 = [ | |
0x678E417D, 0xA4B98E5B, 0x2524FACD, 0x8BB1082B, | |
0x48835DAB, 0xB78714A3, 0xFDDB5E20, 0xABD44FD3, | |
0x052C6170, 0xDFFF7E0A, 0x7EF2B8E6, 0x876FFC03, | |
0x7C0918F0, 0x2343A48E, 0x4081F2B5, 0x471690E8, | |
0xF20DFC00, 0xE8FEA3FB, 0xEB65F9F4, 0xF6D9C004, | |
0x20D23F30, 0xA951CEA4, 0xD692D700, 0x0E5EF92D, | |
0x008E1177, 0x1CF10C1B, 0x31177984, 0x47E5E7C6, | |
0x0A0D72D6, 0x21DA2722, 0x3A60A5FA, 0xF937631A, | |
0x6FC63B06, 0x09EDC3A2, 0x56D51176, 0xFE237844, | |
0xE103AB4C, 0xB3A93534, 0xD89E87DE, 0xD2C5AEBB, | |
0x99C0FA3F, 0xC549C5D7, 0xF39A9BC6, 0xA95ACD52, | |
0x246D0FCA, 0x6F302D26, 0xE87A2737, 0x8143A53B, | |
0xCAF2B55F, 0xFF4ADB5E, 0x106D030B, 0x310EACD0, | |
0xEF07E808, 0xBB05B9C8, 0x939E95C4, 0x0DFBD2DF, | |
0xECD3A341, 0x7F5472F2, 0xBD885677, 0x4B9B0FA7, | |
0x7944E926, 0x87025360, 0x02EAC2C1, 0xA6242701, | |
0x25BD2F93, 0x179E8BF6, 0xB2F736DC, 0xF8BA98BF, | |
0x3D1A1397, 0x195305E6, 0x575E595D, 0x566E65F1, | |
0xFA63E815, 0xD9AB82E0, 0xBB33FCF0, 0x10D67A0F, | |
0x85ECFF78, 0x87FD7223, 0xB3616C1C, 0xFABA2E21, | |
0x68738563, 0xEE816608, 0xECD0CB7A, 0x23C0BD41, | |
0xC537697D, 0xE3118E7E, 0x97E44021, 0x2D439075, | |
0x3EC61169, 0x0624FD0E, 0x16D3E3AE, 0xCDB60C74, | |
0x3295B530, 0xF2EB4200, 0xE8EF9F1B, 0xD4B98F78, | |
0x24DB3E73, 0x1A97C73A, 0xB10ADEA8, 0x32BED85A, | |
0xC81287C7, 0x4517DF68, 0x8FB6A6DF, 0x17908307, | |
0xBA495677, 0x6FEB6C1C, 0x4AB036BC, 0x789783CF, | |
0x2B55E849, 0x128EE62C, 0x8EB4E128, 0x2A5AD0A6, | |
0x1D4DA8F6, 0xBE7F93F2, 0xF80F421D, 0xEDAE1689, | |
0x82AE8B8A, 0x69358662, 0xD2ABF51B, 0x0600BD53, | |
0x78C7BEFC, 0xC4F696EA, 0xF20A1502, 0xF1498849, | |
0xE0148814, 0x12C736F6, 0x012E6A5B, 0x5092E1DB, | |
0x7CA844EA, 0xB4738661, 0xFD2C8798, 0x4E5E72D0, | |
0x5AAF702E, 0xB1E33194, 0x3C26788F, 0x827F9662, | |
0x014820C4, 0x0DFB5DC3, 0x60190DE5, 0x3B561650, | |
0xDAE87F70, 0x007E8D2F, 0x179D4665, 0xCB0378F5, | |
0xFA380CE6, 0x31C5137C, 0x3D6DFBE8, 0x158F6A53, | |
0xAF03AAC3, 0xC5080F75, 0xEAE692C6, 0xC1DC75F1, | |
0x43FEA522, 0x1BC4CC59, 0xA2714DCC, 0x9C032A45, | |
0x31B082D0, 0x776B06B6, 0x74C4D753, 0x33EE585C, | |
0xD6544B97, 0x5E36823E, 0x7934D6CF, 0xEA66D682, | |
0x4DD7A245, 0x6490C8C5, 0x2E8D2ECB, 0x73C4AB7A, | |
0x9489B4C0, 0x32946EB2, 0x183A9546, 0x18DE3DD9, | |
0x5192A7BE, 0x36AA9F49, 0x4BAB8DC4, 0x54E2984D, | |
0x88DC0173, 0x671ADB1D, 0xB3CA5DA2, 0x62C3C00F, | |
0x2EA4A4E4, 0x1E825ED4, 0x8FF95E57, 0x63078958, | |
0x2B519635, 0x95EDB331, 0x773FF0B4, 0xD30765CA, | |
0x96C9B970, 0x09A1BA27, 0xB9F5F621, 0xEDE61153, | |
0x7CAE92D2, 0xD3FD3B63, 0xC5B7B3C9, 0x4F68DD23, | |
0xB3DD70DE, 0xD407121F, 0x73C7A415, 0x76BCA564, | |
0x20CD7365, 0x4C30B7F5, 0x429CBB40, 0xD77BCBA7, | |
0xC36E5989, 0x397DF312, 0xFF44957A, 0x8964A1B3, | |
0x7DFF8FB2, 0x60DBD11F, 0xE4F55865, 0xF824D0E7, | |
0xA5F04A46, 0xCA976572, 0x02D9A6FA, 0x621AB8DA, | |
0xB6C6A8C9, 0xCEEC088F, 0x0EBD3F21, 0x59837C91, | |
0x2DBD8834, 0x0E2B0C5C, 0x3DBCE71E, 0x8156E505, | |
0x56F8E1F4, 0x08A8F274, 0x8FE280F8, 0x4AEBE73F, | |
0xDD236EED, 0x1164A216, 0x6C562F30, 0xBFFFF277, | |
0x2D1C26D3, 0xA9B8290A, 0x815E130F, 0xB88AFC1D, | |
0xC0E94202, 0x12C678B7, 0xD3BF9014, 0xFF6A4545, | |
0xD77A82D8, 0x6905E452, 0xC830F021, 0x31EA8851, | |
0x5B2F77B3, 0xC7444B46, 0xB03E77E0, 0x513CA78C, | |
0xD09EA1E0, 0xC2E9E2CD, 0x8E193AF5, 0x87DBAF80, | |
0xB0769FE5, 0x2538B942, 0x2839651C, 0xF7077868, | |
] | |
DARR4 = [ | |
0x7D87CDCF, 0x6C7AA93A, 0xB07C0847, 0xEFD355AE, | |
0xF5B3B477, 0x3AB7E374, 0x9C34EB6C, 0x0E921AE2, | |
0x26B8DAAB, 0x7AE722A4, 0xC479B4F2, 0xD4A28B9C, | |
0xCAD599A8, 0xBDD16DC9, 0x2FED963A, 0xEEEE4AEC, | |
0xCA244F0A, 0xF728AA58, 0x9433FC20, 0x72BE5CC1, | |
0xE1ACDA95, 0xAB666BBC, 0x74E012D4, 0x9071BE36, | |
0xFB877021, 0xA0E2FC56, 0xF31CE328, 0x50B75EA3, | |
0x14F72F49, 0x13EF0D3E, 0x3FA5D201, 0x1BDDBA05, | |
0x3B7CA357, 0x299373F7, 0x499FE22F, 0xE386A17C, | |
0x20DCAFB5, 0x3B2E2481, 0xA4870E5B, 0x8B17C2D9, | |
0xED55C699, 0xE7CE70E3, 0xE11982B2, 0x64E1C707, | |
0xF0197F31, 0xC468B211, 0x6DEE935B, 0x6BBAA39B, | |
0x7284A8BB, 0xA699B0C5, 0x20677048, 0x0C6059A9, | |
0xDE16B78E, 0x35E83D07, 0x18837CE6, 0x4F1ABE50, | |
0x8FFBB6BA, 0x78B3AAB5, 0x5EA33D42, 0xC7CD7D0F, | |
0xE7540127, 0xF61FFF0B, 0x0F8D4DA9, 0x5F759575, | |
0x20C18851, 0x247C0A95, 0x6A411ED6, 0xCAB70AB2, | |
0x85807775, 0x70263593, 0xE39D9E7B, 0xF971B6ED, | |
0xCE702FF0, 0x13281A26, 0xDE9CA423, 0xBD39D312, | |
0xD2A8E322, 0x63ADDA19, 0x934B9725, 0x1E3A09ED, | |
0x8C6A35D0, 0x1737425D, 0xEAFED9F4, 0x4A439269, | |
0x01B345A3, 0xB2387061, 0x6F607A46, 0x86439C1C, | |
0xC8428C26, 0x272148F3, 0x36A40A01, 0xCA55522F, | |
0x9968F6BF, 0x879B9AFA, 0x083A6E1F, 0x4C788C8E, | |
0x155BE07D, 0x1BE1635C, 0xC8B8E986, 0x501FDDE1, | |
0x66FA84C4, 0x18AE80C7, 0xFC396299, 0xDB5FDAFD, | |
0x972F29C4, 0x6D8210EE, 0xCB1B014E, 0x763EC4D7, | |
0xB1C8CF77, 0xF05D59A0, 0x6C7C8743, 0xB73BD2BF, | |
0xADCB027B, 0x871558D3, 0xA0B20799, 0xE0E40E21, | |
0xD3993E3F, 0xD2BAB717, 0xDC055E49, 0x03ACA1CF, | |
0x4C038DA8, 0x462C118B, 0xDD7CCE50, 0x60DD93BF, | |
0x508F756B, 0x8E9F47E7, 0x06B1AAF5, 0x1AB348AE, | |
0xBF15746D, 0xFEA6E277, 0xBC2568F4, 0x299BB5A4, | |
0x33C74A75, 0x58C5350A, 0x01A7F769, 0xA0ADD89F, | |
0x3EC0C055, 0xBF3465A7, 0x3B7A0ECC, 0xA1DC62E3, | |
0x76F331F7, 0x308A81A6, 0x21DA5CBB, 0x3C95D530, | |
0x3231800F, 0xF335F660, 0x0492D3A0, 0xEAAD9969, | |
0xA91F0CA0, 0x27AC2B19, 0xBD005A90, 0xAD641784, | |
0x886E561C, 0x3762D11E, 0x6152C4B6, 0x913EDC64, | |
0xF8ED5439, 0xFBEA859A, 0xA9DA95AF, 0x58E19C4B, | |
0xA5EE7BCC, 0x4C638EC5, 0xB20CD16F, 0xD5879566, | |
0x96551AF7, 0xF75B6547, 0x7154B7BE, 0x1AB8C278, | |
0x63F926DC, 0xB3DCC47A, 0xC1A67EF6, 0x3963DA97, | |
0x417DE1BA, 0x50D00496, 0x1CF142D6, 0x0693AC8F, | |
0x439A1A0F, 0xCC7B507E, 0x5554924E, 0x29B3EF33, | |
0xA73DECAE, 0x5999214A, 0x6B3E349F, 0xFB22C062, | |
0x7602F110, 0xCB6D3551, 0x1D751162, 0x5101A51B, | |
0xBCA2783E, 0xDB7F0EBD, 0x3D968657, 0xD294BD2C, | |
0xD263D78E, 0x8CEEC031, 0x2CF36CA6, 0x33748F54, | |
0xDE11BB8B, 0x5FF1E0CE, 0x5B39469D, 0xA741EB04, | |
0xBC9A698C, 0x21428B85, 0x5CF4DE31, 0x56CCF0E4, | |
0x7EAFB5E8, 0x483C8E72, 0x62D5ACF2, 0x18099F86, | |
0x366D2286, 0x0F8768C6, 0x8722A5B5, 0xAFA77EE6, | |
0xC2136159, 0xB23696F4, 0xEA084547, 0xE4DA3D70, | |
0x53BBAE31, 0xBC478C3A, 0x0BD970AE, 0x315FDF7B, | |
0xE7D27A99, 0x28556F4E, 0x19AE8C82, 0x75EC82DE, | |
0xDFF26B6B, 0x0CDCE597, 0x2BE91441, 0x6CF45F19, | |
0x2D820505, 0x44257131, 0x870AD0B8, 0xBC53B935, | |
0xBE9B5F6C, 0xA7472468, 0xFB1E8EAE, 0xE3ED9022, | |
0x7408C511, 0x360E3B67, 0xC5D45A14, 0x9DE56CD7, | |
0x68BC4EBE, 0x3CCB0058, 0xCAEDF991, 0xB874EF91, | |
0xCFD8EF2B, 0x5B1AB67D, 0xBE18F23D, 0xC97CEFB8, | |
0x9E426B13, 0x9A80046C, 0x5206A943, 0xDBE63185, | |
0x8175DFE8, 0xFEC2BACA, 0x213BC8C5, 0xEA3164E9, | |
] | |
INDEX_ARR = [] | |
ARR1 = [] | |
ARR2 = [] | |
ARR3 = [] | |
ARR4 = [] | |
sign_arr(INDEX_ARR, DINDEX_ARR) | |
sign_arr(ARR1, DARR1) | |
sign_arr(ARR2, DARR2) | |
sign_arr(ARR3, DARR3) | |
sign_arr(ARR4, DARR4) | |
def block_generate(v1, v2): | |
v1, v2 = uint(v1), uint(v2) | |
s, k = 0, 0 | |
x = (v1 >> 0x18) | ((v1 >> 0x8) & 0xFF00) | ((v1 << 0x8) & 0xFF0000) | \ | |
uint(v1 << 0x18) | |
y = (v2 >> 0x18) | ((v2 >> 0x8) & 0xFF00) | ((v2 << 0x8) & 0xFF0000) | \ | |
uint(v2 << 0x18) | |
for i in range(16): | |
if i % 2 == 0: | |
x ^= s ^ INDEX_ARR[i] | |
k = x | |
else: | |
y ^= s ^ INDEX_ARR[i] | |
k = y | |
s = uint(((ARR1[(k >> 0x18) & 0xFF] + ARR2[(k >> 0x10) & 0xFF]) ^ \ | |
ARR3[(k >> 0x8) & 0xFF]) + ARR4[k & 0xFF]) | |
x ^= s ^ (INDEX_ARR[16]) | |
y ^= (INDEX_ARR[17]) | |
r1 = (x >> 0x18) | ((x >> 0x8) & 0xFF00) | ((x << 0x8) & 0xFF0000) | \ | |
uint(x << 0x18) | |
r2 = (y >> 0x18) | ((y >> 0x8) & 0xFF00) | ((y << 0x8) & 0xFF0000) | \ | |
uint(y << 0x18) | |
return r2, r1 | |
def xor_decore_chunk(input1, input2): | |
for i1, i2 in zip(input1, input2): | |
yield i1 ^ i2 | |
def part_decode(old_part, new_part): | |
s1, s2 = new_part[:4], new_part[4:8] | |
i1, i2 = str_to_int(s1), str_to_int(s2) | |
r1, r2 = block_generate(i1, i2) | |
c1, c2 = int_to_str(r1), int_to_str(r2) | |
old_bytes = str_to_bytes(old_part) | |
new_bytes = str_to_bytes(c1 + c2) | |
return bytes_to_str(xor_decore_chunk(new_bytes, old_bytes)) | |
def grouper(pstr, n, fill=six.b("\0")): | |
i, l = 0, len(pstr) | |
while i < l: | |
yield pstr[i:i+n].ljust(n, fill) | |
i += n | |
def read_chunks(f_obj): | |
CHUNK = 4096 | |
data = f_obj.read(CHUNK) | |
while data: | |
for item in grouper(data, 8): | |
yield item | |
data = f_obj.read(CHUNK) | |
def decrypt_file(f_obj): | |
old_block = FIRST_STR | |
for block in read_chunks(f_obj): | |
yield part_decode(old_block, block) | |
old_block = block | |
def decrypt_to_file(f1, f2): | |
for text in decrypt_file(f1): | |
f2.write(text) | |
def decrypt_file_to_file(filename1, filename2): | |
with open(filename1, "rb") as f1, open(filename2, "wb") as f2: | |
decrypt_to_file(f1, f2) | |
def main(): | |
import argparse, sys | |
parser = argparse.ArgumentParser(description='Decrypt some data.') | |
parser.add_argument("infile", type=argparse.FileType("rb")) | |
parser.add_argument("outfile", nargs="?", type=argparse.FileType("wb"), | |
default=sys.stdout) | |
args = parser.parse_args() | |
with args.infile as f1, args.outfile as f2: | |
decrypt_to_file(f1, f2) | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment