def benchmark(): # 128-bit key key = 'a1f6258c877d5fcd8964484538bfc92c'.decode('hex') iv = 'ed62e16363638360fdd6ad62112794f0'.decode('hex') aes = pyaes.new(key, pyaes.MODE_CBC, iv) ciphertext = aes.encrypt(cleartext) # need to reset IV for decryption aes = pyaes.new(key, pyaes.MODE_CBC, iv) plaintext = aes.decrypt(ciphertext) assert plaintext == cleartext
def play(listitem, item): played = False print 'i n pl;ay' try: try: print 'enc Item', item url = item["msg"]["channel"]["http_stream"] print 'encurl', url if not url.startswith('http'): import pyaes key = "ZGlmajM4OXJqZjgzZmY5MA==".decode("base64") iv = "Z3IwNGpoc2Y0Nzg5MCQ5Mw==".decode("base64") print 'trying to decode' decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) url = decryptor.decrypt(url.decode("hex")).split('\0')[0] print repr(url) if '|' in url: # and 1==2: url = url #.split('|')[0]+"|User-Agent=UKTVNOW_PLAYER_1.2&Referer=www.uktvnow.net" elif url.startswith('http'): url = url.split('|')[0] + "|User-Agent=%s" % getUserAgent() if url.startswith('rtmp'): url += ' timeout=10' print 'first', url played = tryplay(url, listitem) except: print 'err in play' traceback.print_exc(file=sys.stdout) if played: return True #print "playing stream name: " + str(name) #xbmc.Player( ).play( urlToPlay, listitem) url = item["msg"]["channel"]["rtmp_stream"] import pyaes key = "ZGlmajM4OXJqZjgzZmY5MA==".decode("base64") iv = "Z3IwNGpoc2Y0Nzg5MCQ5Mw==".decode("base64") decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) url = decryptor.decrypt(url.decode("hex")).split('\0')[0] print repr(url) url = url.replace(' ', '') if '|' not in url and url.startswith('http'): url = url + "|User-Agent=%s" % getUserAgent() if url.startswith('rtmp'): url += ' timeout=10' if not played: played = tryplay(url, listitem) except: pass return played
def play(listitem, item): played=False print 'i n pl;ay' try: try: print 'enc Item',item url=item["msg"]["channel"]["http_stream"] print 'encurl',url if not url.startswith('http'): import pyaes key="ZGlmajM4OXJqZjgzZmY5MA==".decode("base64") iv="Z3IwNGpoc2Y0Nzg5MCQ5Mw==".decode("base64") print 'trying to decode' decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) url= decryptor.decrypt(url.decode("hex")).split('\0')[0] print repr(url) if '|' in url:# and 1==2: url=url#.split('|')[0]+"|User-Agent=UKTVNOW_PLAYER_1.2&Referer=www.uktvnow.net" elif url.startswith('http') : url=url.split('|')[0]+"|User-Agent=%s"%getUserAgent() if url.startswith('rtmp'): url+=' timeout=10' print 'first',url played=tryplay(url,listitem) except: print 'err in play' traceback.print_exc(file=sys.stdout) if played: return True #print "playing stream name: " + str(name) #xbmc.Player( ).play( urlToPlay, listitem) url=item["msg"]["channel"]["rtmp_stream"] import pyaes key="ZGlmajM4OXJqZjgzZmY5MA==".decode("base64") iv="Z3IwNGpoc2Y0Nzg5MCQ5Mw==".decode("base64") decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) url= decryptor.decrypt(url.decode("hex")).split('\0')[0] print repr(url) url=url.replace(' ','') if '|' not in url and url.startswith('http'): url=url+"|User-Agent=%s"%getUserAgent() if url.startswith('rtmp'): url+=' timeout=10' if not played: played=tryplay(url,listitem) except: pass return played
def decrypt(val,key): f= decode(val); c=f[8:16] k=func_u(key); a,o= func_h(k, c) # print 'aaaaaaaaaaaaaaaaa is ',a # print 'oooooooooooooooo is ',o #print c f=f[16:] key=a iv=o # print len(key) key2="" for k in range(0,len(key)): key2+=chr(key[k]) iv2="" for k in range(0,len(iv)): iv2+=chr(iv[k]) f2="" for k in range(0,len(f)): f2+=chr(f[k]) import pyaes decryptor = pyaes.new(key2, pyaes.MODE_CBC, IV=iv2) return decryptor.decrypt(f).replace('\x00', '')
def encode(plaintext,passphrase,saltsize=8): salt= os.urandom(saltsize) data = evpKDF(passphrase,salt) decryptor = pyaes.new(data['key'], pyaes.MODE_CBC, IV=data['iv']) plaintext = PKCS7Encoder().encode(plaintext) enctext= decryptor.encrypt(plaintext) return base64.b64encode("Salted__"+salt+enctext)
def benchmark(key, mode, runs, func, text): # IV is ignored for ECB mode aes = pyaes.new(key, mode, IV=iv) f = getattr(aes, func) for i in xrange(runs): f(text)
def decrypt(val, key): f = decode(val) c = f[8:16] k = func_u(key) a, o = func_h(k, c) # print 'aaaaaaaaaaaaaaaaa is ',a # print 'oooooooooooooooo is ',o #print c f = f[16:] key = a iv = o # print len(key) key2 = "" for k in range(0, len(key)): key2 += chr(key[k]) iv2 = "" for k in range(0, len(iv)): iv2 += chr(iv[k]) f2 = "" for k in range(0, len(f)): f2 += chr(f[k]) import pyaes decryptor = pyaes.new(key2, pyaes.MODE_CBC, IV=iv2) return decryptor.decrypt(f).replace('\x00', '')
def _aes_decrypt(self, key, iv, text): if usepycrpto: return AES.new(key, AES.MODE_CBC, iv).decrypt(text) else: import pyaes decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) ds1 = decryptor.decrypt(text)#.replace('\x00', '') return ds1
def _aes_decrypt(self, key, iv, text): if usepycrpto: return AES.new(key, AES.MODE_CBC, iv).decrypt(text) else: import pyaes decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) ds1 = decryptor.decrypt(text) #.replace('\x00', '') return ds1
def getSoup(url,data=None): global viewmode,tsdownloader, hlsretry tsdownloader=False hlsretry=False if url.startswith('http://') or url.startswith('https://'): enckey=False if '$$TSDOWNLOADER$$' in url: tsdownloader=True url=url.replace("$$TSDOWNLOADER$$","") if '$$HLSRETRY$$' in url: hlsretry=True url=url.replace("$$HLSRETRY$$","") if '$$LSProEncKey=' in url: enckey=url.split('$$LSProEncKey=')[1].split('$$')[0] rp='$$LSProEncKey=%s$$'%enckey url=url.replace(rp,"") data =makeRequest(url) if enckey: import pyaes enckey=enckey.encode("ascii") print enckey missingbytes=16-len(enckey) enckey=enckey+(chr(0)*(missingbytes)) print repr(enckey) data=base64.b64decode(data) decryptor = pyaes.new(enckey , pyaes.MODE_ECB, IV=None) data=decryptor.decrypt(data).split('\0')[0] #print repr(data) if re.search("#EXTM3U",data) or 'm3u' in url: # print 'found m3u data' return data elif data == None: if not '/' in url or not '\\' in url: # print 'No directory found. Lets make the url to cache dir' url = os.path.join(communityfiles,url) if xbmcvfs.exists(url): if url.startswith("smb://") or url.startswith("nfs://"): copy = xbmcvfs.copy(url, os.path.join(profile, 'temp', 'sorce_temp.txt')) if copy: data = open(os.path.join(profile, 'temp', 'sorce_temp.txt'), "r").read() xbmcvfs.delete(os.path.join(profile, 'temp', 'sorce_temp.txt')) else: addon_log("failed to copy from smb:") else: data = open(url, 'r').read() if re.match("#EXTM3U",data)or 'm3u' in url: # print 'found m3u data' return data else: addon_log("Soup Data not found!") return if '<SetViewMode>' in data: try: viewmode=re.findall('<SetViewMode>(.*?)<',data)[0] xbmc.executebuiltin("Container.SetViewMode(%s)"%viewmode) print 'done setview',viewmode except: pass return BeautifulSOAP(data, convertEntities=BeautifulStoneSoup.XML_ENTITIES)
def decode(ciphertext,passphrase,salt=None): ciphertext=base64.b64decode(ciphertext) if not salt: salt=ciphertext[8:16] ciphertext=ciphertext[16:] data = evpKDF(passphrase, salt) decryptor = pyaes.new(data['key'], pyaes.MODE_CBC, IV=data['iv']) d= decryptor.decrypt(ciphertext) return PKCS7Encoder().decode(d)
def getMediaDecryptedPathString(strToDecrypt,type): ds1 = "" if type == "LIVE": decryptor = pyaes.new(DECRYPTION_KEY_LIVE1, pyaes.MODE_ECB, IV='') ds1 = decryptor.decrypt(strToDecrypt.decode("hex")).replace('\x00', '') if ds1[:4] == "rtmp": return ds1 else: decryptor = pyaes.new(DECRYPTION_KEY_LIVE2, pyaes.MODE_ECB, IV='') ds1 = decryptor.decrypt(strToDecrypt.decode("hex")).replace('\x00', '') if ds1[:4] == "rtmp": return ds1 if type == "VIDEO": decryptor = pyaes.new(DECRYPTION_KEY1, pyaes.MODE_ECB, IV='') ds1 = decryptor.decrypt(strToDecrypt.decode("hex")).replace('\x00', '') if ds1[:4] == "rtmp": return ds1 else: decryptor = pyaes.new(DECRYPTION_KEY2, pyaes.MODE_ECB, IV='') ds1 = decryptor.decrypt(strToDecrypt.decode("hex")).replace('\x00', '') if ds1[:4] == "rtmp": return ds1 return ds1
def GetLSProData(key, iv, data): import binascii key = base64.b64decode(key) iv = binascii.unhexlify(iv) data = base64.b64decode(data) decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) val1 = decryptor.decrypt(data) val2 = repr(val1).partition("\\") retval = val2[0].replace("'", "") return retval
def do_test(self): aes = pyaes.new(self.key, self.mode, self.iv) if self.function == 'encrypt': ciphertext = aes.encrypt(self.plaintext) assert self.ciphertext == ciphertext else: assert self.function == 'decrypt' plaintext = aes.decrypt(self.ciphertext) assert self.plaintext == plaintext self.cnt_ok += 1
def RijndaelManaged_encrypt(plan_text , key, iv ='\0'*16): if len(key)<32: key=key+chr(0)*(32-len(key)) from pkcs7 import PKCS7Encoder encoder = PKCS7Encoder() plan_text=encoder.encode(plan_text) import pyaes decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) ds1 = decryptor.encrypt(plan_text) return base64.b64encode(ds1)
def RijndaelManaged_encrypt(plan_text, key, iv=r'\0' * 16): if len(key) < 32: key = key + chr(0) * (32 - len(key)) from pkcs7 import PKCS7Encoder encoder = PKCS7Encoder() plan_text = encoder.encode(plan_text) import pyaes decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) ds1 = decryptor.encrypt(plan_text) return base64.b64encode(ds1)
def decrypt(password, ciphertext, msgdgst='md5'): ''' Decrypt the ciphertext using the password using an openssl compatible decryption algorithm. It is the same as creating a file with ciphertext contents and running openssl like this: $ cat ciphertext # ENCRYPTED <ciphertext> $ egrep -v '^#|^$' | \\ openssl enc -d -aes-256-cbc -base64 -salt -pass pass:<password> -in ciphertext @param password The password. @param ciphertext The ciphertext to decrypt. @param msgdgst The message digest algorithm. @returns the decrypted data. ''' # unfilter -- ignore blank lines and comments filtered = '' for line in ciphertext.split('\n'): line = line.strip() if re.search('^\s*$', line) or re.search('^\s*#', line): continue filtered += line + '\n' # Base64 decode raw = base64.b64decode(filtered) assert (raw[:8] == 'Salted__') salt = raw[8:16] # get the salt # Now create the key and iv. key, iv = get_key_and_iv(password, salt, msgdgst=msgdgst) if key is None: return None # The original ciphertext ciphertext = raw[16:] # Decrypt cipher = MAGIC_AES.new(key, MAGIC_AES.MODE_CBC, iv) padded_plaintext = cipher.decrypt(ciphertext) padding_len = ord(padded_plaintext[-1]) plaintext = padded_plaintext[:-padding_len] return plaintext
def encrypt(password, plaintext, chunkit=True, msgdgst='md5'): ''' Encrypt the plaintext using the password using an openssl compatible encryption algorithm. It is the same as creating a file with plaintext contents and running openssl like this: $ cat plaintext <plaintext> $ openssl enc -e -aes-256-cbc -base64 -salt \\ -pass pass:<password> -n plaintext @param password The password. @param plaintext The plaintext to encrypt. @param chunkit Flag that tells encrypt to split the ciphertext into 64 character (MIME encoded) lines. This does not affect the decrypt operation. @param msgdgst The message digest algorithm. ''' salt = os.urandom(8) key, iv = get_key_and_iv(password, salt, msgdgst=msgdgst) if key is None: return None # PKCS#7 padding padding_len = 16 - (len(plaintext) % 16) padded_plaintext = plaintext + (chr(padding_len) * padding_len) # Encrypt cipher = MAGIC_AES.new(key, MAGIC_AES.MODE_CBC, iv) ciphertext = cipher.encrypt(padded_plaintext) # Make openssl compatible. # I first discovered this when I wrote the C++ Cipher class. # CITATION: http://projects.joelinoff.com/cipher-1.1/doxydocs/html/ openssl_ciphertext = 'Salted__' + salt + ciphertext b64 = base64.b64encode(openssl_ciphertext) if not chunkit: return b64 LINELEN = 64 chunk = lambda s: '\n'.join(s[i:min(i + LINELEN, len(s))] for i in xrange(0, len(s), LINELEN)) return chunk(b64)
def get365Key(cookieJar, url=None, useproxy=True): headers = [('User-Agent', useragent)] import time if not url: mainhtml = getUrl("http://www.sport365.live/en/main", headers=headers, cookieJar=cookieJar) #print 'mainhtml',mainhtml try: kurl = re.findall("src=\"(http.*?/advertisement.js.*?)\"", mainhtml)[0] except: kurl = 'http://s1.medianetworkinternational.com/js/advertisement.js?' + str( int(time.time())) else: kurl = url import os khtml = getUrl(kurl, headers=headers, cookieJar=cookieJar) if khtml == "": if setProxy(): kkey = getUrl(kurl, headers=headers, cookieJar=cookieJar) kstr = re.compile('eval\(function\(w,i,s,e\).*}\((.*?)\)').findall( khtml)[0] kunc = get_unwise(kstr) #print kunc import pyaes reg = "ab5f9063d9ddd3200009cb49b10c2d63".decode("hex") keycaller = os.path.dirname(os.path.realpath(__file__)).split( '.video.')[-1].encode("hex") + "00000000000000000000000000000000" de = pyaes.new(keycaller[:32].decode("hex"), pyaes.MODE_ECB) kkey = re.findall(de.decrypt(reg).replace('\x00', '').split('\0')[0], kunc) #print kkey kkey = re.findall('aes\(\)\{return "(.*?)"', kunc) #print kkey return kkey[0]
def __init__(self, __addon__, __addonname__, __icon__, addon_id, selfAddon, profile_path, addonPath, addonversion): key = selfAddon.getSetting("url_key") cipher = AES.new(key, AES.MODE_ECB) self.post_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/b6BmZZqrhlL4SKcYirKTo2ASgtvWqodYWYeV/fYUG+fZg2Im9fqsVvGRsTKHcY6Pc=")).strip( " ") self.next_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2wsQCVFMpAUbOB+rHQzsBdUux7PwjhymHQMHFmWH8+T4=")).strip( " ") self.dts_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2gUhd9TxpnQppnZVAf7cv9nG7MNmOhZBiAocGtmWmCojQNzzg5WbretGM7yMoROvoeFdnCmkIyzLU1btJG5lmsUGKbZRy7yM2cNiQ/KpOgsU=")).strip( " ") self.dv_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2gUhd9TxpnQppnZVAf7cv9o7+b9n9b+/gYKA7dux/WrB0buguCiDP0xozH/7K+mdJadTc2OjShMarfC9ZCZu+t396LLmkzHQol0iJVKz4y6E=")).strip( " ") self.sc_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2gUhd9TxpnQppnZVAf7cv9uIn/fh/2pLiamYTTH2FXfnTf+epNapH/qM4oCYjVpg5EkKCfsgOLJDCTVhRAcqnChPgNMq3wmM5HtGGYBbXPlY=")).strip( " ") self.isl_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2gUhd9TxpnQppnZVAf7cv9uIn/fh/2pLiamYTTH2FXfnTf+epNapH/qM4oCYjVpg5EkKCfsgOLJDCTVhRAcqnCp4QUloS7+YNJ7fJI8LkirI=")).strip( " ") self.st_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/23N9Zk2e8ronI87UoNwKFn27yaRWS072GBmYitb5S9Ta1WhVHMG7aT3+wZn+ag7G4wCFlUvgDKSgUe0O2RZ5ECAuWa5cmfR7trgsPVOn+3v0=")).strip( " ") self.hm_url = cipher.decrypt(base64.b64decode( "gUhd9TxpnQppnZVAf7cv9oFIXfU8aZ0KaZ2VQH+3L/aBSF31PGmdCmmdlUB/ty/2CQd68kAxB14rfpsCAfmCIhTyLCCYq6Yomt0sY2USTc+F7X2pz6iwdyf0pDwigbeadoy6whtYBaL8op6Swshw3klxcH8ukbqp0vKJqlrudHI=")).strip( " ") self.__addon__ = __addon__ self.__addonname__ = __addonname__ self.__icon__ = __icon__ self.addon_id = addon_id self.selfAddon = selfAddon self.profile_path = profile_path self.addonPath = addonPath self.addonversion = addonversion self.icon = self.addonPath + "/resources/siasatpk/siasatpk.png"
import pyaes cod1 = pyaes.new('1' * 16, pyaes.MODE_ECB) strc = 'asdnlasbkdjabkdbasduaskjduiqci uyeique uqwcelk jasdc idasjdia' * 64 try: from Crypto.Cipher import AES cod2 = AES.new('1' * 16, AES.MODE_ECB) except: pass def test1(): cod1.encrypt(strc) def test2(): cod2.encrypt(strc) if __name__ == '__main__': from timeit import Timer t1 = Timer("test1()", "from __main__ import test1") print t1.repeat(3, 1000) t2 = Timer("test2()", "from __main__ import test2") print t2.repeat(3, 1000)
0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16, ) key= '21449030350486006488383082093598' ciphertext = "\xa2\xc5\xe7\xcc\xe4\xa9\xb6\x41\x0b\x77\x92\x54\x78\xdb\xed\xab\xe0\x1d\xac\x83\x2e\xe2\x6b\x43\x07\x1a\x61\xf2\x81\x0f\xfe\xc6\x6e\x36\xc5\x7b\xd6\x9c\xca\x05\x93\x76\x43\xa9\x08\x45\xa4\x8f\x88\xb9\x31\x7e\x22\x7f\x00\x00\x48\xb7\x31\x7e\x22\x7f\x00\x00" InvSbox = [None]*256 Sbox = [None]*256 Sbox[:] = OrgSbox pyaes.aes_sbox = array('B', Sbox) for i in range(256): InvSbox[Sbox[i]] = i pyaes.aes_inv_sbox = array('B', InvSbox) AES = pyaes.new(key, pyaes.MODE_ECB, IV=0) for (a,b,c) in combinations(range(256), 3): for rot in range (0,2): (Sbox[a], Sbox[b], Sbox[c]) = (Sbox[b], Sbox[c], Sbox[a]) pyaes.aes_sbox = array('B', Sbox) for i in range(256): InvSbox[Sbox[i]] = i pyaes.aes_inv_sbox = array('B', InvSbox) # PATCH THE LIB TO CALL EXPAND_KEY FOR EACH DECRYPTION msg = AES.decrypt(ciphertext) if msg[0:3]=="h4c": # found it! 52 53 104 h4ck1t{50M30N3_KN0VV5_cRyPto_N0T_34D} print "found it! ", a,b,c, msg
def magicness(url): magic="1579547dfghuh,difj389rjf83ff90,45h4jggf5f6g,f5fg65jj46,gr04jhsf47890$93".split(',') decryptor = pyaes.new(magic[1], pyaes.MODE_CBC, IV=magic[4]) url= decryptor.decrypt(url.decode("hex")).split('\0')[0] return url
def play(listitem, item): played = False print 'i n pl;ay' pDialog = xbmcgui.DialogProgress() ret = pDialog.create('Zem', 'Trying to get the ticket') pDialog.update(30, 'reading the page') import time try: try: print 'enc Item', item url = item["msg"]["channel"]["http_stream"] if not url.startswith('http'): import pyaes post = { 'type': 'getticket', 'ticket': selfAddon.getSetting("uktvticket"), 'id': getmyidentity() } post = urllib.urlencode(post) ticketurl = "aHR0cDovL3NoYW5pLm9mZnNob3JlcGFzdGViaW4uY29tL1VLVFYucGhwP3Q9JXM=".decode( "base64") % (str(int(time.time()))) ticket = getUrl(ticketurl, post=post) print ticket if ticket.startswith('TKT_'): pDialog.update(60, 'got the ticket!!') selfAddon.setSetting("uktvticket", ticket) if selfAddon.getSetting("uktvticket") == "": return False #addon setting curropted? post = { 'type': 'getUrl', 'ticket': selfAddon.getSetting("uktvticket"), 'url': url } post = urllib.urlencode(post) decurl = "aHR0cDovL3NoYW5pLm9mZnNob3JlcGFzdGViaW4uY29tL1VLVFYucGhwP3Q9JXM=".decode( "base64") % str(int(time.time())) url = getUrl(decurl, post=post) key = "Nzc1ODI5NDkxMzg1MTcwNzA2ODI0MDgyMTQwOTcyMDk=".decode( "base64") iv = "ODg3NzExMzUzOTc5MzM1MQ==".decode("base64") print 'trying to decode', url decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) url = decryptor.decrypt( url.decode("base64")).split('\0')[0] print repr(url) else: dialog = xbmcgui.Dialog() ok = dialog.ok( 'XBMC', 'Error while generating ticket\r\n' + ticket) return False #if '|' in url:# and 1==2: # url=url#.split('|')[0]+"|User-Agent=UKTVNOW_PLAYER_1.2&Referer=www.uktvnow.net" #elif url.startswith('http') : # url=url.split('|')[0]+"|User-Agent=%s"%getUserAgent() #if url.startswith('rtmp'): # url+=' timeout=10' #print 'first',url pDialog.close() played = tryplay(url, listitem) except: print 'err in play' traceback.print_exc(file=sys.stdout) #if played: return True ##print "playing stream name: " + str(name) ##xbmc.Player( ).play( urlToPlay, listitem) #url=item["msg"]["channel"]["rtmp_stream"] #import pyaes #key="ZGlmajM4OXJqZjgzZmY5MA==".decode("base64") #iv="Z3IwNGpoc2Y0Nzg5MCQ5Mw==".decode("base64") #decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) #url= decryptor.decrypt(url.decode("hex")).split('\0')[0] #print repr(url) #url=url.replace(' ','') #if '|' not in url and url.startswith('http'): # url=url+"|User-Agent=%s"%getUserAgent() #if url.startswith('rtmp'): # url+=' timeout=10' #if not played: # played=tryplay(url,listitem) except: pass return played
import pyaes #54b23f9b3596397b2acf70a81b2da31d=01f5237dd1a687bf0174f3cf17d2c274 url = '01f5237dd1a687bf0174f3cf17d2c274' magic = "1579547dfghuh,09458721242affde,45h4jggf5f6g,f5fg65jj46,eedcfa0489174392".split( ',') decryptor = pyaes.new(magic[1], pyaes.MODE_CBC, IV=magic[4]) url = decryptor.decrypt(url.decode("hex")).split('\0')[0] print url
def play(listitem, item): played=False print 'i n pl;ay' pDialog = xbmcgui.DialogProgress() ret = pDialog.create('Zem', 'Trying to get the ticket') pDialog.update(30, 'reading the page') import time try: try: print 'enc Item',item url=item["msg"]["channel"]["http_stream"] if not url.startswith('http'): import pyaes post={'type':'getticket','ticket':selfAddon.getSetting( "uktvticket")} post = urllib.urlencode(post) ticketurl="aHR0cDovL3NoYW5pLm9mZnNob3JlcGFzdGViaW4uY29tL1VLVFYucGhwP3Q9JXM=".decode("base64")%(str(int(time.time()))) ticket=getUrl(ticketurl,post=post) print ticket if ticket.startswith('TKT_'): pDialog.update(60, 'got the ticket!!') selfAddon.setSetting( "uktvticket" ,ticket); if selfAddon.getSetting( "uktvticket")=="": return False #addon setting curropted? post={'type':'getUrl','ticket':selfAddon.getSetting( "uktvticket"),'url':url} post = urllib.urlencode(post) decurl="aHR0cDovL3NoYW5pLm9mZnNob3JlcGFzdGViaW4uY29tL1VLVFYucGhwP3Q9JXM=".decode("base64")%str(int(time.time())) url=getUrl(decurl,post=post) key="Nzc1ODI5NDkxMzg1MTcwNzA2ODI0MDgyMTQwOTcyMDk=".decode("base64") iv="ODg3NzExMzUzOTc5MzM1MQ==".decode("base64") print 'trying to decode',url decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) url= decryptor.decrypt(url.decode("base64")).split('\0')[0] print repr(url) else: dialog = xbmcgui.Dialog() ok = dialog.ok('XBMC', 'Error while generating ticket\r\n'+ticket) return False #if '|' in url:# and 1==2: # url=url#.split('|')[0]+"|User-Agent=UKTVNOW_PLAYER_1.2&Referer=www.uktvnow.net" #elif url.startswith('http') : # url=url.split('|')[0]+"|User-Agent=%s"%getUserAgent() #if url.startswith('rtmp'): # url+=' timeout=10' #print 'first',url pDialog.close() played=tryplay(url,listitem) except: print 'err in play' traceback.print_exc(file=sys.stdout) #if played: return True ##print "playing stream name: " + str(name) ##xbmc.Player( ).play( urlToPlay, listitem) #url=item["msg"]["channel"]["rtmp_stream"] #import pyaes #key="ZGlmajM4OXJqZjgzZmY5MA==".decode("base64") #iv="Z3IwNGpoc2Y0Nzg5MCQ5Mw==".decode("base64") #decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) #url= decryptor.decrypt(url.decode("hex")).split('\0')[0] #print repr(url) #url=url.replace(' ','') #if '|' not in url and url.startswith('http'): # url=url+"|User-Agent=%s"%getUserAgent() #if url.startswith('rtmp'): # url+=' timeout=10' #if not played: # played=tryplay(url,listitem) except: pass return played