Skip to content

Instantly share code, notes, and snippets.

@bacher09
Created November 20, 2013 18:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bacher09/7568288 to your computer and use it in GitHub Desktop.
Save bacher09/7568288 to your computer and use it in GitHub Desktop.
Decrypt files from testing program
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