mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	[utils] Move codes for handling eval() from iqiyi.py
This commit is contained in:
		| @@ -18,7 +18,7 @@ from ..compat import ( | ||||
|     compat_urllib_parse_urlparse, | ||||
| ) | ||||
| from ..utils import ( | ||||
|     base_n, | ||||
|     decode_packed_codes, | ||||
|     ExtractorError, | ||||
|     ohdave_rsa_encrypt, | ||||
|     remove_start, | ||||
| @@ -130,28 +130,8 @@ class IqiyiSDKInterpreter(object): | ||||
|     def __init__(self, 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): | ||||
|         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) | ||||
|  | ||||
|   | ||||
| @@ -2635,3 +2635,23 @@ def base_n(num, n, table=None): | ||||
|         ret = table[num % n] + ret | ||||
|         num = num // n | ||||
|     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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yen Chi Hsuan
					Yen Chi Hsuan