1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| from gmpy2 import invert import struct
c = [218,49,230,35,65,168,134,53,233,62,212,208,127,224,63,164,36,88,65,138,118,255,107,22,16,239,61,58,130,101,227,109]
p = -232573883 & 0xffffffff d = int(invert(83987, p)) def decrypt1(s): t = b'' for i in range(8): k = struct.unpack("<I", (s[i*4: i*4+4]))[0]
k = k * d % p t += struct.pack("<I", k) return t
def decrypt2(s): t = b'' for i in range(4): k = struct.unpack("<Q", s[i * 8: i * 8 + 8])[0] ka = (k >> (25 + 14)) & 0x1ffffff kb = (k >> 14) & 0x1ffffff kc = k & 0x3fff a = ka b = a ^ kb c = (b >> 11) ^ kc k = (a << (25 + 14)) | (b << 14) | c t += struct.pack("<Q", k) return t
print(hex(d)) print(hex(p)) c = bytes(c) c = decrypt2(c) c = decrypt1(c) print(c)
c = [0] * 5 c[0] = 0x9F8E7A1CC6486497 c[1] = 0x69EEF382E760BD46 c[2] = 0xB9C017E2E30EF749 c[3] = 0x98410148A430392C c[4] = 0xE80E7411E5B5A939 x = [0x7B, 0x51, 0xF3, 0x5A, 0xCC, 0x39, 0xF9, 0x92, 0x1C, 0x9E, 0x58, 0x69, 0x9D, 0xF7, 0xFD, 0x4A, 0x3E, 0xFB, 0x1D, 0x2C, 0x4D, 0x0C, 0x70, 0xB1, 0x3B, 0x8D, 0x25, 0xED, 0x91, 0xB1, 0x73, 0x8D, 0x82, 0xE6, 0xE7, 0x50, 0x20, 0x61, 0x62, 0x3C, 0x00, 0x3A, 0xA6, 0x9D, 0x32] d = invert(23, 256)
dec = [] for t in c: dec += list(struct.pack("<Q", t)) dec += list(struct.pack("<I", 0xA58BFDAC)) dec.append(0x6D)
for i in range(0, len(dec)): print(chr((dec[i] - x[i]) * d % 256), end = "")
|