# import base64 class Enigma: def __init__(self, config): self._vk_id = config.vk_id() def R(): return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=" def vk_id(self): return self._vk_id def decode(self, cursed_url): return self.s(cursed_url) def a(self, e): if not e or len(e) % 4 == 1: result = False # print("a result (Base64):", base64.b64encode(str(result).encode()).decode()) return result t, o, n, i, s = None, None, 0, 0, "" while True: o = e[i] if i < len(e) else None if not o: break o = Enigma.R().find(o) if o != -1: t = o if n % 4 == 0 else 64 * t + o n += 1 if (n - 1) % 4 != 0: s += chr(255 & (t >> (-2 * n & 6))) i += 1 result = s # print("a result (Base64):", base64.b64encode(result.encode()).decode()) return result def s(self, e): n = e.split("?extra=")[1].split("#") r = "" if n[1] == "" else self.a(n[1]) n = self.a(n[0]) if not isinstance(r, str) or not n: # print("s result (Base64):", base64.b64encode(e.encode()).decode()) return e r = r.split(chr(9)) if r else [] s = len(r) while s > 0: s -= 1 o = r[s].split(chr(11)) t = o[0] o[0] = n if not hasattr(Enigma.EnigmaI, t): # print("s result (Base64):", base64.b64encode(e.encode()).decode()) return e n = getattr(Enigma.EnigmaI, t)(*o, self.vk_id()) if n and n.startswith("http"): # print("s result (Base64):", base64.b64encode(n.encode()).decode()) return n # print("s result (Base64):", base64.b64encode(e.encode()).decode()) raise ValueError(f"<{e}> can not be decoded") return e class EnigmaI: @staticmethod def v(e, _vk_id): result = e[::-1] # print("i.v result (Base64):", base64.b64encode(result.encode()).decode()) return result @staticmethod def r(e, t, _vk_id): o = None e = list(e) n = Enigma.R() + Enigma.R() i = len(e) for _ in range(i): o = n.find(e[i - 1]) if o != -1: e[i - 1] = n[o - t : o - t + 1] i -= 1 result = "".join(e) # print("i.r result (Base64):", base64.b64encode(result.encode()).decode()) return result @staticmethod def s(e, t, _vk_id): o = len(e) if o: def inner_n(e, t): o = len(e) n = [] if o: t = abs(t) e = o n = [None] * e while e > 0: e -= 1 t = (o * (e + 1) ^ t + e) % o n[e] = t # print( # "i.anon_s result (Base64):", base64.b64encode((''.join([str(i) for i in n])).encode()).decode() # ) return n n = inner_n(e, t) r = 0 e = list(e) r += 1 while r < o: e[r], e[n[o - 1 - r]] = e[n[o - 1 - r]], e[r] r += 1 e = "".join(e) result = e # print("i.s result (Base64):", base64.b64encode(result.encode()).decode()) return result @staticmethod def i(e, t, vk_id): result = Enigma.EnigmaI.s(e, int(t) ^ vk_id, vk_id) # print("i.i result (Base64):", base64.b64encode(result.encode()).decode()) return result @staticmethod def x(e, t): o = [] t = ord(t[0]) for n in e: o.append(chr(ord(n) ^ t)) result = "".join(o) # print("i.x result (Base64):", base64.b64encode(result.encode()).decode()) return result