Also, small update:
Seems they've added a super small deterrent in downloading videos: the apkId is now 34 characters instead of 32.
Fix is just to remove the first and last character, and you get the hex string.
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays!
Try StreamFab Downloader and download streaming video from Youtube, Netflix, Amazon! Download free trial.
+ Reply to Thread
Results 31 to 60 of 175
Thread
-
-
I can't find apkId in browser console. Cam anyone tell me how to get apkId.
-
discord nxhda#0
telegram https://t.me/nxhda1 -
code: >>apkId
"3536356133536356139376264616637356136363393762646 166373561363633"
Should i change something in the code
As apkId is now 64 char instead of 32 -
Code:
import base64 import binascii from Crypto.Cipher import AES with open("timestamp", "rb") as file: data = file.read() apkId = input('\napkId:') #apkId = '6231362313734323630386634656538646135734323630386634656538646135' def _decrypt_key(data): tmp1 = data[16:32] tmp2 = data[48:64] apk_Id = apkId[:5] + apkId[37:] dec1 = AES.new(bytes.fromhex(apk_Id), AES.MODE_ECB) tmp3 = dec1.decrypt(tmp1) dec2 = AES.new(tmp3, AES.MODE_ECB) return dec2.decrypt(tmp2) result = _decrypt_key(data) hex_result = binascii.hexlify(result) base64key = (base64.b64encode(result).decode('utf-8')) print('hex_key:',hex_result.decode()) print('b64key:',b64key)
discord nxhda#0
telegram https://t.me/nxhda1 -
Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
It is the key file,requests key url to get it
key url for example
Code:https://d2qny97nu4rj64.cloudfront.net/spees/w/o/6197321b0cf23d7cc6e572e1/v/6337f80fe4b05a534f0e3d5a/u/pu/t/87bb35a36b01e0943ef12fa4e6f5ef7c/p/assets/videos/6197321b0cf23d7cc6e572e1/2022/10/01/6337f80fe4b05a534f0e3d5a/k/timestamp
discord nxhda#0
telegram https://t.me/nxhda1 -
Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
N_m3u8DL-RE -M format=mp4 --custom-hls-key eb1c3990b427fce9a507010d256c0188 "https://d2qny97nu4rj64.cloudfront.net/spees/w/o/64e36f81e4b0f6317a6e3410/v/64fdc62ee4b0d1111c349bf5/u/65367314e4b0caa1a7be5830/t/3cb07933e9bb9003aa7a58780304ff85/p/assets/videos/64e36f81e4b0f6317a6e3410/2023/09/10/64fdc62ee4b0d1111c349bf5/index.m3u8" --save-name ge.mp4
It now gives a new error: ERROR: Padding is invalid and cannot be removed.
Am I doing something wrong? -
-
-
guys and if we want to download directly with hlsdl
how we can change the apkid2.py?
im trying put inside something like that:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36', 'Referer': 'https://www.futurly.com/'}
url_base = input("Enter URL timestamp : ")
apkId = input("Enter the apkId : ")
match = re.search(r"(https?://.*\/)", url_base)
url_stream = match.group(1).strip()
r=requests.get(url_base, headers=headers)
matchs = re.findall(r"(h.*m3u8)", r.text)
video = url_stream+matchs[-1]
r=requests.get(video, headers=headers)
matchs = re.search(r"AES-128,URI=\"(.*)\"", r.text)
uri_url = url_stream+matchs.group(1).strip()
res = requests.get(uri_url)
res.encoding = "binary/octet-stream"
key_data = _decrypt_key(res.content)
base64_key = (base64.b64encode(key_data).decode('utf-8'))
hex_key =(binascii.hexlify(key_data).decode('utf-8'))
os.system(f'hlsdl -K {hex_key} -o file_output.mp4 -b "{url_base}"')
im adding also in the begining:
import re
import headers
import so
error:
File "C:\xxxxxxx\xxxxx\Desktop\hlsdl\hlsdl0.27\apkid2.p y", line 42, in <module>
video = url_stream+matchs[-1]
~~~~~~^^^^
IndexError: list index out of range
but im not expert......jeje anybody can help me?Last edited by marioeivissa; 26th Oct 2023 at 11:33.
-
Code:
import re import base64 import requests from Crypto.Cipher import AES import binascii import os def _decrypt_key(data): tmp1 = data[16:32] tmp2 = data[48:64] apk_Id = apkId[:16] + apkId[48:] dec1 = AES.new(bytes.fromhex(apk_Id), AES.MODE_ECB) tmp3 = dec1.decrypt(tmp1) dec2 = AES.new(tmp3, AES.MODE_ECB) return dec2.decrypt(tmp2) def dowload(): match = re.search(r"(https?://.*\/)", url_base) url_stream = match.group(1).strip() r=requests.get(url_base) matchs = re.findall(r"(h.*m3u8)", r.text) video = url_stream+matchs[-1] r=requests.get(video) matchs = re.search(r"AES-128,URI=\"(.*)\"", r.text) uri_url = url_stream+matchs.group(1).strip() res = requests.get(uri_url) res.encoding = "binary/octet-stream" key_data = _decrypt_key(res.content) base64_key = (base64.b64encode(key_data).decode('utf-8')) hex_key =(binascii.hexlify(key_data).decode('utf-8')) print(hex_key) os.system(f'hlsdl -K {hex_key} -o output.mp4 -b "{url_base}"') if __name__ == '__main__': apkId = input("Enter the apkId : ") url_base = input("Enter Index.m3u8url : ") dowload()
Last edited by NBA456017; 26th Oct 2023 at 12:39.
discord nxhda#0
telegram https://t.me/nxhda1 -
Last edited by marioeivissa; 26th Oct 2023 at 13:25.
-
the point is the apkid was change in the page, from 32 to 64 characters, so we using timestamps file to put inside the same forder like that script:
import base64
import binascii
from Crypto.Cipher import AES
import requests
import os
import re
with open("timestamp", "rb") as file:
data = file.read()
apkId = input('\napkId:')
#apkId = '6231362313734323630386634656538646135734323630386 634656538646135'
def _decrypt_key(data):
tmp1 = data[16:32]
tmp2 = data[48:64]
apk_Id = apkId[:5] + apkId[37:]
dec1 = AES.new(bytes.fromhex(apk_Id), AES.MODE_ECB)
tmp3 = dec1.decrypt(tmp1)
dec2 = AES.new(tmp3, AES.MODE_ECB)
return dec2.decrypt(tmp2)
result = _decrypt_key(data)
hex_result = binascii.hexlify(result)
base64key = (base64.b64encode(result).decode('utf-8'))
print('hex_key:',hex_result.decode())
print('base64key:',base64key)
so you script doesnt work, if i put normal 64characters of apkid neither if i put the key in hex and neither if i put the key in base64
and not working also if i put index.m3u8, timestamp, or hls_audio_.m3u8, doesnt work
i think you had probe before, how did you do it?Last edited by marioeivissa; 26th Oct 2023 at 13:24.
-
the point is the apkid was change in the page, from 32 to 64 characters, so we using timestamps file to put inside the same forder of this script:
import base64
import binascii
from Crypto.Cipher import AES
import requests
import os
import re
with open("timestamp", "rb") as file:
data = file.read()
apkId = input('\napkId:')
#apkId = '6231362313734323630386634656538646135734323630386 634656538646135'
def _decrypt_key(data):
tmp1 = data[16:32]
tmp2 = data[48:64]
apk_Id = apkId[:5] + apkId[37:]
dec1 = AES.new(bytes.fromhex(apk_Id), AES.MODE_ECB)
tmp3 = dec1.decrypt(tmp1)
dec2 = AES.new(tmp3, AES.MODE_ECB)
return dec2.decrypt(tmp2)
result = _decrypt_key(data)
hex_result = binascii.hexlify(result)
base64key = (base64.b64encode(result).decode('utf-8'))
print('hex_key:',hex_result.decode())
print('base64key:',base64key)
so your script doesnt work, if i put normal 64characters of apkid neither if i put the key in hex and neither if i put the key in base64
and not working also if i put index.m3u8, timestamp, or hls_audio_.m3u8, doesnt work
i think you had check before, how did you do it?
same error like before
File "C:\xxxxxxx\xxxxx\Desktop\hlsdl\hlsdl0.27\spka2.py ", line 23, in dowload
video = url_stream+matchs[-1]
~~~~~~^^^^
IndexError: list index out of rangeLast edited by marioeivissa; 26th Oct 2023 at 13:24.
-
anyway always we have the other way to get 128aes
Last edited by marioeivissa; 27th Oct 2023 at 02:59.
-
D:\>apkid2_NBA456017
Enter the apkId : 62313734323630386231373432363038663465653864613566 34656538646135
Enter url_base : https://d2s2mc5mfsrgxi.cloudfront.net/spees/w/o/5e356a710cf24531c92ac49f/v/5e6e6c1f0cf...fbe/index.m3u8
d1612ad69f3772bcfd267d9a48dd3382
> START media_playlist_get_links
> END media_playlist_get_links
HLS Stream is AES-128 encrypted.
{"d_t":"vod"}
{"t_d":5038,"d_d":0, "d_s":0}
Downloading part 0
{"t_d":5038,"d_d":2,"d_s":45308}
Downloading part 1
Downloading part 2
Downloading part 3
Downloading part 4
Downloading part 5
Downloading part 6
Downloading part 7
Downloading part 8
Downloading part 9
Downloading part 10
Downloading part 11
{"t_d":5038,"d_d":24,"d_s":931540}
Downloading part 12
{"t_d":5038,"d_d":26,"d_s":1010876}
Downloading part 13
{"t_d":5038,"d_d":28,"d_s":1089084}
Downloading part 14
{"t_d":5038,"d_d":30,"d_s":1160900}
... -
Last edited by marioeivissa; 27th Oct 2023 at 04:05.
-
really strange, jejejeejjeje but its working now, sorry and thank you for all your help
any posibility to make work this kind of videos with yp-dlp? commands for key???? -
yt-dlp --extractor-args "generic:hls_key=d1612ad69f3772bcfd267d9a48dd3 382" "https://d2s2mc5mfsrgxi.cloudfront.net/spees/w/o/5e356a710cf24531c92ac49f/v/5e6e6c1f0cf2363c76c9bfbe/u/pu/t/3859b2b289715802a87d6735fd031730/p/assets/videos/5e356a710cf24531c92ac49f-1/2020/03/15/5e6e6c1f0cf2363c76c9bfbe/index.m3u8"
discord=notaghost9997 -
-
Hi everyone,
It seems they have again done something. Now, the video is not downloading. The length of apkID is the same, but still key is not getting decrypted.
Can anyone please look into it? -
-
Hey everyone,
It is working now? It's not working for me now.
Thanks in advance. -
URL is https://www.futurly.com/s/preview/courses/blender-architecture#6337f80fe4b05a534f0e3d5a
and you can get apkID from console. -
Hi all,
It is not working for me as well
Code:e.loadsuccess = function(t, e, r) { var i = r.frag , n = window.cjs , a = n.AES.decrypt , o = window.convertArrayToBase64 , u = n.mode.ECB , d = n.enc , h = d.Hex.parse , c = n.pad.NoPadding; if (i.decryptdata) { var f = new Uint8Array(t.data) , g = f.subarray(16, 32) , v = f.subarray(48, 64); f = a(o(g), h(window.apkId.substring(0, 9) + window.apkId.substring(41)), { mode: u, padding: c }), f = d.u8array.stringify(a(o(v), f, { mode: u, padding: c })), this.decryptkey = i.decryptdata.key = new Uint8Array(f.buffer), i.loader = null, delete this.loaders[i.type], this.hls.trigger(s.Events.KEY_LOADED, { frag: i }) } else l.logger.error("after key load, decryptdata unset") }
[Attachment 75112 - Click to enlarge]
Code:https://d2qny97nu4rj64.cloudfront.net/spees/w/o/60e975430cf20278db21ff30/v/64036ee0e4b0896a260ece65/u/655be340e4b0e5c1d9d3a76e/t/e3d0f0f20e38db23fee6df7350a732f5/p/assets/videos/60e975430cf20278db21ff30/2023/03/04/64036ee0e4b0896a260ece65/index.m3u8
33383939333383939336637303432613739356665366373034 32613739356665
Thank you allLast edited by tamevav227; 28th Nov 2023 at 15:23.
Similar Threads
-
howto deal with HLS 128 bit aes encrypted - the hard one
By code47 in forum Video Streaming DownloadingReplies: 63Last Post: 28th Dec 2023, 09:45 -
How do I download AES encrypted video streamed over HLS?
By Videogamer555 in forum Video Streaming DownloadingReplies: 1Last Post: 20th Jul 2022, 09:03 -
Help downloading AES-encrypted HLS video stream
By Woodswolf in forum Video Streaming DownloadingReplies: 26Last Post: 25th May 2019, 15:20 -
Help me with AES encrypted HLS downloading ?
By shraman in forum Video Streaming DownloadingReplies: 0Last Post: 30th Jul 2018, 07:54 -
Help downloading AES-encrypted HLS video stream
By vidder in forum Video Streaming DownloadingReplies: 3Last Post: 4th Jul 2018, 18:24