68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from core.scrapertools import *
|
|
|
|
|
|
def decode(text):
|
|
text = re.sub(r"\s+|/\*.*?\*/", "", text)
|
|
data = text.split("+(゚Д゚)[゚o゚]")[1]
|
|
chars = data.split("+(゚Д゚)[゚ε゚]+")[1:]
|
|
|
|
txt = ""
|
|
for char in chars:
|
|
char = char \
|
|
.replace("(o゚ー゚o)", "u") \
|
|
.replace("c", "0") \
|
|
.replace("(゚Д゚)['0']", "c") \
|
|
.replace("゚Θ゚", "1") \
|
|
.replace("!+[]", "1") \
|
|
.replace("-~", "1+") \
|
|
.replace("o", "3") \
|
|
.replace("_", "3") \
|
|
.replace("゚ー゚", "4") \
|
|
.replace("(+", "(")
|
|
char = re.sub(r'\((\d)\)', r'\1', char)
|
|
|
|
c = "";
|
|
subchar = ""
|
|
for v in char:
|
|
c += v
|
|
try:
|
|
x = c; subchar += str(eval(x)); c = ""
|
|
except:
|
|
pass
|
|
if subchar != '': txt += subchar + "|"
|
|
txt = txt[:-1].replace('+', '')
|
|
|
|
txt_result = "".join([chr(int(n, 8)) for n in txt.split('|')])
|
|
|
|
return toStringCases(txt_result)
|
|
|
|
|
|
def toStringCases(txt_result):
|
|
sum_base = ""
|
|
m3 = False
|
|
if ".toString(" in txt_result:
|
|
if "+(" in txt_result:
|
|
m3 = True
|
|
sum_base = "+" + find_single_match(txt_result, ".toString...(\d+).")
|
|
txt_pre_temp = find_multiple_matches(txt_result, "..(\d),(\d+).")
|
|
txt_temp = [(n, b) for b, n in txt_pre_temp]
|
|
else:
|
|
txt_temp = find_multiple_matches(txt_result, '(\d+)\.0.\w+.([^\)]+).')
|
|
for numero, base in txt_temp:
|
|
code = toString(int(numero), eval(base + sum_base))
|
|
if m3:
|
|
txt_result = re.sub(r'"|\+', '', txt_result.replace("(" + base + "," + numero + ")", code))
|
|
else:
|
|
txt_result = re.sub(r"'|\+", '', txt_result.replace(numero + ".0.toString(" + base + ")", code))
|
|
return txt_result
|
|
|
|
|
|
def toString(number, base):
|
|
string = "0123456789abcdefghijklmnopqrstuvwxyz"
|
|
if number < base:
|
|
return string[number]
|
|
else:
|
|
return toString(number // base, base) + string[number % base]
|