Thanks for the guidance, I'll see how this thread goes and what I find, otherwise I'll create a dedicated one for the video host as I suspect over time this will become more common. Thanks for the pointer towards channel 4, I shall compare and see if there are any similarities.
I'll be sure to share anything I find.
+ Reply to Thread
Results 121 to 150 of 223
-
-
I was using it for a little while whilst still learning, but having interrogated your code, I've been able to build myself a nice little UI which works perfectly for those sites that use boltdns and for some other sites I use regularly.
So thanks again for your write ups and shared scripts @A_n_g_e_l_a. They've made my learning experience much easier.Last edited by billybanana; 30th Jan 2024 at 00:13.
-
Thanks for the feedback and well done for getting there.
Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
Hello, I'm newly registered in the forum but a very ancient reader, I've got my " two magic files" following your great tutorial, Android Studio method, I've tried too many Python scripts "widevine_keys" "WKS-KEYS" yours, "WKS-KEYS" by CrymanChen, and " WKS-KEYS " by others... no way ; Streamfab is broken for noorplay, the chrome hacked extension is broken too.
So, this is what I get with HTTP Toolkit :
[Attachment 76738 - Click to enlarge]
[Attachment 76739 - Click to enlarge]
[Attachment 76740 - Click to enlarge]
[Attachment 76741 - Click to enlarge]
Can you please make a specific script that reads a text file where I copy-past the response body (last screenshot), and give the so desired keys? -
You've made the same mistake we all make, but you've made yours in public. What you show in your image of licence Request, shown in httpToolKit, is the data that the BROWSER sends to get keys to decrypt the video the BROWSER then plays.
To get YOUR keys you mimic the browser's request and pass the response to your CDM which you got from Cedric's guide. l3.py makes the request and deals with the response. And if everything is in order produces the keys. My guides say start with simple site. I even give an example. Clearly you haven't and clearly you misunderstand the process, as a consequence.
If you have WKS-KEYS you'll have l3.py which is THE script to use. You post your found data; PSSH and Licence Url. And you put any headers you see being used (see httptoolkit request headers) in the headers.py in the same folder as l3.py.
Copy the Licence cURL to curlconverter.com to get your headers.py content. x-session data appears to be needed.
I understand you'll have added difficulty working in a language that is not your mother-tongue and of course age adds to your difficulty as remembering becomes a problem. I know all about that. But age isn't a good enough reason for script begging. Age is only a barrier if you let it be.
Study the stickies again. This time at each section ask yourself ' Do I understand what I've just read?' Each part builds on the earlier parts; make sure your foundations are secure.Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
You're right about the mother-tongue but I'me just 46 years old
I'm not so noob, I've learned (basic 1.0 and ZX80 Assembly in Amstrad CPC 464), Visual Basic, Javascript, PHP and WLangage, I missed some episodes like Pascal, Java, C and Python.
I was thinking that the body response (my 4th screenshot) is the last step of your diagram and was independent of the browser and session.
[Attachment 76748 - Click to enlarge]
But I was wrong.
Please believe me, I've tried dealing with curlconverter and changing the header.py but will try again and again.
Thank you.Last edited by moaBoBmArLeY; 3rd Feb 2024 at 05:00.
-
but a very ancient readerNoob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
lol, I mean I was reading this from many years, dvd authoring edting BD menus ...etc, and the date of my subscription does'nt reflect the reality, very ancient reader not very ancient person.
-
LOL
English lesson for you:-
When you place an adjective in front of a noun, the meaning of the noun is modified. Ancient is an adjective, reader is a noun
One meaning of reader is someone who reads - a person. Ancient means having a great age. thus 'ancient reader' means of reader of great age. Long-term reader; prolific reader might convey your meaning better.Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
Hello, it's me again, I need some help if possible, this is what I get with HTTP Toolkit:
[Attachment 76765 - Click to enlarge]
[Attachment 76766 - Click to enlarge]
My header.py is like that:
Code:import requests headers = { "Accept":"*/*", "Accept-Encoding":"gzip, deflate, br", "Accept-Language":"fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7", "Connection":"keep-alive", "Content-Length":"183", "content-type":"application/json", "Host":"vdrm.mobiotics.com", "Origin":"https://noorplay.com", "Referer":"https://noorplay.com/", "sec-ch-ua":'"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"', "sec-ch-ua-mobile":"?0", "sec-ch-ua-platform":'"Windows"', "Sec-Fetch-Dest":"empty", "Sec-Fetch-Mode":"cors", "Sec-Fetch-Site":"cross-site", "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", "x-session":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWJzY3JpYmVyaWQiOiJFVVNZeHdKTjB1a3AiLCJzdWJzY3JpYmVybmFtZSI6Itin2YHYqtix2KfYttmKIiwiZW1haWwiOiJmYXllem1vdW5pcjc3QGdtYWlsLmNvbSIsInByb2ZpbGVpZCI6IkVVU1l4d0pOMHVrcCIsImtpZHNtb2RlIjoiTk8iLCJob21lY291bnRyeSI6Ik1BIiwidmlzaXRpbmdjb3VudHJ5IjoiTUEiLCJkZXZpY2VpZGhhc2giOiIyOTE4OTdkNzM0ZWQ2MDhmZDY3NGVjOWJkMjM2ZGZkMTk2YzhlMzk1IiwiZGV2aWNlaWQiOiIyOTYyMTcyOTMyMTQxNTQ3IiwiZGV2aWNldHlwZSI6IlBDIiwiZGV2aWNlb3MiOiJXSU5ET1dTIiwiYXBwdmVyc2lvbiI6IjQ2LjQuMCIsImlwIjoiMTUuMTU4LjU1LjIwNSIsIkdlb0xvY0lwIjoiMTA1LjE1OS4xOTQuNjciLCJpc3N1ZXIiOiJub29ycGxheSIsImV4cGlyZXNJbiI6MTgwMDAsInByb3ZpZGVybmFtZSI6Ik5vb3JQbGF5IiwiaWF0IjoxNzA3MDAyNjYwLCJleHAiOjE3MDcwMjA2NjAsImlzcyI6Im5vb3JwbGF5In0.p-PGEVEhttO547jFe4S9e9h7q32GcHElZ2yaPzTEFO4", } json_data = { "payload": "CAQ=", "contentid": "qJBeeluNkNSE", "providerid": "noorplay", "timestamp": 1707003211, "drmscheme": "WIDEVINE", "customdata": { "packageid": "1234Cn7F4owg3m4o", "drmtoken": "OOkbyu7Q" }, } response = requests.post('https://vdrm.mobiotics.com/prod/proxy/v1/license/widevine', headers=headers, json=json_data)
[Attachment 76769 - Click to enlarge]
I think something is wrong with the header. -
-
Hello, when I add those lines in l3.py I get an error that response is not defined.
If add to header.py I get response object has no attribute 'status'.
So I've commented the line in fault and get:
Code:{"body": "CAUSxwUKwQIIAxIQFwW5F8wSBIaLBjM6L3cqjBiCtIKSBSKOAjCCAQoCggEBAJntWzsyfateJO/DtiqVtZhSCtW8yzdQPgZFuBTYdrjfQFEEQa2M462xG7iMTnJaXkqeB5UpHVhYQCOn4a8OOKkSeTkwCGELbxWMh4x+Ib/7/up34QGeHleB6KRfRiY9FOYOgFioYHrc4E+shFexN6jWfM3rM3BdmDoh+07svUoQykdJDKR+ql1DghjduvHK3jOS8T1v+2RC/THhv0CwxgTRxLpMlSCkv5fuvWCSmvzu9Vu69WTi0Ods18Vcc6CCuZYSC4NZ7c4kcHCCaA1vZ8bYLErF8xNEkKdO7DevSy8BDFnoKEPiWC8La59dsPxebt9k+9MItHEbzxJQAZyfWgkCAwEAAToUbGljZW5zZS53aWRldmluZS5jb20SgAOuNHMUtag1KX8nE4j7e7jLUnfSSYI83dHaMLkzOVEes8y96gS5RLknwSE0bv296snUE5F+bsF2oQQ4RgpQO8GVK5uk5M4PxL/CCpgIqq9L/NGcHc/N9XTMrCjRtBBBbPneiAQwHL2zNMr80NQJeEI6ZC5UYT3wr8+WykqSSdhV5Cs6cD7xdn9qm9Nta/gr52u/DLpP3lnSq8x2/rZCR7hcQx+8pSJmthn8NpeVQ/ypy727+voOGlXnVaPHvOZV+WRvWCq5z3CqCLl5+Gf2Ogsrf9s2LFvE7NVV2FvKqcWTw4PIV9Sdqrd+QLeFHd/SSZiAjjWyWOddeOrAyhb3BHMEwg2T7eTo/xxvF+YkPj89qPwXCYcOxF+6gjomPwzvofcJOxkJkoMmMzcFBDopvab5tDQsyN9UPLGhGC98X/8z8QSQ+spbJTYLdgFenFoGq47gLwDS6NWYYQSqzE3Udf2W7pzk4ybyG4PHBYV3s4cyzdq8amvtE/sNSdOKReuHpfQ="}
Code:#print(response.status) print(response.text) print(response)
Last edited by moaBoBmArLeY; 3rd Feb 2024 at 19:47.
-
Looks like l3 is not going to work with noorplay. There is a json packet that needs to be first collected then returned. The one you post is a one off and any download script will first need to obtain its own.
[Attachment 76778 - Click to enlarge]
This json packet is one time use only and the BROWSER has used it already.
noorplay appears to use a similar approach to option 4 in the first post.
Moorplay is not a beginners site and questions about it need to be asked in the main forum. Someone may have a script. Please don't continue here.Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
RTE doesn't work anymore, right?
Results:
Code:PSSH: AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQzhoc9/Vsz3FwCbj/vfFNDhoIdXNwLWNlbmMiGHpob2M5L1ZzejNGd0Niai92ZkZORGc9PSoAMgA= License URL: https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm?token=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxMzYxNDgsImlhdCI6MTcwNzA0OTc0ODEyNywianRpIjoiYjU2ZDcwN2ItNDk0Mi00NjllLWI1ZjQtOWRkNDFkOTY0YjkzIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.dsHW5TnK_X-UV--BYN1z2HHMqFp1CSzIbNZK06nyCKJ0esBe3RtJNCIJQHLR7FCGqxsaE8b1qp4cuiVp5KqaOWXb0gLWQCvIGuWNnrvd1fpVpOrZW4mHlXSEfeRrWfgPlx1I126J-te9fZBmG8MpsBMCBnvB3E8BKW_lTyNjB-1kR3NNNhXDBi7BRDPwxXvHZcahPR2hWy6d802yl4cRfP_9slsC8wmAQ4kw56kGko0qvTLoLN73Jj_34eIChm6YL91qvvmj2KZ1vgV8mDr5tWItkEL7ScTdJB510kMYfMwxwx87g_2klU51V8_bCgXn2RxxWvnsjQZPwZQSMqVT8A&account=http%3A%2F%2Faccess.auth.theplatform.com%2Fdata%2FAccount%2F2700894001&form=json&schema=1.0 PSSH obtained. AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQzhoc9/Vsz3FwCbj/vfFNDhoIdXNwLWNlbmMiGHpob2M5L1ZzejNGd0Niai92ZkZORGc9PSoAMgA= license response status: <Response [200]> server reports: {"title":"com.theplatform.module.exception.ValidationException","description":"Widevine generateLicense call against [https://license.widevine.com/cenc/getlicense/theplatformrte] failed with status [ACCESS_DENIED]: drm-serial-number-has-been-individually-revoked","responseCode":422,"correlationId":"b554ed8b-5502-410c-a29d-59614b97935e","isException":true} server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.
headers.py
Code:import requests headers = { 'Accept': '*/*', 'Accept-Language': 'en-US,en;q=0.9', 'Connection': 'keep-alive', 'Origin': 'https://www.rte.ie', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/106.0.0.0', 'content-type': 'text/plain;charset=UTF-8', 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Opera";v="106"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', } '''params = { 'token': 'eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxMzYxNDgsImlhdCI6MTcwNzA0OTc0ODEyNywianRpIjoiYjU2ZDcwN2ItNDk0Mi00NjllLWI1ZjQtOWRkNDFkOTY0YjkzIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.dsHW5TnK_X-UV--BYN1z2HHMqFp1CSzIbNZK06nyCKJ0esBe3RtJNCIJQHLR7FCGqxsaE8b1qp4cuiVp5KqaOWXb0gLWQCvIGuWNnrvd1fpVpOrZW4mHlXSEfeRrWfgPlx1I126J-te9fZBmG8MpsBMCBnvB3E8BKW_lTyNjB-1kR3NNNhXDBi7BRDPwxXvHZcahPR2hWy6d802yl4cRfP_9slsC8wmAQ4kw56kGko0qvTLoLN73Jj_34eIChm6YL91qvvmj2KZ1vgV8mDr5tWItkEL7ScTdJB510kMYfMwxwx87g_2klU51V8_bCgXn2RxxWvnsjQZPwZQSMqVT8A', 'account': 'http://access.auth.theplatform.com/data/Account/2700894001', 'form': 'json', 'schema': '1.0', }''' data = '{"getWidevineLicense":{"releasePid":"xrkxDwUcsMVG","widevineChallenge":"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"}}' '''response = requests.post( 'https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm', params=params, headers=headers, data=data, )'''
l3.py
Code:# -*- coding: utf-8 -*- # Module: widevine_keys # Created on: 10.12.2021 # Authors: medvm # Version: 2.1.0 import base64, requests, sys, xmltodict import headers # import cookies import json from cdm import cdm, deviceconfig from base64 import b64encode from getPSSH import get_pssh from wvdecryptcustom import WvDecrypt from cdm.formats import wv_proto2_pb2 as wv_proto2 from urllib.parse import urlparse import logging pssh = input('\nPSSH: ') #MDP_URL = input('\nInput MPD URL: ') lic_url = input('License URL: ') #lic_url = 'https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm?token=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxNzEwMDcsImlhdCI6MTcwNzA4NDYwNzc0MiwianRpIjoiNjczNzcxZmMtOGUxMi00YjBiLThkZmMtNGEzN2JhM2ZkZDUyIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.wiqtegiISa9Ey8FL8cAXmbI8PP3Gq5a3AYwwyzhgI4nRz4jN4TOrWnCggUXPWKyumrAjKyb_VA8IADWrU5n7P8O2X1o5JUIkc41gw0GgmPMy30XQcpBbIzNhvJ_0vgt_7-59nupDU1_a0JFLzWYsErJCvSHucqc5vUNLtqkavzI2G61i6Y2yhpulwOh5HvRwGvDcgiF2B3KlkTa0kx-Kv8qMOoQJPpmFqRiqMnsTr--8GNNHSWA8TwesGop4aV-LIHwNtR4x4d02XTu38-EWMj03entm7gysZrI-PuFEaw1XbSlVokWR8WCvXVcmG6LTaOVtsI3qZJOc4ivK0EKr0w&account=http%3A%2F%2Faccess.auth.theplatform.com%2Fdata%2FAccount%2F2700894001&form=json&schema=1.0' #pssh = 'AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQK8FZDnIyNxKXlOKPPEXqAhoIdXNwLWNlbmMiGEs4RlpEbkl5TnhLWGxPS1BQRVhxQWc9PSoAMgA=' responses = [] license_b64 = '' #pssh = get_pssh(MDP_URL) params = None params = urlparse(lic_url).query print(f'{chr(10)}PSSH obtained.\n{pssh}') def WV_Function(pssh, lic_url, cert_b64=None): global license_b64 wvdecrypt = WvDecrypt(init_data_b64=pssh, cert_data_b64=cert_b64, device=deviceconfig.device_android_generic) raw_request = wvdecrypt.get_challenge() request = b64encode(raw_request) signature = cdm.hash_object # rte.ie support # read headers.py produced from cURL of up-to-date license # to extract releasePid from RTE licence url myjson = json.loads(headers.data) pid = myjson["getWidevineLicense"]["releasePid"] responses.append( requests.post( url=lic_url, headers=headers.headers, params=params, json={ "getWidevineLicense": { "releasePid": pid, "widevineChallenge": str(request, "utf-8"), }, }, ) ) for idx, response in enumerate(responses): try: str(response.content, "utf-8") except UnicodeDecodeError: widevine_license = response print(f"{chr(10)}license response status: {widevine_license}{chr(10)}") break else: if len(str(response.content, "utf-8")) > 500: widevine_license = response print(f"{chr(10)}license response status: {widevine_license}{chr(10)}") break if idx == len(responses) - 1: print(f"{chr(10)}license response status: {response}") print(f'server reports: {str(response.content, "utf-8")}') print( f"server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.{chr(10)}" ) exit() lic_field_names = ["license", "payload", "getWidevineLicenseResponse"] lic_field_names2 = ["license"] open("license_content.bin", "wb").write(widevine_license.content) try: if str(widevine_license.content, "utf-8").find(":"): for key in lic_field_names: try: license_b64 = json.loads(widevine_license.content.decode())[key] except: pass else: for key2 in lic_field_names2: try: license_b64 = json.loads(widevine_license.content.decode())[ key ][key2] except: pass else: license_b64 = widevine_license.content except: license_b64 = b64encode(widevine_license.content) wvdecrypt.update_license(license_b64) Correct, keyswvdecrypt = wvdecrypt.start_process() if Correct: return Correct, keyswvdecrypt correct, keys = WV_Function(pssh, lic_url) print() for key in keys: print('--key ' + key)
-
I've no idea if my script still works or not.
I do know you haven't read the screen-acres of dross you posted. Look what the license server said
failed with status [ACCESS_DENIED]: drm-serial-number-has-been-individually-revoked","responseCode":422,"correlationId":"b554ed8b-5502-410c-a29d-59614b97935e","isException":true}Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
I do read it, just don't get it.
I'm using this one: https://github.com/medvm/widevine_keys
If I am wrong, do you have any suggestions? -
Hello, you need 2 magic files, just follow this tutorial => You don't have an Android Device or don't want to buy one to get the two magic files to decrypt your video with drm?
-
-
I am lucky with new CDM dumping.
But out of luck in getting keys from RTE.
However, it's strange that license URL looks different. i.e. no data field when doing copy cURL, and params only be seen in url, even url itself coming from a new domain.
Before
Code:https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm?token=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxNzEwMDcsImlhdCI6MTcwNzA4NDYwNzc0MiwianRpIjoiNjczNzcxZmMtOGUxMi00YjBiLThkZmMtNGEzN2JhM2ZkZDUyIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.wiqtegiISa9Ey8FL8cAXmbI8PP3Gq5a3AYwwyzhgI4nRz4jN4TOrWnCggUXPWKyumrAjKyb_VA8IADWrU5n7P8O2X1o5JUIkc41gw0GgmPMy30XQcpBbIzNhvJ_0vgt_7-59nupDU1_a0JFLzWYsErJCvSHucqc5vUNLtqkavzI2G61i6Y2yhpulwOh5HvRwGvDcgiF2B3KlkTa0kx-Kv8qMOoQJPpmFqRiqMnsTr--8GNNHSWA8TwesGop4aV-LIHwNtR4x4d02XTu38-EWMj03entm7gysZrI-PuFEaw1XbSlVokWR8WCvXVcmG6LTaOVtsI3qZJOc4ivK0EKr0w&account=http%3A%2F%2Faccess.auth.theplatform.com%2Fdata%2FAccount%2F2700894001&form=json&schema=1.0
Code:https://link.eu.theplatform.com/s/1uC-gC/media/OJujtJIVcWq7?auth=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcyMjg3NDUsImlhdCI6MTcwNzE0MjM0NTYzNywianRpIjoiYzM3Nzg1ODMtNGViNy00OWRkLWE3OTMtMGIyNTI4OWE3MjkyIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.m6hYHuYOuZqPKxx2C_yTaNYfeo3zUZcyGgQeX0foztkAtsuLxexsJ1Z9aFln3Xo43ci176J9bFey8plOg1f4x0gcY35v7hWNymIVgXByY4CO0YmMyKpsv_TZ3g0UB6rCF7sXD45JLsFXvFpu9S_tiWHd9hMi8LjYOPize9WRBhMPR1lHPFO68GB8mHRMprR8zYyhKZASpXt-katZj5VTTeDizRk2mPoNKLr40pAAZFD81KFMiTmcoVfu3JbMOyUEQ_gJCYLM2N9Vc87mHpDgxrYd6DQQ-c6uVXk2g5Lg5L28GT5LtKVWv01zPgdD4tgYaLI03LfByv9mOxk61pmbaA&format=SMIL&embedded=true&tracking=true&policy=121498957&iu=/3014/RTE_Player_VOD/Desktop_Web/NotRegistered&assetTypes=default:isl&formats=mpeg-dash
Code:license response status: <Response [200]> Traceback (most recent call last): File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\l3rte.py", line 104, in <module> correct, keys = WV_Function(pssh, lic_url) File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\l3rte.py", line 100, in WV_Function wvdecrypt.update_license(license_b64) File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\wvdecryptcustom.py", line 58, in update_license self.cdm.provide_license(self.session, license_b64) File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\cdm\cdm.py", line 285, in provide_license session.session_key = oaep_cipher.decrypt(license.SessionKey) File "D:\Portable\Portable Python-3.10.5 x64\App\Python\lib\site-packages\Cryptodome\Cipher\PKCS1_OAEP.py", line 167, in decrypt raise ValueError("Ciphertext with incorrect length.") ValueError: Ciphertext with incorrect length.
-
You got a good response (200).
You are in the right direction, now you should look what you have in in those lines [alt+g] in python editor and enter the line number.
You can add a print(response) too to check the type, array or string etc. ... -
Bravo! I've succeeded. Thank you very much.
video url:
https://www.rte.ie/player/series/fair-city/SI0000000564?epguid=IH10000987-23-0197
key:
Code:--key a1214849421496d0c2b52add1f8eb820:124bc09b0d1488a0a64976e57e523d87
-
Sure, I have done two things at the same time, no idea which one is a true solution.
1. Used the Before's (not After's one) License URL from my previous reply, that is a correct one.(You will send a request with "releasePid" and "widevineChallenge"). Other urls were just a trap.
2. Reordered a request arguments as same as you found them in cURL(converter) command.
But, that is not work in most cases, I mean in more complex streaming or some other websites.
So, I have another question:
If the message is the same ("ValueError: Ciphertext with incorrect length."), but get 403 (no response or accessed denied),
in this case, would it be CDM has been dumped from the old/obsoleted devices?
Or are there anything we can do or inspect? Or just give up? -
It means that the value that you have to decode have an unexpected length.
I got that problem in the past 2 days because the returned value was something like that:
array (boolean,new array(desired values,desired values,desired values)).
And to bypass the problem I've decoded first array[1].
Or maybe you should just add an exit if response status is not 200 to not try to decode something that can't be decoded.
Something like that:
Code:if response.status_code == 200: ... .... ..... print('[+] data has been reterived successfully.') else: print(f"[-] couldn't retrive data.\n\tresponse: {response.text}") exit()
-
I've checked the RTE downloader given at post #2. It was the script I assumed you were referring to earlier. It wasn't complete and needed an import I hadn't supplied but it is all fixed now.
All you need is a working CDM in WKS-KEYS; put RTE.py from post #2 https://forum.videohelp.com/threads/407216-Decryption-The-Dungeon-of-Despair#post2669285 inside WKS-KEYS.
Read the script preamble and follow instructions.
You also need the stream detector plugin to provide the mpd in table-entry form.
The license is copied as cURL - not just the address so it contains all the parameters.
The script use N_m3u8DL-RE and it and also the stuff it calls needs to on your system and in Path so the script may find it. Do your own research in the forum; much help has been posted about getting N_m3u8DL-RE running.
[Attachment 76800 - Click to enlarge]Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
Yes, if it's like that, I think I can deal with. But in my case (in the real world), it returns only [<Response [403]>] from the responses. , then can't go any further.
Can we continue discuss by PM. (the details will be against board rules)
Similar Threads
-
Decryption and the Temple of Doom
By A_n_g_e_l_a in forum Video Streaming DownloadingReplies: 609Last Post: 28th May 2025, 08:20 -
An issue with mp4 decryption
By CrymanChen in forum Video Streaming DownloadingReplies: 16Last Post: 27th Apr 2022, 06:43 -
widevine decryption help
By birbal1 in forum Video Streaming DownloadingReplies: 2Last Post: 5th Dec 2021, 10:11 -
Help with video download and decryption
By herschel in forum Video Streaming DownloadingReplies: 4Last Post: 26th Jul 2021, 04:31 -
How do I get the decryption key
By Bakekalu in forum Video Streaming DownloadingReplies: 6Last Post: 5th Jul 2021, 01:25