mirror of
https://cdm-project.com/Decryption-Tools/TPD-Keys.git
synced 2025-04-30 00:34:24 +02:00
v1.32
- Removed service certificate from generic - Added some JSON response handlers for generic script - Fixed Udemy in GUI mode
This commit is contained in:
parent
6b52e6ecf0
commit
221a2b74be
@ -240,7 +240,7 @@ def start_gui(wvd: str = None, api_key: str = None):
|
|||||||
if values['-PSSH-'] != '' and values['-OPTIONS-'] == 'Udemy' and values['-LIC_URL-'] != '' and values['-HEADERS-'] != '' and values['-COOKIES-'] != '':
|
if values['-PSSH-'] != '' and values['-OPTIONS-'] == 'Udemy' and values['-LIC_URL-'] != '' and values['-HEADERS-'] != '' and values['-COOKIES-'] != '':
|
||||||
if not values['-USE_API-']:
|
if not values['-USE_API-']:
|
||||||
try:
|
try:
|
||||||
_, key_out = Sites.Udemy.decrypt_udemy(wvd=wvd, in_pssh=values['-PSSH-'],
|
_, key_out = Sites.Udemy.decrypt_udemy(wvd=wvd, in_pssh=values['-PSSH-'], in_license_url=values['-LIC_URL-'],
|
||||||
license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-'])),
|
license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-'])),
|
||||||
license_curl_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-'])))
|
license_curl_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-'])))
|
||||||
window['-OUTPUT-'].update(f"{key_out}")
|
window['-OUTPUT-'].update(f"{key_out}")
|
||||||
@ -251,7 +251,7 @@ def start_gui(wvd: str = None, api_key: str = None):
|
|||||||
window['-OUTPUT-'].update(f"No API key")
|
window['-OUTPUT-'].update(f"No API key")
|
||||||
if api_key is not None:
|
if api_key is not None:
|
||||||
try:
|
try:
|
||||||
_, key_out = Sites.Udemy.decrypt_udemy_remotely(api_key=api_key, in_pssh=values['-PSSH-'],
|
_, key_out = Sites.Udemy.decrypt_udemy_remotely(api_key=api_key, in_pssh=values['-PSSH-'], in_license_url=values['-LIC_URL-'],
|
||||||
license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-'])),
|
license_curl_headers=ast.literal_eval(clean_dict(dict=values['-HEADERS-'])),
|
||||||
license_curl_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-'])))
|
license_curl_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-'])))
|
||||||
window['-OUTPUT-'].update(f"{key_out}")
|
window['-OUTPUT-'].update(f"{key_out}")
|
||||||
@ -367,7 +367,7 @@ def start_gui(wvd: str = None, api_key: str = None):
|
|||||||
if event == 'Source Code':
|
if event == 'Source Code':
|
||||||
webbrowser.open(url='https://cdm-project.com/Decryption-Tools/TPD-Keys')
|
webbrowser.open(url='https://cdm-project.com/Decryption-Tools/TPD-Keys')
|
||||||
if event == 'Version':
|
if event == 'Version':
|
||||||
sg.popup('Version 1.31', custom_text='Close', grab_anywhere=True)
|
sg.popup('Version 1.32', custom_text='Close', grab_anywhere=True)
|
||||||
|
|
||||||
# 4 - the close
|
# 4 - the close
|
||||||
window.close()
|
window.close()
|
||||||
|
@ -60,28 +60,8 @@ def decrypt_generic(wvd: str = None, license_curl_headers: dict = None, mpd_url:
|
|||||||
# open CDM session
|
# open CDM session
|
||||||
session_id = cdm.open()
|
session_id = cdm.open()
|
||||||
|
|
||||||
# get service certificate
|
# Generate the challenge
|
||||||
service_cert = requests.post(
|
challenge = cdm.get_license_challenge(session_id, pssh)
|
||||||
url=license_url,
|
|
||||||
data=cdm.service_certificate_challenge,
|
|
||||||
headers=license_curl_headers
|
|
||||||
)
|
|
||||||
if service_cert.status_code != 200:
|
|
||||||
print(f"Couldn't retrieve service cert\n{service_cert.content}")
|
|
||||||
return None, service_cert.content
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
service_cert = service_cert.content
|
|
||||||
cdm.set_service_certificate(session_id, service_cert)
|
|
||||||
except Exception as error:
|
|
||||||
print(f'an error occurred!\n{error}')
|
|
||||||
return None, error
|
|
||||||
|
|
||||||
# generate license challenge
|
|
||||||
if service_cert:
|
|
||||||
challenge = cdm.get_license_challenge(session_id, pssh, privacy_mode=True)
|
|
||||||
else:
|
|
||||||
challenge = cdm.get_license_challenge(session_id, pssh)
|
|
||||||
|
|
||||||
# send license challenge
|
# send license challenge
|
||||||
license = requests.post(
|
license = requests.post(
|
||||||
@ -94,15 +74,22 @@ def decrypt_generic(wvd: str = None, license_curl_headers: dict = None, mpd_url:
|
|||||||
print(f'An error occurred!\n{license.content}')
|
print(f'An error occurred!\n{license.content}')
|
||||||
return license.content
|
return license.content
|
||||||
|
|
||||||
# Extract license from content
|
|
||||||
license = license.content
|
|
||||||
|
|
||||||
# parse license challenge
|
# parse license challenge
|
||||||
try:
|
try:
|
||||||
cdm.parse_license(session_id, license)
|
cdm.parse_license(session_id, license.content)
|
||||||
except Exception as error:
|
except:
|
||||||
print(f'an error occurred!\n{error}')
|
try:
|
||||||
return None, error
|
cdm.parse_license(session_id, license.json().get('license'))
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
cdm.parse_license(session_id, license.json().get('licenseData'))
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
cdm.parse_license(session_id, license.json().get('widevine2License'))
|
||||||
|
except Exception as error:
|
||||||
|
print(f'an error occurred!\n{error}')
|
||||||
|
return None, error
|
||||||
|
|
||||||
|
|
||||||
# assign variable for returned keys
|
# assign variable for returned keys
|
||||||
returned_keys = ""
|
returned_keys = ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user