Exemple #1
0
    def _decodeData(self, baseData):
        data = baseData
        fullDecData = ''
        decData = ''
        for idx in range(3):
            if 'eval(' not in data:
                break
            tmpTab = self.cm.ph.getAllItemsBeetwenMarkers(
                data, "eval(", '</script>')
            for tmpData in tmpTab:
                tmp = tmpData.split('eval(')
                if len(tmp): del tmp[0]
                for tmpItem in tmp:
                    tmpDec = ''
                    for decFun in [VIDEOMEGA_decryptPlayerParams]:
                        tmpDec = unpackJSPlayerParams('eval(' + tmpItem,
                                                      decFun, 0)
                        if '' != tmpDec:
                            break
                    decData += tmpDec
            fullDecData += decData
            data = decData

        subTab = re.compile('''(['"]\s*\+[^\+]+?\+\s*['"])''').findall(
            fullDecData)
        for item in subTab:
            var = self.cm.ph.getSearchGroups(item,
                                             '''\+([^\+]+?)\+''')[0].strip()
            val = self.cm.ph.getSearchGroups(
                fullDecData, '''var\s*%s\s*=\s*['"]([^'^"]+?)['"]''' % var)[0]
            fullDecData = fullDecData.replace(item, val)
        fullData = baseData + fullDecData
        fullData = fullData.replace('\\"', '"').replace('\\/', '/')
        return fullData
Exemple #2
0
	def extractLink(self,videoUrl):
		url_out='None'
		if 'gdriveplayer' in videoUrl:
			_data3 = re.findall('link=(.*?)&',videoUrl, re.S)
			if _data3: 
				url_out = _data3[0]
		elif 'juicy.php?url=' in videoUrl:
			_data3 = re.findall('url=(.*)',videoUrl, re.S)
			if _data3: 
				url_out = _data3[0]
		else:
			sts, data = self.getPage(videoUrl)
			if sts:
				_data2 = re.findall('<iframe.*?src="(.*?)"',data, re.S)		 		
				if _data2:			
					url_out = _data2[0]
				else:
					_data4 = re.findall('javascript">eval(.*?)</script>',data, re.S)
					if _data4:
						script_eval='eval'+_data4[0].strip()
						printDBG(script_eval)
						datau = unpackJSPlayerParams(script_eval, SAWLIVETV_decryptPlayerParams, 0)
						printDBG(datau)
						_data5 = re.findall('<iframe.*?src="(.*?)"',datau.replace('\\',''), re.S)
						if _data5:
							url_out = _data5[0]
					else:
						_data2 = re.findall('<meta.*?url=(.*?)"',data, re.S)		 		
						if _data2:			
							url_out = _data2[0]					
						else:
							_data4 = re.findall('"file".*?"(.*?)"',data, re.S)
							if _data4:
								url_out = _data4[0]
		return url_out	
Exemple #3
0
 def _evalJscode(self, data):
     try:
         data = byteify(json.loads(data))
         code = data[0]['jscode']
         tmpData = ''
         for decFun in [
                 VIDEOWEED_decryptPlayerParams,
                 VIDEOWEED_decryptPlayerParams2,
                 SAWLIVETV_decryptPlayerParams
         ]:
             tmpData = unpackJSPlayerParams(code, decFun, 0)
             if '' != tmpData:
                 printDBG(tmpData)
                 return tmpData
         m1 = '(function (){'
         code = code[len(m1):]
         globalTabCode, pyCode, args = self.getPyCode(code)
         pyCode = 'def retA():\n\t' + globalTabCode.replace(
             '\n', '\n\t') + '\n\t' + pyCode.replace('\n', '\n\t') + (
                 '\n\treturn justRet%s\n' % args) + 'param = retA()'
         printDBG(pyCode)
         data = self.unpackJS(pyCode, 'param')
         printDBG(data)
     except Exception:
         printExc()
     return data
	def get_links(self,cItem):
		urlTab = []
		#urlTab.append({'name':'ttttttt', 'url':'hkhhk', 'need_resolve':0})
		URL=cItem['url']
		sts, data = self.getPage(URL)
		if sts:
			#d1 = re.findall('''["']sources['"]\s*:\s*\[(.*?)\]''', data)
			d1 = re.findall('''["']sources['"]\s*:\s*\[(.*?)\]''', data, re.S)
			if d1:
				if 'eval' in d1[0]:
					d3 = re.findall('eval\((.*)', data, re.S)
					if d3:
						#tab_dec=[SAWLIVETV_decryptPlayerParams,VIDEOWEED_decryptPlayerParams, VIDEOWEED_decryptPlayerParams2,TEAMCASTPL_decryptPlayerParams,VIDUPME_decryptPlayerParams,KINGFILESNET_decryptPlayerParams]
						data = unpackJSPlayerParams('eval('+d3[0]+')', SAWLIVETV_decryptPlayerParams, 0)
						printDBG(data)
						urlTab.append({'name':'Direct Link', 'url':data.replace('"','').replace("'",''), 'need_resolve':0,'type':'local'})
				else:
					d1 = re.findall('''['"]*file['"]*\s*:\s*([^\(]+)''', d1[0])[0]		
					d2 = re.findall('function\s+%s[^{]+{\s*([^}]+)' % d1, data)[0]		
					
					data_list = re.findall('return.*?"(.*?)"', d2, re.S)
					if data_list:
						URL1=data_list[0]
						urlTab.append({'name':'Direct Link', 'url':URL1, 'need_resolve':0,'type':'local'})
						
					data_list = re.findall('<iframe src="(.*?)"', data, re.S)
					if data_list:
						URL1=data_list[0]
						urlTab.append({'name':gethostname(URL1), 'url':URL1, 'need_resolve':1})			

		return urlTab	
Exemple #5
0
 def extractLink(self, videoUrl, refer):
     url_out = 'None'
     printDBG('a1')
     if 'juicy.php?url=' in videoUrl:
         printDBG('a3')
         _data3 = re.findall('url=(.*)', videoUrl, re.S)
         if _data3:
             url_out = _data3[0]
     else:
         printDBG('a4')
         Params = dict(self.defaultParams)
         Params['header']['Referer'] = refer
         sts, data = self.getPage(videoUrl, Params)
         if sts:
             printDBG('a5')
             _data2 = re.findall('<iframe.*?src="(.*?)"', data, re.S)
             if _data2:
                 url_out = _data2[0]
             else:
                 printDBG('a6')
                 _data4 = re.findall('javascript">eval(.*?)</script>', data,
                                     re.S)
                 if _data4:
                     script_eval = 'eval' + _data4[0].strip()
                     printDBG(script_eval)
                     datau = unpackJSPlayerParams(
                         script_eval, SAWLIVETV_decryptPlayerParams, 0)
                     printDBG(datau)
                     _data5 = re.findall('<iframe.*?src="(.*?)"',
                                         datau.replace('\\', ''), re.S)
                     if _data5:
                         url_out = _data5[0]
                     else:
                         _data5 = re.findall('sources:(\[.*?])',
                                             datau.replace('\\', ''), re.S)
                         if _data5:
                             url_out = _data5[0]
                 else:
                     printDBG('a7=' + data)
                     _data4 = re.findall('"file".*?"(.*?)"', data, re.S)
                     if _data4:
                         printDBG('a9')
                         url_out = _data4[0]
                     else:
                         _data2 = re.findall('<meta.*?url=(.*?)"', data,
                                             re.S)
                         if _data2:
                             url_out = _data2[0]
     return url_out
    def getVideos(self, videoUrl):
        urlTab = []
        str_ = 'getsource.php?key='
        try:
            data = urllib.unquote(videoUrl)
            data = json_loads(data.strip())
            ciphertext = base64.b64decode(data['ct'])
            iv = unhexlify(data['iv'])
            salt = unhexlify(data['s'])
            b = "Fex-XFa_x3MjW4w"
            decrypted = cryptoJS_AES_decrypt(ciphertext, b, salt)
            cUrl = decrypted.replace('\\', '').replace('"', '')
            sts, data = self.getPage(cUrl, dict(self.defaultParams))
            if sts:
                cUrl = data.meta['url']
                if 'beeload.php' in cUrl:
                    sts, data = self.getPage(cUrl, dict(self.defaultParams))
                    if sts:
                        lst_dat2 = re.findall('eval(.*?)</script>', data, re.S)
                        if lst_dat2:
                            packed = 'eval' + lst_dat2[0].strip()
                            printDBG('ppppppp#' + packed + '#')
                            try:
                                data = unpackJSPlayerParams(
                                    packed, VIDUPME_decryptPlayerParams, 1)
                                printDBG(data)
                            except:
                                printDBG('erreur')
                            lst_dat2 = re.findall("='(.*?)'", data, re.S)
                            if lst_dat2:
                                urlTab.append((lst_dat2[0], '0'))

                elif 'wp-embed.php?url=' in cUrl:
                    #cUrl = cUrl.replace('wp-embed.php?url=','getsource.php?key=')
                    cUrl = cUrl.replace('wp-embed.php?url=', str_)

                    sts, data = self.getPage(cUrl, dict(self.defaultParams))
                    if sts:
                        lst_dat2 = re.findall(
                            'file".*?"(.*?)".*?label".*?"(.*?)"', data, re.S)
                        for (url, label) in lst_dat2:
                            urlTab.append((label + '|' + url, '4'))

                else:
                    urlTab.append((cUrl, '1'))
        except:
            urlTab = []
        return urlTab
Exemple #7
0
	def get_links(self,cItem):
		urlTab = []	
		URL=cItem['url']
		sts, data = self.getPage(URL,self.defaultParams)
		if sts:
			Tab_els = re.findall('src="(https://www.youtube.*?)"', data, re.S)
			if Tab_els:
				urlTab.append({'name':'TRAILER', 'url':Tab_els[0], 'need_resolve':1})
			Tab_els = re.findall('play-box-iframe.*?data-src="(.*?)".*?></iframe>', data, re.S)
			for url in Tab_els:
				try:
					if '//moviflex.net' in url:
						sts, data = self.getPage(url,self.defaultParams)
						url_els = re.findall('<source src="(.*?)"', data, re.S)
						if url_els:
							urlTab.append({'name':'Moviflex', 'url':url_els[0], 'need_resolve':0,'type':'local'})
					elif 'moviflex.ml' in url:
						post_data = {'r':'','d':'moviflex.ml'}
						url=url.replace('/v/','/api/source/')
						sts, data = self.getPage(url,self.defaultParams, post_data)
						data = json_loads(data)
						elmdata = data['data']
						for elm0 in elmdata:
							urlTab.append({'name':'|'+elm0['label']+'| Moviflex' , 'url':elm0['file'], 'need_resolve':0,'type':'local'})				
					elif '.moviflex.pw' in url:
						paramsUrl = dict(self.defaultParams1)
						paramsUrl['header']['Referer'] = URL
						sts, data = self.getPage(url,paramsUrl)
						url_els = re.findall('JuicyCodes.Run\((.*?)\)', data, re.S)
						if url_els:
							b64data=url_els[0]	
							b64data=b64data.replace('"+"','')	.replace('"','')	
							script_data=base64.b64decode(b64data)
							script_ = unpackJSPlayerParams(script_data, SAWLIVETV_decryptPlayerParams, 0)
							url_els = re.findall('file":"(.*?)".*?label":"(.*?)"', script_, re.S)
							for (url_,titre_) in url_els:	
								urlTab.append({'name':'|'+titre_+'| Moviflex' , 'url':strwithmeta(url_, {'Referer':url}), 'need_resolve':0,'type':'local'})				
					else:	
						if len(url)>4:
							url11 = url.split('https://')
							url='https://' + url11[-1]
							urlTab.append({'name':gethostname(url), 'url':url, 'need_resolve':1})
				except:
					a=''						
		return urlTab
Exemple #8
0
    def getAesPassword(self, cItem, forceRefresh=False):
        if Sport365LiveApi.CACHE_AES_PASSWORD != '' and not forceRefresh:
            return Sport365LiveApi.CACHE_AES_PASSWORD

        sts, data = self.getPage(
            self.getFullUrl('en/home/' + cItem['event_id']), self.http_params)
        if not sts: return []

        aes = ''
        data = re.compile(
            '''src=['"](http[^"^']*?/js/[0-9a-fA-F]{32}\.js[^'^"]*?)["']'''
        ).findall(data)[::-1]
        num = 0
        deObfuscatedData = ''
        aes_password = []

        for commonUrl in data:
            num += 1
            printDBG("common url n. %s : %s " % (str(num), commonUrl))

            sts, tmpData = self.getPage(commonUrl, self.http_params)
            if not sts:
                continue
            aes = ''
            try:
                while ('eval' in tmpData) and (not aes):
                    tmp = tmpData.split('eval(')
                    if len(tmp): del tmp[0]
                    tmpData = ''
                    for item in tmp:
                        for decFun in [
                                VIDEOWEED_decryptPlayerParams,
                                VIDEOWEED_decryptPlayerParams2,
                                SAWLIVETV_decryptPlayerParams
                        ]:
                            if not (item.startswith('function(w,i,s,e){for')
                                    and decFun
                                    == VIDEOWEED_decryptPlayerParams):
                                tmpData = unpackJSPlayerParams(
                                    'eval(' + item, decFun, 0)
                                if '' != tmpData:
                                    printDBG(
                                        '**********************************')
                                    printDBG(tmpData)
                                    printDBG(
                                        '**********************************')
                                    break

                        aes = self.cm.ph.getSearchGroups(
                            tmpData, 'aes_key="([^"]+?)"')[0]
                        if '' == aes:
                            aes = self.cm.ph.getSearchGroups(
                                tmpData, 'aes\(\)\{return "([^"]+?)"')[0]

                        if aes == '':
                            funname = self.cm.ph.getSearchGroups(
                                tmpData,
                                'CryptoJS\.AES\.decrypt\([^\,]+?\,([^\,]+?)\,'
                            )[0].strip()
                            if funname != '':
                                printDBG("ZZZZZZZZZZZZZ")
                                printDBG("FUN NAME: [%s]" % funname)
                                printDBG("ZZZZZZZZZZZZZ")
                                tmp = self.cm.ph.getDataBeetwenMarkers(
                                    tmpData, 'function %s' % funname, '}')[1]
                                try:
                                    aes = self.cm.ph.getSearchGroups(
                                        tmp, '"([^"]+?)"')[0].encode('utf-8')
                                except Exception:
                                    printExc()

                aes = aes.encode('utf-8')
            except Exception:
                printExc()
                aes = ''

            if aes:
                printDBG("Added password %s" % aes)
                aes_password.append(aes)

        if aes_password:
            Sport365LiveApi.CACHE_AES_PASSWORD = aes_password
        return aes_password
    def _decodeData(self, baseData):
        data = baseData
        fullDecData = ''
        decData = ''
        for idx in range(3):
            if 'eval(' not in data:
                break
            tmpTab = self.cm.ph.getAllItemsBeetwenMarkers(
                data, "eval(", '</script>')
            for tmpData in tmpTab:
                tmp = tmpData.split('eval(')
                if len(tmp): del tmp[0]
                for tmpItem in tmp:
                    tmpDec = ''
                    for decFun in [
                            VIDEOMEGA_decryptPlayerParams,
                            SAWLIVETV_decryptPlayerParams
                    ]:
                        tmpDec = unpackJSPlayerParams('eval(' + tmpItem,
                                                      decFun, 0)
                        if '' != tmpDec:
                            break
                    decData += tmpDec
            fullDecData += decData
            data = decData

        # ++++++++++++++++++++
        codeData = 'def go123():\n'
        tmp = self.cm.ph.getSearchGroups(
            baseData, '''document\[([^\]]+?)\[[0-9]\]\]\(([^)]+?)\)''', 2)
        mainVar = tmp[0]
        mainVal = self.cm.ph.getSearchGroups(
            baseData, '''var\s+?%s\s*=\s*(\[[^\]]+?\])''' % mainVar)[0]
        mainVal = mainVal.replace('"', '\\"').replace('[\\', '[').replace(
            '\\"]', '"]').replace(',\\"', ',"').replace('\\",', '",')

        subTab = re.compile('''\+([^\+]+?)\+''').findall(tmp[1])
        for item in subTab:
            var = item.strip()
            val = self.cm.ph.getSearchGroups(
                fullDecData, '''var\s*%s\s*=\s*(['"][^'^"]+?['"])''' % var)[0]
            codeData += '\t%s = %s\n' % (var, val)
        codeData += '\t%s = %s\n' % (mainVar, mainVal)
        codeData += '\treturn ' + tmp[1]
        codeData += '\nkoteczek = go123()'
        codeData = self._unpackJS(codeData, 'koteczek')
        # ++++++++++++++++++++

        if codeData != '':
            return codeData

        subTab = re.compile('''(['"]\s*\+[^\+]+?\+\s*['"])''').findall(
            fullDecData)
        for item in subTab:
            var = self.cm.ph.getSearchGroups(item,
                                             '''\+([^\+]+?)\+''')[0].strip()
            val = self.cm.ph.getSearchGroups(
                fullDecData, '''var\s*%s\s*=\s*['"]([^'^"]+?)['"]''' % var)[0]
            fullDecData = fullDecData.replace(item, val)
        fullData = baseData + fullDecData
        fullData = fullData.replace('\\"', '"').replace('\\/', '/')
        return fullData
Exemple #10
0
 def getVideoLinks(self, videoUrl):
     printDBG("SKStream.getVideoLinks [%s]" % videoUrl)
     urlTab = []
     
     # mark requested link as used one
     if len(self.cacheLinks.keys()):
         for key in self.cacheLinks:
             for idx in range(len(self.cacheLinks[key])):
                 if videoUrl in self.cacheLinks[key][idx]['url']:
                     if not self.cacheLinks[key][idx]['name'].startswith('*'):
                         self.cacheLinks[key][idx]['name'] = '*' + self.cacheLinks[key][idx]['name']
                     break
                     
     linksTab = videoUrl.split('|><|')
     for url in linksTab:
         printDBG("> url[%s]" % url)
         if not self.cm.isValidUrl(url):
             continue
         
         if 1 != self.up.checkHostSupport(url):
             params = dict(self.defaultParams)
             try:
                 maxAttempt = 3
                 attempt = 0
                 params['header'] = dict(params['header'])
                 params['header']['Referer'] = videoUrl.meta['Referer']
                 params['return_data'] = False
                 post_data = None
                 while attempt < maxAttempt:
                     attempt += 1
                     sts, response = self.getPage(url, params, post_data)
                     url = response.geturl()
                     if 'dl-protect.co' in self.up.getDomain(url):
                         data = response.read(1024*1024*1024)
                         response.close()
                         
                         # get JS player script code from confirmation page
                         sts, tmpData = CParsingHelper.getDataBeetwenMarkers(data, ">eval(", '</script>', False)
                         if sts: data += unpackJSPlayerParams(tmpData, VIDEOMEGA_decryptPlayerParams, 0, r2=True) #YOUWATCH_decryptPlayerParams == VIDUPME_decryptPlayerParams
                         
                         printDBG(data)
                         url = self.getFullUrl(self.cm.ph.getSearchGroups(data, '''<iframe[^>]+?src=['"]([^"^']+?)['"]''', 1, True)[0])
                         if url == '': url = self.getFullUrl(self.cm.ph.getSearchGroups(data, '''iframe.src\s*=\s*['"]([^"^']+?)['"]''', 1, True)[0])
                         if not self.cm.isValidUrl(url):
                             data = self.cm.ph.getDataBeetwenMarkers(data, 'sources:', '],', False)[1] + ']'
                             data = byteify(json.loads(data))
                             for item in data:
                                 if "mp4" == item['type']:
                                     urlTab.append({'name':str(item.get('label', 'default')), 'url':item['file']})
                         break
                     else:
                         if 1 != self.up.checkHostSupport(url):
                             data = response.read(1024*1024*1024)
                             response.close()
                             
                             scriptUrl = self.cm.ph.getSearchGroups(data, '''<script[^>]+?src=['"]([^"^']*?QapTcha.jquery[^"^']*?\.js)['"]''', 1, True)[0]
                             if scriptUrl != '' and not self.cm.isValidUrl(scriptUrl):
                                 scriptUrl = self.getFullUrl('/dl/' + scriptUrl)
                             if not self.cm.isValidUrl(scriptUrl):
                                 printDBG(">> scriptUrl not valid")
                                 break
                             
                             sts, data = self.getPage(scriptUrl)
                             if not sts:
                                 break
                             
                             formUrl = self.cm.ph.getSearchGroups(data, '''['"]([^"^']*?QapTcha.jquery[^"^']*?\.php)['"]''', 1, True)[0]
                             if formUrl != '' and not self.cm.isValidUrl(formUrl):
                                 formUrl = self.getFullUrl('/dl/' + formUrl)
                             if not self.cm.isValidUrl(formUrl):
                                 printDBG(">> formUrl not valid")
                                 break
                             
                             qaptchaKey = self._generatePass(37)
                             post_data2 = {'action':'qaptcha', 'qaptcha_key':qaptchaKey}
                             params2 = dict(self.defaultParams)
                             params2['header'] = dict(self.AJAX_HEADER)
                             params2['header']['Referer'] = url
                             sts, data = self.getPage(formUrl, params2, post_data2)
                             if not sts:
                                 break
                             printDBG(">>>>>>\n%s\n<<<<<<" % data)
                             
                             post_data2 = {'submit':'Valider', qaptchaKey:''}
                             sts, data = self.getPage(url, params2, post_data2)
                             if not sts:
                                 break
                             printDBG(">>>>>>\n%s\n<<<<<<" % data)
                             
                             url = self.cm.ph.getSearchGroups(data, '''['"](https?://[^"^"]*?dl\-protect\.co[^'^"]+?)['"]''', 1, True)[0]
                             if self.cm.isValidUrl(url):
                                 continue
                             break
                         else:
                             response.close()
                             break                            
             except Exception:
                 printExc()
                 continue
         
         if len(urlTab):
             break
         
         urlTab = self.up.getVideoLinkExt(url)
         if len(urlTab):
             break
         
     return urlTab
Exemple #11
0
    def getAesPassword(self, cItem, forceRefresh=False):
        if Sport365LiveApi.CACHE_AES_PASSWORD != '' and not forceRefresh:
            return Sport365LiveApi.CACHE_AES_PASSWORD

        sts, data = self.cm.getPage(
            self.getFullUrl('en/home/' + cItem['event_id']), self.http_params)
        if not sts: return []

        aes = ''
        data = re.compile(
            '''src=['"](http[^"^']*?/js/[0-9a-fA-F]{32}\.js[^'^"]*?)["']'''
        ).findall(data)
        deObfuscatedData = ''
        for commonUrl in data:
            sts, tmpData = self.cm.getPage(commonUrl, self.http_params)
            if not sts: return []
            aes = ''
            try:
                while 'eval' in tmpData:
                    tmp = tmpData.split('eval(')
                    if len(tmp): del tmp[0]
                    tmpData = ''
                    for item in tmp:
                        for decFun in [
                                VIDEOWEED_decryptPlayerParams,
                                VIDEOWEED_decryptPlayerParams2,
                                SAWLIVETV_decryptPlayerParams
                        ]:
                            tmpData = unpackJSPlayerParams(
                                'eval(' + item, decFun, 0)
                            if '' != tmpData:
                                break
                        deObfuscatedData += tmpData
                        aes = self.cm.ph.getSearchGroups(
                            tmpData, 'aes_key="([^"]+?)"')[0]
                        if '' == aes:
                            aes = self.cm.ph.getSearchGroups(
                                tmpData, 'aes\(\)\{return "([^"]+?)"')[0]
                        if aes != '':
                            break
                aes = aes.encode('utf-8')
            except Exception:
                printExc()
                aes = ''
            if aes != '':
                break

        if aes == '':
            funname = self.cm.ph.getSearchGroups(
                deObfuscatedData,
                'CryptoJS\.AES\.decrypt\([^\,]+?\,([^\,]+?)\,')[0].strip()
            printDBG("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ")
            printDBG("FUN NAME: [%s]" % funname)
            printDBG("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ")
            tmp = self.cm.ph.getDataBeetwenMarkers(deObfuscatedData,
                                                   'function %s' % funname,
                                                   '}')[1]
            try:
                aes = self.cm.ph.getSearchGroups(
                    tmp, '"([^"]+?)"')[0].encode('utf-8')
            except Exception:
                printExc()
            #aes = self.cm.ph.getSearchGroups(deObfuscatedData, '%s\s*\{\s*return\s*"([^"]+?)"' % funname)[0]

        if aes != '':
            Sport365LiveApi.CACHE_AES_PASSWORD = aes
        return aes