VideoHelp Forum


Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!


Try StreamFab Downloader and download streaming video from Youtube, Netflix, Amazon! Download free trial.


+ Reply to Thread
Page 4 of 4
FirstFirst ... 2 3 4
Results 91 to 116 of 116
Thread
  1. Member
    Join Date
    May 2024
    Location
    Brazil
    Search PM
    Angela you can me help?
    Quote Quote  
  2. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by rafaelscs View Post
    Angela you can me help?
    Don't tell me .... er..? er.. You're working your way through college and if I just buy six tea-towels from you, you'll have enough to eat this week?

    Or are you in fact a Prince from Nigeria who needs help getting money out of the country? And if I give you my bank details you'll wire me 12 Million US Dollars to bank for you - and in gratitude you'll let me keep 10%? Sure!
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  3. Member
    Join Date
    Aug 2023
    Location
    Turkey
    Search Comp PM
    Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by pssh View Post
    Should this perhaps be marked as Sticky Threads?
    Did you really need to re-post the entire message in post #1?

    I could just link to Beyond WKS-KEYS in one of the existing stickies.
    Now keydive exists, there is a good case for updating the CDM recovery method as well.

    I was falling off my chair laughing while reading this.
    A very interesting enecdote
    I love your outbursts like this
    Quote Quote  
  4. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by senkron24 View Post
    I love your outbursts like this
    I think the rule is - don't ever take me too seriously!
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  5. Why don't developers still use blob keyfiles and wvd files?

    pywidevine is quite troublesome if I install it - other scripts stop working for me
    Quote Quote  
  6. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by Kadio View Post
    pywidevine is quite troublesome if I install it - other scripts stop working for me
    Use virtual environments.
    --[----->+<]>.++++++++++++.---.--------.
    [*Have questions about widefrog? You can find all your answers here*]
    Quote Quote  
  7. I'm trying to get keys from here
    Code:
    https://www.ertflix.gr/epg/channel/ept1-live
    which has a generic mpd and license server URL
    Code:
    https://ertflix.s.llnwi.net/ertlive/ert1/encdef/index.mpd
    Code:
    https://ertflix.la.drm.cloud/acquire-license/widevine
    I have trouble I think getting the PSSH value. EME logger has this response
    Code:
    [EME] (CALL) MediaKeySession::generateRequest
    Session ID: (not available)
    Init Data Type: cenc
    Init Data: AAAAZ3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEcIARIQNw4LQqRoUpWMq+4a2w6T3BoFaW5zeXMiJDM3MGUwYjQyLWE0NjgtNTI5NS04Y2FiLWVlMWFkYjBlOTNkYyoCU0QyAAAAA2Bwc3NoAAAAAJoE8HmYQEKGq5LmW+CIX5UAAANAQAMAAAEAAQA2AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUQBnAHMATwBOADIAaQBrAGwAVgBLAE0AcQArADQAYQAyAHcANgBUADMAQQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBlAHIAdABmAGwAaQB4AC4AbABhAC4AZAByAG0ALgBjAGwAbwB1AGQALwBhAGMAcQB1AGkAcgBlAC0AbABpAGMAZQBuAHMAZQAvAHAAbABhAHkAcgBlAGEAZAB5AD8AYgByAGEAbgBkAEcAdQBpAGQAPQA2ADEAZgAwAGIAZQAwADMALQAwADMANgA1AC0ANABkAGYANgAtAGEAMwAwADYALQBhADUANQA2ADUANwAzAGQAMgBiAGEAMwA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AGUAZgBBAEUAbQBrAEMAWQBoAGsASwByAGsAdQBaAGIANABJAGgAZgBsAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGkAYgB3AEUAcwBKADcAQwBwAHcAbwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==
    following this guide
    https://cdm-project.com/How-To/Obtaining-PSSH
    I get two "70737368" results and not sure which one is the correct one.

    I modified the l3.py in this post a bit, it contains also the header data. CDM is my own from a real rooted phone and does work on a other simpler widevine sites with a plaintext PSSH in mpd. Any ideas?

    Code:
    from pywidevine.cdm import Cdm
    from pywidevine.device import Device
    from pywidevine.pssh import PSSH
    import requests
    #
    # enter special header values here  in the form  'token':  ' value',   each on one line -  remember the quotes and the comma!
    headers = {
    	"User-Agent": "Mozilla/5.0 (Windows NT 10.0; rv:127.0) Gecko/20100101 Firefox/127.0",
    	"Accept": "*/*",
    	"Accept-Language": "en-US,en;q=0.5",
    	"Accept-Encoding": "gzip, deflate, br, zstd",
    	"drmchallengecustomdata": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPExpY2Vuc2VSZXF1ZXN0Q3VzdG9tRGF0YSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICA8VXNlclRva2VuPlpUNSs0aTFFSFNMWmt6SGppZ1E4ekxlclpXWGRUdVUzVS9KLzd3NTRUZk5EcEwweVBURllTWkJzeUpSS3ljUXdoY05YbDAxbzBmdXZZQ2drVGJuMWdId3JkN3NaSkZxd3ZLbDgvV2lZeWVDVGdVdE4rTzdyUU41L2VhWjRCQWU5cmdZczFtODJsTXloWmYrRURmaUQvYlVUcW05V0ZabjRvR2RqYU1QMURXaHJwTVFQUEthRWlyUHBaTFpwNWVSWmdJUVFTWVFERnIwYXZTS1IzMHlHR3NXUXZMbG5XRkNKZkg2cEdidEUzdWVzL1pSbmhwNVlNdjhjMlVTMUswZ0xobHI3bHN1OVpnSCsvbGdzTUdXb1JwMG5wb0ExWjJsYXlFc0Y0aUhXeCtHa2dJbE5nN3hTeCtBM2lRYllqRW1SRDdWeVNJM2E0OWhXeUd6YnEwdjZRaUFhcFZNTmpDV3krc0ZLUFQzTndYcWpUc012WDhyTGtlS2J6ZmpuYlM1NjwvVXNlclRva2VuPgogIDxCcmFuZEd1aWQ+NjFmMGJlMDMtMDM2NS00ZGY2LWEzMDYtYTU1NjU3M2QyYmEzPC9CcmFuZEd1aWQ+CiAgPERldmljZUtleT45ZWZkYjZjNDg0MGVmMmVhNDNkNjI0MjJjOGU5MGZlMzwvRGV2aWNlS2V5Pgo8L0xpY2Vuc2VSZXF1ZXN0Q3VzdG9tRGF0YT4=",
    	"Origin": "https://www.ertflix.gr",
    	"DNT": "1",
    	"Sec-GPC": "1",
    	"Connection": "keep-alive",
    	"Sec-Fetch-Dest": "empty",
    	"Sec-Fetch-Mode": "cors",
    	"Sec-Fetch-Site": "cross-site",
    	"Priority": "u=4",
    	"TE": "trailers",
    	"Content-Type": "application/x-www-form-urlencoded"
    }
    
    # prepare pssh
    # pssh = input("PSSH? ")
    # pssh = PSSH(pssh)
    pssh = PSSH("AAAAfoobar")
    lic_url = "https://ertflix.la.drm.cloud/acquire-license/widevine"
    
    # load device
    # for example
    #device = Device.load(r"/home/angela/Programming/WKS-KEYS/pywidevine/L3/cdm/devices/emulator_1/WVD/google_aosp_on_ia_emulator_14.0.0_xxxxxc_4464_l3.wvd")
    device = Device.load(r"mycdm.wvd")
    
    # load cdm
    cdm = Cdm.from_device(device)
    
    # open cdm session
    session_id = cdm.open()
    
    # get license challenge
    challenge = cdm.get_license_challenge(session_id, pssh)
    
    # send license challenge (assuming a generic license server SDK with no API front)
    licence = requests.post(lic_url, headers = headers, data=challenge)
    licence.raise_for_status()
    
    # parse license challenge
    cdm.parse_license(session_id, licence.content)
    
    # print keys
    for key in cdm.get_keys(session_id):
    
        if key.type=='CONTENT':
            print(f"\n--key {key.kid.hex}:{key.key.hex()}")
    
    # close session, disposes of session data
    cdm.close(session_id)
    Last edited by Hackerpcs; 14th Jun 2024 at 06:58.
    Quote Quote  
  8. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by Hackerpcs View Post
    I'm trying to get keys from here
    Code:
    https://www.ertflix.gr/epg/audition/prg.421913-ept1-live-3961199
    Code:
    AAAAZ3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEcIARIQNw4LQqRoUpWMq+4a2w6T3BoFaW5zeXMiJDM3MGUwYjQyLWE0NjgtNTI5NS04Y2FiLWVlMWFkYjBlOTNkYyoCU0QyAAAAA2Bwc3NoAAAAAJoE8HmYQEKGq5LmW+CIX5UAAANAQAMAAAEAAQA2AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUQBnAHMATwBOADIAaQBrAGwAVgBLAE0AcQArADQAYQAyAHcANgBUADMAQQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBlAHIAdABmAGwAaQB4AC4AbABhAC4AZAByAG0ALgBjAGwAbwB1AGQALwBhAGMAcQB1AGkAcgBlAC0AbABpAGMAZQBuAHMAZQAvAHAAbABhAHkAcgBlAGEAZAB5AD8AYgByAGEAbgBkAEcAdQBpAGQAPQA2ADEAZgAwAGIAZQAwADMALQAwADMANgA1AC0ANABkAGYANgAtAGEAMwAwADYALQBhADUANQA2ADUANwAzAGQAMgBiAGEAMwA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AGUAZgBBAEUAbQBrAEMAWQBoAGsASwByAGsAdQBaAGIANABJAGgAZgBsAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGkAYgB3AEUAcwBKADcAQwBwAHcAbwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==
    I'm getting 404 when I try to play this live.. Maybe geo restricted ? (Indeed geo restricted to grece)

    Here is the widevine pssh :
    Code:
    AAAAY3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEMIARIQNw4LQqRoUpWMq+4a2w6T3BoFaW5zeXMiJDM3MGUwYjQyLWE0NjgtNTI5NS04Y2FiLWVlMWFkYjBlOTNkYzIA
    Try to use : https://emarsden.github.io/pssh-box-wasm/decode/
    Quote Quote  
  9. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by aqzs View Post
    Originally Posted by Hackerpcs View Post
    I'm trying to get keys from here
    Code:
    https://www.ertflix.gr/epg/audition/prg.421913-ept1-live-3961199
    Code:
    AAAAZ3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEcIARIQNw4LQqRoUpWMq+4a2w6T3BoFaW5zeXMiJDM3MGUwYjQyLWE0NjgtNTI5NS04Y2FiLWVlMWFkYjBlOTNkYyoCU0QyAAAAA2Bwc3NoAAAAAJoE8HmYQEKGq5LmW+CIX5UAAANAQAMAAAEAAQA2AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUQBnAHMATwBOADIAaQBrAGwAVgBLAE0AcQArADQAYQAyAHcANgBUADMAQQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBlAHIAdABmAGwAaQB4AC4AbABhAC4AZAByAG0ALgBjAGwAbwB1AGQALwBhAGMAcQB1AGkAcgBlAC0AbABpAGMAZQBuAHMAZQAvAHAAbABhAHkAcgBlAGEAZAB5AD8AYgByAGEAbgBkAEcAdQBpAGQAPQA2ADEAZgAwAGIAZQAwADMALQAwADMANgA1AC0ANABkAGYANgAtAGEAMwAwADYALQBhADUANQA2ADUANwAzAGQAMgBiAGEAMwA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AGUAZgBBAEUAbQBrAEMAWQBoAGsASwByAGsAdQBaAGIANABJAGgAZgBsAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGkAYgB3AEUAcwBKADcAQwBwAHcAbwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==
    I'm getting 404 when I try to play this live.. Maybe geo restricted ?

    Here is the widevine pssh :
    Code:
    AAAAY3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEMIARIQNw4LQqRoUpWMq+4a2w6T3BoFaW5zeXMiJDM3MGUwYjQyLWE0NjgtNTI5NS04Y2FiLWVlMWFkYjBlOTNkYzIA
    Try to use : https://emarsden.github.io/pssh-box-wasm/decode/

    Try this https://forum.videohelp.com/threads/407216-Decryption-The-Dungeon-of-Despair#post2669285 it gets everything. Edit for your CDM near the top. Although if you get a 404 in a browser nothing can work. Use a VPN.


    Edit: er, hang on. 404 means not found - have you the correct link?
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  10. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    I tried with : https://www.ertflix.gr/epg/audition/prg.421914-ept1-live-3961309

    mpd :
    Code:
    https://ertflix.s.llnwi.net/ertlive/ert1/encdef/index.mpd
    pssh (obtained from keyid = '370E0B42-A468-5295-8CAB-EE1ADB0E93DC') :
    Code:
    AAAAMnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABISEDcOC0KkaFKVjKvuGtsOk9w=
    HTML Code:
    from pywidevine.cdm import Cdm
    from pywidevine.device import Device
    from pywidevine.pssh import PSSH
    import requests
    from uuid import UUID
    
    CUSTOMDATA = ''
    
    headers = {
        'accept': '*/*',
        'accept-language': 'fr-FR,fr;q=0.9',
        'cache-control': 'no-cache',
        'drmchallengecustomdata': CUSTOMDATA,
        'origin': 'https://www.ertflix.gr',
        'pragma': 'no-cache',
        'priority': 'u=1, i',
        'referer': 'https://www.ertflix.gr/',
        'sec-ch-ua': '"Brave";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"macOS"',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'cross-site',
        'sec-gpc': '1',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
    }
    
    pssh = input('pssh: ')
    pssh = PSSH(pssh)
    lic_url = 'https://ertflix.la.drm.cloud/acquire-license/widevine'
    
    device = Device.load(r"/Users/noham/Documents/GitHub/DRM-remover/TOOLS/WVD/xiaomi_redmi_5_plus_v5.1.0-android_701ec55d_4445_l3.wvd")
    cdm = Cdm.from_device(device)
    session_id = cdm.open()
    challenge = cdm.get_license_challenge(session_id, pssh)
    licence = requests.post(lic_url, headers = headers, data=challenge)
    licence.raise_for_status()
    cdm.parse_license(session_id, licence.content)
    for key in cdm.get_keys(session_id):
        if key.type=='CONTENT':
            print(f"\n--key {key.kid.hex}:{key.key.hex()}")
    cdm.close(session_id)
    key :
    Code:
    370e0b42a46852958cabee1adb0e93dc:658649140edf4e1063887d588d2c46c4
    You have to fill custom data.
    Quote Quote  
  11. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by A_n_g_e_l_a View Post
    Although if you get a 404 in a browser nothing can work. Use a VPN.
    Edit: er, hang on. 404 means not found - have you the correct link?
    You replied the wrong guy ^^
    Btw : 'X-Forwarded-For' : '185.226.64.254' bypass geo restrictions
    Quote Quote  
  12. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by aqzs View Post
    Originally Posted by A_n_g_e_l_a View Post
    Although if you get a 404 in a browser nothing can work. Use a VPN.
    Edit: er, hang on. 404 means not found - have you the correct link?
    You replied the wrong guy ^^
    Btw : 'X-Forwarded-For' : '185.226.64.254' bypass geo restrictions

    Sorry! I'll get my coat!...
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  13. Originally Posted by A_n_g_e_l_a View Post
    Try this https://forum.videohelp.com/threads/407216-Decryption-The-Dungeon-of-Despair#post2669285 it gets everything. Edit for your CDM near the top.
    This worked wonders, great work!

    The code is a bit hard to read and I would like to modify it: I have a shell script that runs downey (that can't get keys from KID) to get keys from a simple MPD with plaintext PSSH (I extract it with sed etc from the MPD and feed it to downey with --pssh), would it be possible to modify the script to make it shell script friendly? Avoid the interface and take two arguments (not input, just arguments when the python file runs), mpd and curl and just print the key, similar to how downey works. I ask for this because after the key I download with n-m3u8dl-re and make some other actions with mkvmerge I want on my script afterwards
    Last edited by Hackerpcs; 14th Jun 2024 at 07:27.
    Quote Quote  
  14. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Hackerpcs View Post
    Originally Posted by A_n_g_e_l_a View Post
    Try this https://forum.videohelp.com/threads/407216-Decryption-The-Dungeon-of-Despair#post2669285 it gets everything. Edit for your CDM near the top.
    This worked wonders, great work!

    The code is a bit hard to read and I would like to modify it: I have a shell script that runs downey (that can't get keys from KID) to get keys from a simple MPD with plaintext PSSH (I extract it with sed etc from the MPD and feed it to downey with --pssh), would it be possible to modify the script to make it shell script friendly? Avoid the interface and take two arguments (not input, just arguments when the python file runs), mpd and curl and just print the key, similar to how downey works. I ask for this because after the key I download with n-m3u8dl-re and make some other actions with mkvmerge I want on my script afterwards
    Unfortunately I don't do requests but I do encourage you to adapt the script yourself. That post is a python script and is shell friendly. You can add an arg parser easily if you want. But beware if it involves pasting a cURL as an agument it won't work. There can be characters in cURL which corrupt the display and play havoc with the terminal.
    Note there a halt at the end before download precisely for you to take the base N_m3u8DL-RE command (with keys already found) and do what you wish with mkvmerge or load subtitles from file or knit socks or whatever else.
    I think that copes with most use-cases.

    I'm glad you find it useful. Good luck.
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  15. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by Hackerpcs View Post
    The code is a bit hard to read and I would like to modify it: I have a shell script that runs downey (that can't get keys from KID) to get keys from a simple MPD with plaintext PSSH (I extract it with sed etc from the MPD and feed it to downey with --pssh), would it be possible to modify the script to make it shell script friendly? Avoid the interface and take two arguments (not input, just arguments when the python file runs), mpd and curl and just print the key, similar to how downey works. I ask for this because after the key I download with n-m3u8dl-re and make some other actions with mkvmerge I want on my script afterwards
    The script I posted here is smaller and works fine. https://forum.videohelp.com/threads/411862-Beyond-WKS-KEYS/page4#post2739490
    Quote Quote  
  16. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by aqzs View Post
    Originally Posted by Hackerpcs View Post
    The code is a bit hard to read and I would like to modify it: I have a shell script that runs downey (that can't get keys from KID) to get keys from a simple MPD with plaintext PSSH (I extract it with sed etc from the MPD and feed it to downey with --pssh), would it be possible to modify the script to make it shell script friendly? Avoid the interface and take two arguments (not input, just arguments when the python file runs), mpd and curl and just print the key, similar to how downey works. I ask for this because after the key I download with n-m3u8dl-re and make some other actions with mkvmerge I want on my script afterwards
    The script I posted here is smaller and works fine. https://forum.videohelp.com/threads/411862-Beyond-WKS-KEYS/page4#post2739490
    But with respect that is just a single specific site downloader and is not what we are dealing with here.
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  17. Originally Posted by aqzs View Post
    Originally Posted by Hackerpcs View Post
    The code is a bit hard to read and I would like to modify it: I have a shell script that runs downey (that can't get keys from KID) to get keys from a simple MPD with plaintext PSSH (I extract it with sed etc from the MPD and feed it to downey with --pssh), would it be possible to modify the script to make it shell script friendly? Avoid the interface and take two arguments (not input, just arguments when the python file runs), mpd and curl and just print the key, similar to how downey works. I ask for this because after the key I download with n-m3u8dl-re and make some other actions with mkvmerge I want on my script afterwards
    The script I posted here is smaller and works fine. https://forum.videohelp.com/threads/411862-Beyond-WKS-KEYS/page4#post2739490
    As I'm seeing it's the same script from the first post and the same I've used that didn't work, what changed are the headers (same drm custom data on both) which mine are wrong and produce http 400 bad request.

    My question is how did you obtain the PSSH here considering the big "Init Data" response of EME logger
    Originally Posted by aqzs View Post
    mpd :
    Code:
    https://ertflix.s.llnwi.net/ertlive/ert1/encdef/index.mpd
    pssh (obtained from keyid = '370E0B42-A468-5295-8CAB-EE1ADB0E93DC') :
    Code:
    AAAAMnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABISEDcOC0KkaFKVjKvuGtsOk9w=
    and also how does hell3.py obtain a different PSSH, yet both result in the same correct key
    MPD URL? https://ertflix.s.llnwi.net/ertlive/ert1/encdef/index.mpd
    Found default_KID using regex: 370E0B42-A468-5295-8CAB-EE1ADB0E93DC
    Extracted or generated PSSH: AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEDcOC0 KkaFKVjKvuGtsOk9xI49yVmwY=
    Last edited by Hackerpcs; 14th Jun 2024 at 10:04.
    Quote Quote  
  18. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Hackerpcs View Post
    and also how does hell3.py obtain a different PSSH, yet both result in the same correct key

    That is often the case with pssh generation. Proof of the pudding... is that hell3.py always seems to work. Mainly CDNs just check for the Kid in the pssh. So everything passes. If a CDN gets picky and tries to make sure it is its own issued pssh, some generators, producing a short version, will fail.

    I was using this for pssh generation and it is common.
    Code:
    elif default_kid is not None:
                # Generate pssh from default_kid
                default_kid = default_kid.replace('-', '')
                default_kid_bytes = binascii.unhexlify(default_kid)
    
                # Widevine PSSH box structure
                pssh_data = b'\x00\x00\x00\x00'  # Size placeholder
                pssh_data += b'\x70\x73\x73\x68'  # 'pssh' box type
                pssh_data += b'\x00\x00\x00\x00'  # Version and flags
                pssh_data += binascii.unhexlify(WIDEVINE_SYSTEM_ID.replace('-', ''))  # Widevine system ID
                pssh_data += b'\x00\x00\x00\x01'  # KID count
                pssh_data += default_kid_bytes  # default_KID
                pssh_data += b'\x00\x00\x00\x00'  # Size of Data (0 for KID-only PSSH)
    
                # Update size
                pssh_size = len(pssh_data)
                pssh_data = pssh_size.to_bytes(4, byteorder='big') + pssh_data[4:]
    
                pssh_base64 = base64.b64encode(pssh_data).decode('utf-8')
                return pssh_base64
    But it wasn't good enough. It only mostly worked.
    Last edited by A_n_g_e_l_a; 14th Jun 2024 at 11:22.
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  19. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Hackerpcs View Post
    I have a shell script that runs downey (that can't get keys from KID) to get keys from a simple MPD with plaintext PSSH (I extract it with sed etc from the MPD and feed it to downey with --pssh), would it be possible to modify the script to make it shell script friendly? Avoid the interface and take two arguments (not input, just arguments when the python file runs), mpd and curl and just print the key, similar to how downey works. I ask for this because after the key I download with n-m3u8dl-re and make some other actions with mkvmerge I want on my script afterwards
    I had a think about this. If you save the cURL as a file you could put the filepath as a argument along with mpd. That might do it. If it is beyond your skill level, try chatgpt; provide my script and ask it to refactor to take command line arguments; one mpd and one file location to be read for cURl, and the save-name I suppose.
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  20. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by A_n_g_e_l_a View Post
    hell3.py always seems to work
    More of a curiosity of mine but have you ever encountered a mpd that didn't have pssh in it and neither in its init fragment? And in that case did generating the pssh work?
    --[----->+<]>.++++++++++++.---.--------.
    [*Have questions about widefrog? You can find all your answers here*]
    Quote Quote  
  21. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    Originally Posted by A_n_g_e_l_a View Post
    hell3.py always seems to work
    More of a curiosity of mine but have you ever encountered a mpd that didn't have pssh in it and neither in its init fragment? And in that case did generating the pssh work?
    Not sure. But the pssh search looks through the mpd for pssh first off. If not found it takes the Default_kid and formats pssh from that. And if all that fails it takes it from the init.m4f. It has to be in one of those, else how is it widevine?
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  22. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Understood. Makes sense. Thanks for clarifications. I read your hell3 code and it's quite neat. I do have one question though. Not trying to be picky or anything. Wouldn't it be better if you used the generator as a last alternative? As you said:

    Originally Posted by A_n_g_e_l_a View Post
    If a CDN gets picky and tries to make sure it is its own issued pssh, some generators, producing a short version, will fail.
    So I assume that if you ever find a pssh in its mpd or init, then its guaranteed to work. While the generated one doesn't offer 100% success rate. Or am I missing something? As you mentioned, in the current state the generated pssh has priority over the init.
    Last edited by 2nHxWW6GkN1l916N3ayz8HQoi; 14th Jun 2024 at 15:05.
    --[----->+<]>.++++++++++++.---.--------.
    [*Have questions about widefrog? You can find all your answers here*]
    Quote Quote  
  23. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    As you mentioned, in the current state the generated pssh has priority over the init.
    Exactly that. I choose to have the lowest time overhead methods selected before having to do another httpx.get for an init.m4f. Why wouldn't i?
    Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    While the generated one doesn't offer 100% success rate.
    Says you; other generators maybe. No faults found anywhere in testing. Everyone returned keys. See https://forum.videohelp.com/threads/411884-UK-Free-to-Air-Downloader/page11#post2739239
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  
  24. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Oh yeah. Forgot about the performance. Now it all makes sense about the solutions priority.
    --[----->+<]>.++++++++++++.---.--------.
    [*Have questions about widefrog? You can find all your answers here*]
    Quote Quote  
  25. Originally Posted by Hackerpcs View Post
    what changed are the headers (same drm custom data on both) which mine are wrong and produce http 400 bad request.
    I found the culprit, "Content-Type" header causes the license server to return http 400, if it isn't given it works. So to make the script from the first post work and print the keys:
    - get mpd URL by "mpd" filter
    - get license server URL by "license" or "widevine" filter and copy the URL to l3keys.py (meaning the one on the first post)
    - copy license server requst as curl (POSIX or Win depending on the environment)
    - convert curl headers to JSON with https://curlconverter.com/json/ and paste to l3keys.py
    - REMOVE this header: "Content-Type": "application/x-www-form-urlencoded"
    - get PSSH by copying "default_KID" from mpd file to https://emarsden.github.io/pssh-box-wasm/generate/ and copy it to l3keys.py

    Easier is to just use hell3.py but I wanted to know a bit about the procedure
    Last edited by Hackerpcs; 15th Jun 2024 at 01:09.
    Quote Quote  
  26. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Hackerpcs View Post
    Originally Posted by Hackerpcs View Post
    what changed are the headers (same drm custom data on both) which mine are wrong and produce http 400 bad request.
    I found the culprit, "Content-Type" header causes the license server to return http 400, if it isn't given it works. So to make the script from the first post work and print the keys:
    - get mpd URL by "mpd" filter
    - get license server URL by "license" or "widevine" filter and copy the URL to l3keys.py (meaning the one on the first post)
    - copy license server requst as curl (POSIX or Win depending on the environment)
    - convert curl headers to JSON with https://curlconverter.com/json/ and paste to l3keys.py
    - REMOVE this header: "Content-Type": "application/x-www-form-urlencoded"
    - get PSSH by copying "default_KID" from mpd file to https://emarsden.github.io/pssh-box-wasm/generate/ and copy it to l3keys.py

    Easier is to just use hell3.py but I wanted to know a bit about the procedure
    Don't forget there is a debug l3.py https://forum.videohelp.com/threads/414835-Pywidevine-l3-py-Two-versions-for-debugging...ps#post2738357.
    Noob Starter Pack. Just download everything DRM.
    https://files.videohelp.com/u/301890/hellyes2.zip
    Quote Quote  



Similar Threads

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