[utils] Move codes for handling eval() from iqiyi.py
This commit is contained in:
parent
59f898b7a7
commit
f52354a889
2 changed files with 22 additions and 22 deletions
|
@ -18,7 +18,7 @@ from ..compat import (
|
||||||
compat_urllib_parse_urlparse,
|
compat_urllib_parse_urlparse,
|
||||||
)
|
)
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
base_n,
|
decode_packed_codes,
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
ohdave_rsa_encrypt,
|
ohdave_rsa_encrypt,
|
||||||
remove_start,
|
remove_start,
|
||||||
|
@ -130,28 +130,8 @@ class IqiyiSDKInterpreter(object):
|
||||||
def __init__(self, sdk_code):
|
def __init__(self, sdk_code):
|
||||||
self.sdk_code = sdk_code
|
self.sdk_code = sdk_code
|
||||||
|
|
||||||
def decode_eval_codes(self):
|
|
||||||
self.sdk_code = self.sdk_code[5:-3]
|
|
||||||
|
|
||||||
mobj = re.search(
|
|
||||||
r"'([^']+)',62,(\d+),'([^']+)'\.split\('\|'\),[^,]+,{}",
|
|
||||||
self.sdk_code)
|
|
||||||
obfucasted_code, count, symbols = mobj.groups()
|
|
||||||
count = int(count)
|
|
||||||
symbols = symbols.split('|')
|
|
||||||
symbol_table = {}
|
|
||||||
|
|
||||||
while count:
|
|
||||||
count -= 1
|
|
||||||
b62count = base_n(count, 62)
|
|
||||||
symbol_table[b62count] = symbols[count] or b62count
|
|
||||||
|
|
||||||
self.sdk_code = re.sub(
|
|
||||||
r'\b(\w+)\b', lambda mobj: symbol_table[mobj.group(0)],
|
|
||||||
obfucasted_code)
|
|
||||||
|
|
||||||
def run(self, target, ip, timestamp):
|
def run(self, target, ip, timestamp):
|
||||||
self.decode_eval_codes()
|
self.sdk_code = decode_packed_codes(self.sdk_code)
|
||||||
|
|
||||||
functions = re.findall(r'input=([a-zA-Z0-9]+)\(input', self.sdk_code)
|
functions = re.findall(r'input=([a-zA-Z0-9]+)\(input', self.sdk_code)
|
||||||
|
|
||||||
|
|
|
@ -2635,3 +2635,23 @@ def base_n(num, n, table=None):
|
||||||
ret = table[num % n] + ret
|
ret = table[num % n] + ret
|
||||||
num = num // n
|
num = num // n
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def decode_packed_codes(code):
|
||||||
|
mobj = re.search(
|
||||||
|
r"'([^']+)',(\d+),(\d+),'([^']+)'\.split\('\|'\),[^,]+,{}",
|
||||||
|
code)
|
||||||
|
obfucasted_code, base, count, symbols = mobj.groups()
|
||||||
|
base = int(base)
|
||||||
|
count = int(count)
|
||||||
|
symbols = symbols.split('|')
|
||||||
|
symbol_table = {}
|
||||||
|
|
||||||
|
while count:
|
||||||
|
count -= 1
|
||||||
|
base_n_count = base_n(count, base)
|
||||||
|
symbol_table[base_n_count] = symbols[count] or base_n_count
|
||||||
|
|
||||||
|
return re.sub(
|
||||||
|
r'\b(\w+)\b', lambda mobj: symbol_table[mobj.group(0)],
|
||||||
|
obfucasted_code)
|
||||||
|
|
Loading…
Reference in a new issue