| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- # 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
|