I want to download this video from here
https://www.bridgewhy.com/s/preview/package/683337e5da20a126b9b9ee1d/courses/IPv6-From...om-Vishnu-Dutt
i give the yt-dlb and the streamlink the m3u8 of the 720p
which is this https://qcdn.spayee.in/spees/w/o/6502ee39e4b035ccd352401d/v/684134867b0d642088175ab0/u...hls_500k_.m3u8
but it gives this erorr Incorrect AES key length (64 bytes)
cause the k/timestamp relative url return 64 bytes but the encryption is done using AES-128. So, the key is also encrypted
so i don't know how to decrypt the key.
So, any help.
i need the method cause i want to download more than one video. plz
+ Reply to Thread
Results 1 to 14 of 14
-
-
Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
-
dear imr_saleh, useless file.
the OP (and everybody here, me too) we are interested in understanding the process, not the single file. we are full of software that can rip a video like Tubedigger or other extensions that capture the flow from the browser
what is interesting is understanding how to get the key, which is not easy from this site. perhaps you could explain better how to get the key, how to convert it (if necessary), how to use it with N_m3u8DL-RE in order to get the final video download -
Use debugger
[Attachment 87716 - Click to enlarge]
Download command and key:
Code:N_m3u8DL-RE "https://qcdn.spayee.in/spees/w/o/6502ee39e4b035ccd352401d/v/684134867b0d642088175ab0/u/pu/t/813b272bb00591af266a8c8ba5a7f62e/p/assets/videos/6502ee39e4b035ccd352401d/2025/06/05/684134867b0d642088175ab0/index.m3u8" --custom-hls-iv 496DAA1C6914000E408C65CEAD91FC29 --custom-hls-key EF613E9EEC841DF6518C91F5B3868C6F --save-name "hentai" -M mkv
-
wow Frieren very simply and clear explanation. amazing
but:
1. --custom-hls-iv 496DAA.... no need. i've tried with hls-key only EF61.... and download with N_m3u8DL-RE work fine
2. for me dev tool can't show Array (key) value from Memory inspector ...
[Attachment 87717 - Click to enlarge]
edit: after 30 min of tryout i've solved. now i can see hls-key. nvm my comment on point 2. thanks again @FrierenLast edited by whs912km; 5th Jul 2025 at 13:04.
-
[Attachment 87720 - Click to enlarge]
So I reached here, but how do I convert these numbers into a real key? -
no need to convert nothing. simply copy code. and this is hls-key
and need just --custom-hls-key EF613E9EEC841DF6518C91F5B3868C6F
no more. -
Dear imr_saleh, "useless file" as described by our resident genius here.
Oh wise one of the internet, if you’d move your lazy ass and actually open the link that larley shared, you'd find that a whole army of kind souls already explained the process step by step: how to get the key, how to convert it, and how to use it with N_m3u8DL-RE to download the final video.
But it seems you were too busy comparing TubeDigger with browser extensions instead of using your brain to understand what’s behind the button.
Code:from Crypto.Cipher import AES import requests, re from bs4 import BeautifulSoup url = input("Vid URL: ") response = requests.get( url, headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"} ) response.raise_for_status() texts = response.text vid = re.search(r'coursePlayer\.init\("([^"]+)"', texts).group(1) apkid = re.search(r'apkId\s*=\s*"([^"]+)"', texts).group(1) soup = BeautifulSoup(texts, 'html.parser') target_elements = soup.select('.courseSubItem.enabled-true.completed-false') data_ids = [element.get('data-id') for element in target_elements] for data_id in data_ids: getres = requests.get( f"https://www.bridgewhy.com/s/preview/courses/{vid}/videos/{data_id}/get", headers={ 'accept': 'application/json, text/javascript, */*; q=0.01', 'content-type': 'application/json; charset=utf-8', 'referer': 'https://www.bridgewhy.com/', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', } ).json() title = getres["spayee:resource"]["spayee:title"] streamUrl = getres["spayee:resource"]["spayee:streamUrl"] ktimestamp = streamUrl.replace("index.m3u8", "k/timestamp") timestamp = requests.get(ktimestamp).content fixed_apkid = apkid[:9] + apkid[41:] first_cipher = AES.new(bytes.fromhex(fixed_apkid), AES.MODE_ECB) intermediate_key = first_cipher.decrypt(timestamp[16:32]) second_cipher = AES.new(intermediate_key, AES.MODE_ECB) final_result = second_cipher.decrypt(timestamp[48:64]) im_key = final_result.hex() print(f'n_m3u8dl-re --save-name "{title}" --custom-hls-key {im_key} -M format=mp4 -mt {streamUrl}\n')
-
dude, my ass is not lazy as you think ...
I spent over 30 minutes doing various tests as said in my post above after Larley suggestion, but not easy for everyone to understand stuff on the fly.
Having said about to your 'useless' file was only to say that OP (like us) don't need the file only, but rather understand the method.
now thanks to Frieren post above the solution was already much clearer. surely with your script everything is much simpler, however perhaps the Frieren post remains (for me) the best solution to understand the full procedure.
anyway thanks also for your script @imr_saleh -
Similar Threads
-
How Can I Get the AES Key from ESPN+?
By noobsavvy in forum Video Streaming DownloadingReplies: 14Last Post: 13th Oct 2024, 10:47 -
AES 128 Key, How do i decrypt or find the key?
By GirlsGill in forum Video Streaming DownloadingReplies: 12Last Post: 12th Feb 2024, 08:03 -
help to find key for AES-128
By whs912km in forum Video Streaming DownloadingReplies: 15Last Post: 15th Feb 2023, 20:44 -
how to get aes 128 key???
By anandgpt75 in forum Newbie / General discussionsReplies: 1Last Post: 7th Feb 2023, 09:33 -
Failed to create decryptor: Incorrect AES key length (48 bytes)
By akshaysic in forum Video Streaming DownloadingReplies: 2Last Post: 14th Jan 2023, 09:05