VideoHelp Forum




+ Reply to Thread
Results 1 to 14 of 14
  1. 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
    Quote Quote  
  2. 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
    Quote Quote  
  3. Use debugger

    Image
    [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
    Quote Quote  
  4. 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 ...

    Image
    [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 @Frieren
    Last edited by whs912km; 5th Jul 2025 at 13:04.
    Quote Quote  
  5. Originally Posted by Frieren View Post
    Use debugger

    Image
    [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
    Image
    [Attachment 87720 - Click to enlarge]

    So I reached here, but how do I convert these numbers into a real key?
    Quote Quote  
  6. no need to convert nothing. simply copy code. and this is hls-key
    and need just --custom-hls-key EF613E9EEC841DF6518C91F5B3868C6F
    no more.
    Quote Quote  
  7. Originally Posted by lomero View Post
    no need to convert nothing. simply copy code. and this is hls-key
    and need just --custom-hls-key EF613E9EEC841DF6518C91F5B3868C6F
    no more.
    Oh damn... thanks mate
    Quote Quote  
  8. Originally Posted by whs912km View Post
    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

    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')
    Quote Quote  
  9. 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
    Quote Quote  
  10. Originally Posted by whs912km View Post
    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
    don't just relay on that, when they see they'll fix asap
    Quote Quote  
  11. surely. but it's nice to know these things
    Quote Quote  
  12. Originally Posted by whs912km View Post
    surely. but it's nice to know these things
    always
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!