Angela you can me help?
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
Results 91 to 114 of 114
Thread
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!Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-Postbox- Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-Postbox 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- --[----->+<]>.++++++++++++.---.--------.
[*Have questions about widefrog? You can find all your answers here*] I'm trying to get keys from here
which has a generic mpd and license server URLCode:https://www.ertflix.gr/epg/channel/ept1-live
Code:https://ertflix.s.llnwi.net/ertlive/ert1/encdef/index.mpd
I have trouble I think getting the PSSH value. EME logger has this responseCode:https://ertflix.la.drm.cloud/acquire-license/widevine
following this guideCode:[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==
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.
I'm getting 404 when I try to play this live.. Maybe geo restricted ? (Indeed geo restricted to grece)
Here is the widevine pssh :Try to use : https://emarsden.github.io/pssh-box-wasm/decode/Code:AAAAY3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEMIARIQNw4LQqRoUpWMq+4a2w6T3BoFaW5zeXMiJDM3MGUwYjQyLWE0NjgtNTI5NS04Y2FiLWVlMWFkYjBlOTNkYzIA
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?Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-PostboxI tried with : https://www.ertflix.gr/epg/audition/prg.421914-ept1-live-3961309
mpd :pssh (obtained from keyid = '370E0B42-A468-5295-8CAB-EE1ADB0E93DC') :Code:https://ertflix.s.llnwi.net/ertlive/ert1/encdef/index.mpd
Code:AAAAMnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABISEDcOC0KkaFKVjKvuGtsOk9w=
key :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)
You have to fill custom data.Code:370e0b42a46852958cabee1adb0e93dc:658649140edf4e1063887d588d2c46c4
- Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-Postbox 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 afterwardsLast edited by Hackerpcs; 14th Jun 2024 at 07:27.
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.Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-PostboxThe script I posted here is smaller and works fine. https://forum.videohelp.com/threads/411862-Beyond-WKS-KEYS/page4#post2739490
- Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-Postbox 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
and also how does hell3.py obtain a different PSSH, yet both result in the same correct keyMPD 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.
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.But it wasn't good enough. It only mostly worked.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
Last edited by A_n_g_e_l_a; 14th Jun 2024 at 11:22.
Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-PostboxI 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.
Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-Postbox- --[----->+<]>.++++++++++++.---.--------.
[*Have questions about widefrog? You can find all your answers here*] - Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-Postbox 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:
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*]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?
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#post2739239Do not PM me please. Just ask your question here!
https://forum.videohelp.com/threads/413534-From-My-PostboxOh 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*]
Similar Threads
wks-keys giving out wrong keys
By swappyison in forum Video Streaming DownloadingReplies: 21Last Post: 6th Aug 2023, 12:03wks-keys or TPD-Keys cmd.exe errors
By euphonic in forum Video Streaming DownloadingReplies: 1Last Post: 25th Jun 2023, 14:24WKS-KEYS help
By Gruchemuche in forum Video Streaming DownloadingReplies: 1Last Post: 2nd Oct 2022, 08:55need help with wks-keys
By ahmedani in forum Video Streaming DownloadingReplies: 1Last Post: 20th Jul 2022, 03:15Wks-keys
By Fjullekulle in forum Video Streaming DownloadingReplies: 10Last Post: 12th Jul 2022, 04:01
Visit our sponsor! Try DVDFab and backup Blu-rays!