From 221a2b74beeb6eb8f90002bb5377195e8b4689c2 Mon Sep 17 00:00:00 2001 From: TPD94 <> Date: Mon, 12 Feb 2024 16:20:18 -0500 Subject: [PATCH] v1.32 - Removed service certificate from generic - Added some JSON response handlers for generic script - Fixed Udemy in GUI mode --- Helpers/gui.py | 6 +++--- Sites/Generic.py | 45 ++++++++++++++++----------------------------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/Helpers/gui.py b/Helpers/gui.py index 1edb848..368bff8 100644 --- a/Helpers/gui.py +++ b/Helpers/gui.py @@ -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() diff --git a/Sites/Generic.py b/Sites/Generic.py index e3e097d..9b2d652 100644 --- a/Sites/Generic.py +++ b/Sites/Generic.py @@ -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 = ""