I've been following this guide: https://cdm-project.com/How-To/Obtaining-keys-generic-services
So far i got PSSH and license url, but all requests I send to license url are 400 Bad Request
Yes I searched some old threads: https://www.videohelp.com/search?siteurl=forum.videohelp.com&q=drmtoday some said to put ?specConform=true at the end of license url however that did nothing...
I tried to copy the request directly from DevTools and send it again, however I get 400 too (which is weird because dt-custom-data stays the same):
(i did right click then copy as fetch and pasted in console)
Here is all the information (i dont care about leaking credentials, i used a temp mail account)
PSSH:License url:Code:AAAAYXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEEIARIQMk/qxEg9OB+uANacuI/tKRoIY2FzdGxhYnMiGE1rL3F4RWc5T0IrdUFOYWN1SS90S1E9PTIHZGVmYXVsdA==Headers (copied from browser dev tools):Code:https://lic.drmtoday.com/license-proxy-widevine/cenc/And by the way, could anyone teach me how to use cdrm-project.com? What do i put inside the build info field?Code:dt-custom-data: eyJ1c2VySWQiOiI3NzM4OTU5Iiwic2Vzc2lvbklkIjoiSjJLSl84LWw5bC1oay0zdExaLUp6TnFwemptOWhWNUtYT2ZFc1RFSkhZc0xjTVc3QXRhendTdHIzOEFkblVNdUlkUk1ZLTJxWVR1RlZxY0hka19JYmcuLiIsIm1lcmNoYW50IjoiYXZpaW9uMiJ9
On a side note I got some data from wvdumper for android, here are logs: https://pastebin.mozilla.org/VnQ4duqx/raw
Again, thanks anyone who can help me, I wish to know what I am doing wrong here
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 1 to 30 of 33
Thread
-
-
Have you tried License url: https://lic.drmtoday.com/license-proxy-widevine/cenc/?specConform=true And the pssh is the correct one
-
-
I think the site is region locked to my country, here is MPD url:
Code:https://cdn1.oiv.hr/hrtnpvrorigin/1203877064.smil/manifest.mpd
Code:import requests, base64, json headers = { 'Accept': 'application/json, text/plain, */*', 'Accept-Language': 'en-GB,en;q=0.9,hr-HR;q=0.8,hr;q=0.7,mk-MK;q=0.6,mk;q=0.5,en-US;q=0.4', 'Authorization': 'Client 6Y8ZsSEtOkOG6PppWTEGsAxS47HrFEGE2jjII1eutjgA3gks1Zni4EenmRRKaPNrhQ', 'DeviceId': '63944e94-0046-435f-ae71-b92c45bc4728', 'DeviceTypeId': '6', 'IPAddress': '123.45.67.89', # this field 'OperatorReferenceId': 'hrt', 'Origin': 'https://hrti.hrt.hr', 'Referer': 'https://hrti.hrt.hr/home', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 'content-type': 'application/json', } json_data = { 'ContentType': 'thepg', 'ContentReferenceId': '1203877064', 'ContentDrmId': 'hrtnpvrorigin_1203877064.smil', 'VideostoreReferenceIds': None, 'ChannelReferenceId': '40013', 'StartTime': '/Date(1681229280000)/', 'EndTime': '/Date(1681232280000)/', } def main(): r = requests.post('https://hrti.hrt.hr/api/api/ott/AuthorizeSession', headers=headers, json=json_data) return {'dt-custom-data': base64.b64encode(json.dumps({"userId": "7738959", 'sessionId': r.json()['Result']['DrmId'], "merchant": "aviion2"}).replace(' ', '').encode()).decode())
EDIT: I tried using WKS-KEY (from github), this is the output: unable to parse license - check protobufs (prior to that I had to set environment variable PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python becauseCode:TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower). More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
Last edited by TheGreatUnknown90; 14th Apr 2023 at 05:34. Reason: added some info
-
Update: cdrm-project worked, which means I'm able to use it practically without any android cdm (device_client_id_blob and device_private_key)
However I'm still unsure what I was doing wrong on my side -
Nice. Sometimes it's just a matter of passing the right headers, which you obviously did since it worked. Just remember what headers you used for the next time.
-
All right, I saw what site you're using in your headers and checked it out.
The only thing you have to do is to grab the dt-custom-data from the Headers tab in dev tools and run the request within 60 seconds and it'll work. I tried with a few videos and didn't experience any issues. -
I made a script to generate the dt-custom-data header for me (using an account's auth token on that site) however I cannot get it working using locally dumped cdm device id from android studio virtual phone (I followed the sticky thread). The license server denies every request with 400 Bad Request. That's what I'm trying to fix, so I don't have to rely on a third party service for decryption
-
Using WKS (or any other tool) with "Jednostavno Raymond Blanc | E01"
headers.py:
Code:import requests headers = { 'dt-custom-data': 'eyJ1c2VySWQiOiI4OTE3MDUxIiwic2Vzc2lvbklkIjoiZUExRjNoUk1pM2VLMEpGQnZWdm9uY3VNaENxRUVrTWlMbzBvVHZob3lUT0NnZHJfR2lKYVNZYVlfdVVaUFVXV2FkWEVfQU1STDhNY1pqa21QQm9fZkEuLiIsIm1lcmNoYW50IjoiYXZpaW9uMiJ9', }
Code:AAAAYXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEEIARIQBOQL8KeEM/qj16d5p1Eh2RoIY2FzdGxhYnMiGEJPUUw4S2VFTS9xajE2ZDVwMUVoMlE9PTIHZGVmYXVsdA==
Code:https://lic.drmtoday.com/license-proxy-widevine/cenc/?specConform=true
Code:--key 04e40bf0a78433faa3d7a779a75121d9:34535db56e83e5dd9594c3046a849e5c
-
Thanks, could you please tell me what to do with device_client_id_blob and device_private_key in order to make WKS work, if that matters at all? The output I get from WKS is:
Code:unable to parse license - check protobufs
EDIT: nevermind, I fixed it. I used one of wks-key fork from github but unfortunately I lost the original link because i used incognito
Thanks once again, and cheersLast edited by TheGreatUnknown90; 14th Apr 2023 at 14:22.
-
Hello, everyone.
I followed the procedure shown in this video (use FIREFOX to open it): https://web.archive.org/web/20220301190239/https://streamable.com/umoszy
but https://cdrm-project.com/ always returns me this error: Error 400: Custom Data is Required
There's no mention of this error in the FAQ and the cdrm-project Discord server is dead.
These are my values:
PSSH: AAAATHBzc2gBAAAA7e+LqXnWSs6jyCfc1R0h7QAAAAE01F89WE RGurtJLER4sfTSAAAAGBIQNNRfPVhERrq7SSxEeLH00kjj3JWb Bg==
License is:
https://kms.watchcorridor.com/v1/widevine?cd=eyJCeXBhc3MiOm51bGwsIkV4cGlyeSI6IjIwMjMtM...9JZCI6NTMzMn0=
but I wrote it as: https://kms.watchcorridor.com/v1/widevine
Headers:
accept-encoding: gzip, deflate, br
accept-language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7
content-length: "4194"
origin: https://www.corridordigital.com
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
I feel that I'm next to the solution but I missed something.
Any Help?
Thanks. -
1) double post. you can edit ... and delete text on first or second double post
2) you're sure about your pssh ? i think is wrong pssh ... share here mpd or better video link
3) cdrm-server isn't dead
4) don't trim lic url. the token is included in the link, so need full lic url -
1) Sorry for the double post. I didn't see it and now I don't know how to cancel it. I've just edited it to something different.
2) I'm not sure but I followed this video step by step (use FIREFOX to open it): https://web.archive.org/web/20220301190239/https://streamable.com/umoszy
I put here the links:
This is the MPD: https://video.watchcorridor.com/2204f46a-2145-4045-9dfd-d1aa22874301/dash/68031d39-7d2...d6b93df0dc.mpd
This is the mp4: https://video.watchcorridor.com/2204f46a-2145-4045-9dfd-d1aa22874301/dash/68031d39-7d2...df0dc_3840.mp4
3) The Discord server in unaccessible.
4) I used both trimmed and full link and it returns 2 different errors.
Thanks for the help. -
you have already had your goal in your second equal thread, but still the discord server works fine. maybe issue by your side only
-
Hello.
I solved on the other side thanks to you and the final help of another user.
Thanks.
If could help anybody, the other thread is here: https://forum.videohelp.com/threads/409388-Problems-with-cdrm-project-com#post2688087 -
-
I have tried to change l3.py and add this in that dt_custom_data = input('\nCData: ') and WV_Function(pssh, lic_url, dt_custom_data)
I got error like this failed to parse cert as SignedMessage
failed to parse service certificate
unable to parse license - check protobufs
Can Anyone help me how to key? -
Stop PM.
Post here and people who come here can follow this thread and find a solution
Your site
https://hrti.hrt.hr/live/tv
The problem is your headers
You just need "dt-custom-data"
your key
Code:edd08df18e523831bb1849eb897f20e0:5d936f87fd0aab2aba6578d1342d5041
-
Thanks for answer cedric.
Yes, I know that need to have only dt-custom-data.
I have this in header:
import requests
headers = {
'dt-custom-data': 'eyJ1c2VySWQiOiJhbm9ueW1vdXNocnQiLCJzZXNzaW9uSWQiO iI3Z2xaYkNmVFAwVHUtQVdaYTEtTzJlSlIzZlZ4YU1peWNlQTB IU0FDc0puUEkzdDdqa1R4VW4zeDV6VFhCeGxKVmtmaXVxeDdpN jRyMUh6YzZIMkJwZy4uIiwibWVyY2hhbnQiOiJhdmlpb24yIn0 =',
}
But, always get errors.
Do you use WKS and default l3.py or custom l3.py?
If it is custom, can You share it?
Which portobuf do You use? I have 3.20.4 -
Also, I tried to use some version like one member post:
# -*- coding: utf-8 -*-
# Module: KEYS-L3
# Created on: 11-10-2021
# Authors: -∞WKS∞-
# Version: 1.1.0
import base64, requests, sys, xmltodict
import headers
from pywidevine.L3.cdm import cdm, deviceconfig
from base64 import b64encode
from pywidevine.L3.decrypt.wvdecryptcustom import WvDecrypt
pssh = input('\nPSSH: ')
lic_url = input('License URL: ')
token = input('Token: ')
def WV_Function(pssh, lic_url, cert_b64=None):
wvdecrypt = WvDecrypt(init_data_b64=pssh, cert_data_b64=cert_b64, device=deviceconfig.device_android_generic)
challengeb64 = str(b64encode(wvdecrypt.get_challenge()),"utf-8")
data = {"token":token,"widevineBody":challengeb64}
widevine_license = requests.post(url=lic_url, json=data, headers=headers.headers)
print(widevine_license.request.body)
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)
With that version, I get errors like this:
Unexpected end-group tag: Not all data was converted
license.ParseFromString(base64.b64decode(license_b 64))
Traceback (most recent call last):
File "l3_test.py", line 28, in <module>
correct, keys = WV_Function(pssh, lic_url)
File "l3_test.py", line 24, in WV_Function
wvdecrypt.update_license(license_b64)
File "C:\Test za kljuceve\Keys\WKS-KEYS\pywidevine\L3\decrypt\wvdecryptcustom.
py", line 58, in update_license
self.cdm.provide_license(self.session, license_b64)
File "C:\Test za kljuceve\Keys\WKS-KEYS\pywidevine\L3\cdm\cdm.py", line 275, i
n provide_license
session.session_key = oaep_cipher.decrypt(license.SessionKey)
File "C:\Users\PC\AppData\Local\Programs\Python\Python3 8-32\lib\site-packages\
Cryptodome\Cipher\PKCS1_OAEP.py", line 167, in decrypt
raise ValueError("Ciphertext with incorrect length.")
ValueError: Ciphertext with incorrect length. -
Wrong script, it can't parse the license.
As @cedric8528 said, pass the dt-custom-data to the program and it should work.
[Attachment 74122 - Click to enlarge]twitter @Cryman_Chen
email crymanchen@gmail.com -
Thanks for the answer.
I noticed one thing.
dt-custom-data on your image have 136 characters.
Mine has 200. I guess that could be problem.
When I put mine dt-custom-data in base64decode, I get this value:
{"userId":"anonymoushrt","sessionId":"Ozyqi_1tr_II dCAbWwrbknWb53R7iJDKLd5DHIOXiPKIkMcpPP0n7S852YwCeo 5XCzJTFwd8iDmgo5Fr-VaQhQ..","merchant":"aviion2"}
What value do you get when put your dt-custom-data in base64decode? -
this guy spam his issue for this link ... with PM to everybody. and the key is already available, thanks to cedric
-
Don't spam.
I am not such guy.
I have sent PM to you and cedric and I got answers from both of you that help will be in this topic.
I am sorry if I disturb You with PM.
It is easy to put x-dt-custom-data in header, but don't know where is problem.
Is it possbile to get l3.py which work, because default l3.py give some issues? -
No, cdm work - I tested other web site and got key.
What do You get when put dt-custom-data in base64 decode?
I got this:
{"userId":"anonymoushrt","sessionId":"ms8g6TsOV6fm 9SGt6GabtR_OxkD-D3IBRrR2ZOCODq5HcHGW8gW34fwDyiLQuUpfW2kxt4SOJyLMIB-USSoJfQ..","merchant":"aviion2"}
Also dt-custom-data which I got - have 200 characters, but CrymanChen image show that his data has 136 characters. Maybe that make problem - what do you think?
Similar Threads
-
browser won't play some widevine videos - license server denial?
By davidmaxwaterman in forum Newbie / General discussionsReplies: 0Last Post: 20th Mar 2023, 01:46 -
Am I doing this right? (requesting decryption key from license server)
By rajhlinux in forum Video Streaming DownloadingReplies: 56Last Post: 1st Apr 2022, 18:36 -
Lic with jsondata
By sangoku in forum Video Streaming DownloadingReplies: 3Last Post: 21st Feb 2022, 15:02 -
help with a post lic req
By sangoku in forum Video Streaming DownloadingReplies: 6Last Post: 21st Feb 2022, 00:32 -
can somebody help me with lic url?
By dkdb in forum Video Streaming DownloadingReplies: 0Last Post: 19th Dec 2021, 00:37