- Removed service certificate from generic

- Added some JSON response handlers for generic script

- Fixed Udemy in GUI mode
main v1.32
TPD94 2024-02-12 16:20:18 -05:00
parent 6b52e6ecf0
commit 221a2b74be
2 changed files with 19 additions and 32 deletions

View File

@ -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 not values['-USE_API-']:
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_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-'])))
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")
if api_key is not None:
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_cookies=ast.literal_eval(clean_dict(dict=values['-COOKIES-'])))
window['-OUTPUT-'].update(f"{key_out}")
@ -367,7 +367,7 @@ def start_gui(wvd: str = None, api_key: str = None):
if event == 'Source Code':
webbrowser.open(url='https://cdm-project.com/Decryption-Tools/TPD-Keys')
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
window.close()

View File

@ -60,28 +60,8 @@ def decrypt_generic(wvd: str = None, license_curl_headers: dict = None, mpd_url:
# open CDM session
session_id = cdm.open()
# get service certificate
service_cert = requests.post(
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)
# Generate the challenge
challenge = cdm.get_license_challenge(session_id, pssh)
# send license challenge
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}')
return license.content
# Extract license from content
license = license.content
# parse license challenge
try:
cdm.parse_license(session_id, license)
except Exception as error:
print(f'an error occurred!\n{error}')
return None, error
cdm.parse_license(session_id, license.content)
except:
try:
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
returned_keys = ""