예제 #1
0
    def __resolve(self, result):
        try:
            result = client.parseDOM(result, 'div', attrs={'id': 'player'})[0]

            try:
                url = client.parseDOM(result, 'iframe', ret='src')[0]
            except:
                pass
            try:
                url = base64.b64decode(
                    re.compile('decode\("(.+?)"').findall(result)[0])
            except:
                pass

            if 'proxy.link=tunemovie' in url:
                url = re.compile('proxy[.]link=tunemovie[*]([^&]+)').findall(
                    url)[-1]

                key = base64.b64decode('Q05WTmhPSjlXM1BmeFd0UEtiOGg=')
                decrypter = pyaes.Decrypter(
                    pyaes.AESModeOfOperationECB(key + (24 - len(key)) * '\0'))
                url = url.decode('hex')
                url = decrypter.feed(url) + decrypter.feed()

            url = resolvers.request(url)
            return url
        except:
            return
예제 #2
0
 def __decrypt(self, key, txt):
     try:
         decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationECB(key))
         txt = decrypter.feed(txt) + decrypter.feed()
         return txt
     except:
         return
예제 #3
0
 def __decrypt(self, key, txt):
     try:
         key = base64.b64decode(key)
         decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationECB(key))
         txt = base64.decodestring(txt)
         txt = decrypter.feed(txt) + decrypter.feed()
         return txt
     except:
         return
예제 #4
0
 def _gkdecrypt(self, key, str):
     try:
         key += (24 - len(key)) * '\0'
         decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationECB(key))
         str = decrypter.feed(str.decode('hex')) + decrypter.feed()
         str = str.split('\0', 1)[0]
         return str
     except:
         return
예제 #5
0
 def _decrypt(self, url):
     import base64
     decrypter = pyaes.Decrypter(
         pyaes.AESModeOfOperationCBC(
             base64.urlsafe_b64decode(
                 'cXdlcnR5dWlvcGFzZGZnaGprbHp4YzEyMzQ1Njc4OTA='),
             '\0' * 16))
     url = base64.decodestring(url)
     url = decrypter.feed(url) + decrypter.feed()
     return url
예제 #6
0
def evp_decode(cipher_text, passphrase, salt=None):
    cipher_text = base64.b64decode(cipher_text)
    if not salt:
        salt = cipher_text[8:16]
        cipher_text = cipher_text[16:]
    data = evpKDF(passphrase, salt)
    decrypter = pyaes.Decrypter(
        pyaes.AESModeOfOperationCBC(data['key'], data['iv']))
    plain_text = decrypter.feed(cipher_text)
    plain_text += decrypter.feed()
    return plain_text
예제 #7
0
    def get_sources(self, url, hosthdDict, hostDict, locDict):
        try:
            sources = []

            if url == None: return sources

            url = urlparse.urljoin(self.base_link, url)

            result = client.source(url)
            u = client.parseDOM(result,
                                'meta',
                                ret='content',
                                attrs={'property': 'og:url'})[0]
            links = re.compile(
                '<a href="([?]link_id=.+?)".+?>(.+?)</a>').findall(result)
            links = [u + i[0] for i in links if 'server' in i[1].lower()]

            for u in links[:3]:
                try:
                    result = client.source(u)

                    url = client.parseDOM(result,
                                          'source',
                                          ret='src',
                                          attrs={'type': 'video/.+?'})
                    if len(url) > 0:
                        i = googleplus.tag(url[0])[0]
                        sources.append({
                            'source': 'GVideo',
                            'quality': i['quality'],
                            'provider': 'Clickplay',
                            'url': i['url']
                        })

                    url = re.compile(
                        'proxy[.]link=clickplay[*](.+?)"').findall(result)[-1]

                    key = base64.b64decode('bW5pcUpUcUJVOFozS1FVZWpTb00=')
                    decrypter = pyaes.Decrypter(
                        pyaes.AESModeOfOperationECB(key +
                                                    (24 - len(key)) * '\0'))
                    url = url.decode('hex')
                    url = decrypter.feed(url) + decrypter.feed()

                    if 'google' in url: source = 'GVideo'
                    elif 'vk.com' in url: source = 'VK'
                    else: raise Exception()

                    url = resolvers.request(url)
                    for i in url:
                        sources.append({
                            'source': source,
                            'quality': i['quality'],
                            'provider': 'Clickplay',
                            'url': i['url']
                        })
                except:
                    pass

            return sources
        except:
            return sources
예제 #8
0
    def get_sources(self, url, hosthdDict, hostDict, locDict):
        try:
            sources = []

            if url == None: return sources

            content = re.compile('(.+?)\sS\d*E\d*$').findall(url)

            if len(content) == 0:
                query = urlparse.urljoin(self.base_link,
                                         self.detail_link % url)

                result = client.source(query)
                result = json.loads(result)
                result = result['data']['chapters'][0]['id']
            else:
                url, s, e = re.compile('(.+?)\sS(\d*)E(\d*)$').findall(url)[0]
                ep = 'S%02dE%03d' % (int(s), int(e))

                query = urlparse.urljoin(self.base_link,
                                         self.detail_link % url)

                result = client.source(query)
                result = json.loads(result)
                result = result['data']['chapters']
                result = [
                    i['id'] for i in result
                    if ep in i['title'].encode('utf-8').upper()
                ][0]

            url = urlparse.urljoin(self.base_link, self.stream_link % result)
            result = client.source(url)
            result = json.loads(result)['data']

            for i in result:
                try:
                    if not i['server'] == 'ggvideo': raise Exception()

                    quality = i['quality'].replace('720p', 'HD')
                    if not quality in ['1080p', 'HD']: quality = 'SD'

                    key = base64.b64decode(
                        'cXdlcnR5dWlvcGFzZGZnaGprbHp4YzEyMzQ1Njc4OTA=')
                    decrypter = pyaes.Decrypter(
                        pyaes.AESModeOfOperationCBC(key, '\0' * 16))
                    url = base64.decodestring(i['stream'])
                    url = decrypter.feed(url) + decrypter.feed()

                    if not url.startswith('http'): raise Exception()

                    sources.append({
                        'source': 'GVideo',
                        'quality': quality,
                        'provider': 'PlayBox',
                        'url': url
                    })
                except:
                    pass

            return sources
        except:
            return sources