VideoHelp Forum


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
Page 2 of 6
FirstFirst 1 2 3 4 ... LastLast
Results 31 to 60 of 168
Thread
  1. Member
    Join Date
    Aug 2023
    Location
    United Kingdom
    Search PM
    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.
    Quote Quote  
  2. Member
    Join Date
    Sep 2022
    Location
    india
    Search Comp PM
    I can't find apkId in browser console. Cam anyone tell me how to get apkId.
    Quote Quote  
  3. nxhda
    Join Date
    Sep 2022
    Location
    United States
    Search Comp PM
    不和谐 nxhda#0
    telegram https://t.me/nxhda1
    Quote Quote  
  4. code: >>apkId
    "3536356133536356139376264616637356136363393762646 166373561363633"

    Should i change something in the code

    As apkId is now 64 char instead of 32
    Quote Quote  
  5. nxhda
    Join Date
    Sep 2022
    Location
    United States
    Search Comp PM
    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)
    不和谐 nxhda#0
    telegram https://t.me/nxhda1
    Quote Quote  
  6. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by NBA456017 View Post
    Code:
    with open("timestamp", "rb") as file:
    And what is the timestamp file you are reading bytes from? Do you just need a 'now' time? Or is it something more?
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  7. nxhda
    Join Date
    Sep 2022
    Location
    United States
    Search Comp PM
    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
    不和谐 nxhda#0
    telegram https://t.me/nxhda1
    Quote Quote  
  8. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by NBA456017 View Post
    It is the key file,requests key url to get it
    Magic! Thanks
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  9. 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?
    Quote Quote  
  10. The 'key' is invalid.
    Quote Quote  
  11. Originally Posted by LZAA View Post
    The 'key' is invalid.
    Thanks for the reply
    This is the apkid: 33346131333461313230613636666135636561353230613636 66613563656135
    And using the above code I got key as 47aa2b7372e2a7cc022a3238f5cfc606
    Can you please specify how we can achieve the correct key?
    Quote Quote  
  12. Originally Posted by NBA456017 View Post
    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)
    Sorry to tag you. Can you please help me into this?
    Quote Quote  
  13. 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 10:33.
    Quote Quote  
  14. nxhda
    Join Date
    Sep 2022
    Location
    United States
    Search Comp PM
    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 11:39.
    不和谐 nxhda#0
    telegram https://t.me/nxhda1
    Quote Quote  
  15. Originally Posted by NBA456017 View Post
    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 url_base : ")
        dowload()
    thanks, you are a crack!!!!!
    Last edited by marioeivissa; 26th Oct 2023 at 12:25.
    Quote Quote  
  16. Originally Posted by NBA456017 View Post
    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()
    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 12:24.
    Quote Quote  
  17. Originally Posted by NBA456017 View Post
    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()


    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 range
    Last edited by marioeivissa; 26th Oct 2023 at 12:24.
    Quote Quote  
  18. anyway always we have the other way to get 128aes
    Last edited by marioeivissa; 27th Oct 2023 at 01:59.
    Quote Quote  
  19. 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}
    ...
    Quote Quote  
  20. Originally Posted by LZAA View Post
    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}
    ...
    maybe im mising a repo?
    problems with

    video = url_stream+matchs[-1]
    ~~~~~~^^^^
    IndexError: list index out of range

    so i dont know what i have to fix

    the point is if i do manually with comands of hlsdl its working
    Last edited by marioeivissa; 27th Oct 2023 at 03:05.
    Quote Quote  
  21. 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????
    Quote Quote  
  22. 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
    Quote Quote  
  23. Originally Posted by notaghost View Post
    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"
    thank you guys you all are amazing!!!!!!!!


    I guess with the last script of _NBA456017 is not necessary to have the timestamp in the same folder
    I can see from the script it does not make any reference
    Quote Quote  
  24. 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?
    Quote Quote  
  25. Originally Posted by LZAA View Post
    Url?
    Sorry for the confusion. It's working absolutely fine. There was an error on my side.
    Quote Quote  
  26. Ordinary Person ordinary's Avatar
    Join Date
    Nov 2023
    Location
    Asia
    Search PM
    Hey everyone,
    It is working now? It's not working for me now.
    Thanks in advance.
    Quote Quote  
  27. send the url and apkid
    Quote Quote  
  28. Ordinary Person ordinary's Avatar
    Join Date
    Nov 2023
    Location
    Asia
    Search PM
    Originally Posted by jora View Post
    send the url and apkid
    URL is https://www.futurly.com/s/preview/courses/blender-architecture#6337f80fe4b05a534f0e3d5a
    and you can get apkID from console.
    Quote Quote  
  29. 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")
                    }
    the code i send you is a new one, it's from the browser

    Image
    [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
    apkID:

    33383939333383939336637303432613739356665366373034 32613739356665


    Thank you all
    Last edited by tamevav227; 28th Nov 2023 at 14:23.
    Quote Quote  



Similar Threads

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