i got an app runs on vdocipher ...i am not able to get keys after the update with my old script..and after inspecting it was found that it uses integrity token in the license....any known way to reverse that and get keys
example token:Code:import base64 import sys from bs4 import BeautifulSoup from pywidevine.cdm import Cdm from pywidevine.device import Device from pywidevine.pssh import PSSH from base64 import b64encode import re import requests import json import uuid import httpx import http import subprocess import os MyWVD = "l3.wvd" headers = { 'accept': '*/*', } # Read tokens from the auth_tokens.json file with open("auth_tokens.json", "r") as json_file: auth_tokens_data = json.load(json_file) tokens = auth_tokens_data.get("tokens", []) def download_and_decrypt_video(mpd_url, keys): mpd_file = mpd_url.split("/")[-1] name = os.path.splitext(mpd_file)[0] # Prepare the list of keys and arguments for decryption key_args = [] for key in keys: key_args.extend(["--key", key]) print(key_args) # Download the MPD file and attempt decryption with all keys process = subprocess.Popen(["N_m3u8DL-RE.exe", mpd_url, "--thread-count", "128", "--download-retry-count", "30", "--no-log", "--save-name", name, "--save-dir", "./Downloads", "--tmp-dir", "./Downloads/tmp", "--del-after-done", "--auto-select", "--decryption-binary-path", "./mp4decrypt.exe", "--ffmpeg-binary-path", "./ffmpeg.exe", *key_args, "-mt", "-M", "format=mp4:muxer=ffmpeg:bin_path=.\\ffmpeg.exe"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) # Read and print the output line by line as it is generated for line in process.stdout: print(line, end='') # Wait for the subprocess to finish process.wait() # Check if the decryption was successful mp4_files = [file for file in os.listdir("./Downloads") if file.endswith(".mp4")] if mp4_files: print(f"Decryption successful for {name} with keys: {keys}") else: print(f"Decryption failed for {name} with keys: {keys}") for token in tokens: decoded_token = json.loads(base64.b64decode(token)) otp = decoded_token['otp'] playback_info = decoded_token['playbackInfo'] otp_match = otp playbackinfo_match = playback_info url = "https://player.vdocipher.com/v2/?otp={}&playbackInfo={}".format(otp, playback_info) video_id = json.loads(base64.b64decode(playbackinfo_match).decode())["videoId"] response = requests.get(f'https://dev.vdocipher.com/api/meta/{video_id}', headers=headers) try: lic_url = response.json()["dash"]["licenseServers"]["com.widevine.alpha"].rsplit(":", 1)[0] mpd = response.json()["dash"]["manifest"] except KeyError: print("\n An error occurred while getting mpd/license URL") continue response = requests.get(mpd, headers=headers) pssh = re.search(r"<cenc:pssh>(.*)</cenc:pssh>", response.text).group(1) device = Device.load(MyWVD) cdm = Cdm.from_device(device) session_id = cdm.open() challenge = cdm.get_license_challenge(session_id, PSSH(pssh)) token = { "otp": otp_match, "playbackInfo": playbackinfo_match, "href": url, "tech": "wv", "licenseRequest": f"{base64.b64encode(challenge).decode()}" } json_data = { 'token': f'{base64.b64encode(json.dumps(token).encode("utf-8")).decode()}', } response = requests.post(lic_url, headers=headers, json=json_data) try: lic_b64 = response.json()["license"] except KeyError: print(f'An error occurred while getting license: {response.json()["message"]}') continue cdm.parse_license(session_id, lic_b64) fkeys = [] for key in cdm.get_keys(session_id): if key.type != 'SIGNING': fkeys.append(f"{key.kid.hex}:{key.key.hex()}") if len(fkeys) != 4: print(f"Unexpected number of keys found: {len(fkeys)}") continue print(fkeys) download_and_decrypt_video(mpd, fkeys) # # Try all combinations of keys for decryption # key_combinations = [fkeys[:2], fkeys[2:], fkeys[:3], fkeys[3:]] # for keys in key_combinations: # download_and_decrypt_video(mpd, keys) cdm.close(session_id)
eyJvdHAiOiIyMDE2MDMxM3ZlcnNBU0UzMjNCWG5iVXh4SUpFQ1 dSbUpYMUtFT1Y3ZEJsdFRUVkNQVlpDVDRTWWJDUEp5Y3RFIiwi cGxheWJhY2tJbmZvIjoiZXlKMmFXUmxiMGxrSWpvaU9EazNOMl E1WXpZNU5HVmlORGczTkRrNU9EVmpZell6TVRKa1lqVmlabVlp ZlE9PSIsInBhY2thZ2VOYW1lIjoiY29tLmNlcmViZWxsdW1tb2 JpbGVhcHAiLCJ0ZWNoIjoid3YiLCJsaWNlbnNlUmVxdWVzdCI6 IkNBRVN4eEFLMkE4SUFSS3VDd3J1QXdnQ0VpQ0ZraXFCNm1ja3 FjVUZlYXhLY1JaT3dSVUYrY0NOXC8rbXg5MEZkQllaaUJ4aVcx UDY3QmlLT0FqQ0NBUW9DZ2dFQkFJd2tDWmprclwvQUFEM2N1al d5Q0FOa2xxcW1MXC9XOXg5bnVkbE5oKzI2YTdcL2NcL1JVN0Ni aUZES1Q1WGFpNUFYVER2SVVGS0gxeGNmMkpremluc0o3aEo4aE 4yd2NjRjV6cTVOaTVoODZzTWE4ZVRXVmZDbk1aNjVNam50WXpL Z3ZiU2lJWWdpQ0s1bThwYzVrQzc0N1RHckcwVHZHcG13M1JpTW 5IMHBQcHI4cWpkeW9Sem43eDdBbk1TUndoZ3pTS0pnZFZGYUZW ZWZXOTRZSGVXZzdGMGgrSFRZNE5BdHhMWDVXb3pia3J1N25VbD huQXJPbW5Wd1RwUFc0VVJJNUNVZXRib1VqNUpwQWhcL2lGV1wv VWdZXC95TVZcL21vUVpkTjVwWnR0QjJ0VXFSUkpcL1BycndIZn ZVcVwvTWxsUTc4S3poUkFPcGVQOWpaTGxZY2lqczhqcmxVQ0F3 RUFBU2lLdUFGSUFWS3FBUWdCRUFBYWdRRUUxbjNJTXRVNDdjdG FBZEZMZHpvM2tDM1R1NDJjZjN3SVBYcHc2aG1BOWFUZlp4K3lk dUkzZ1ZIVVN3S0JwRTBNWXhXdTdPUzVGVEJhUVVCNFNRa1RpeH dJVFAxVERTQTladHJvdWJJYkhpV2VjeG5vdlR1dUF3b0dsd241 Qk1yRXNzeHFQUWtKR2FTdVpnbWtzNUxKRGxtbytCTTRQTVE5Zm taRlFhMytPRElpSU04T2pLbGJzVGVpTWt4MzdLSEVWTk5GNWIz cmhZWGtzdzdkdlRqT0dmcG5Fb0FDTWVMRmRWNlowVkhScUFwNX VINHo2NldkZlNTWjNOZHZNZ3dQOFpDMjlPVWlJUGYwSG10OExy cDhUZ2wyVmlUVUg1cFwvS1I4YVFEUmtBVlFtWk85VjR1WkZQeH dCc0Fzb0NHMFwvV1wvY2Zmb2xyZ1k1MHVrYnBFWWk1cnhIVnJt aENSQ3ZCWjZxdmxlYzV0VjJjelc3NWFibVIzcUxERUVoSTlVeE 90dmpZXC9ZXC92RzJpaXdPdDBEdmZxMWxyR2hGSSswbkwyMEVc L1wvbFFnek9LbnZyemlnN0RSTkl2dFB3NUppQkx0TGRoS1ZKaE c2RmV6TnJHN1dzMHlcL3gzRDA0ZUJRMzkwK2pDMHhxNDJockNy UzI2Q05KQmdCdk9ua3huVkRRNDZjd0dEam9KYzVQWHFzYUVScm RRSGY5Vmh6bE5cL1NQT2JteVBha0hUcWlkeDBqeWVXYnVCcTNC UXF4QWdnQkVoRGhRbnN3bElKc1JyWVBsTFVUQ1pCWUdQbXF3b2 dHSW80Q01JSUJDZ0tDQVFFQWh5RGtGYnRoaHBHdVhpa3JHVkxy aXVtaHJhblhlRnJrZXU0Mk9rQ0RGXC9zQW9EdWRGVDd1dEtpQm ZPS2tsT2IycXlFbFVXbW1UMUpaelpTdmpobUZ3TTVLdExQdjdK RlVQTVZhdk1ESGVHMGVZakttN2RCM3ZtdFp6K0h0YjFLZ2lRck pNRDJqbERWcWIxcjVmam15clpLTkhHa0NoRHlXOFdRRjlvWWZ6 UitLRzRmS014YlVkZGV6T1Nkak4wZ3JRbUdyZnZReVprMWFrNT lWbU1UdU5tbmcyT2NiUndJUlN4XC9DUmIrNldKZ1lWa2xROHI5 MEZDQkV1Q2NZMzhTanZKV0NqNkw0aTBZamdvcE8zK1BLdm52aj dScU9FaGo0TjdLS0Y2K1lHM1lIN09BaUkzWjgzRTVBWW5aQmZD SGk1aEZYemtXZmc0Y1VQdmpNNlV2SEN3SURBUUFCS0lxNEFVZ0 JFb0FEZHFvcCsrN2NLVldQc1MyUlwvSmFEZ2kwbzA3a3BmOHJV R2hjQjVISVZFU2RtWlhxS0JRNEhsWEQ4Y2tsRGcxT2cxVGIzZD RcL204VGorWGxsUDRQaUVWamZXWGc0Z0pqVWx2V0RGRm0xcnMy RWdqUmNjR1MzNkthdkp6UHB1RFhxRXBKYXQzMG5FcnREZHl5XC 9GRzIxbm5IRXlJWVFVTjRETURXSlgyaGw3aUhRZVwvZ2s1ZGR5 eXI2b21ocUFpTHNVb2ZkRkY3XC92dCtIZjlVWUdIZ2tsM1VIRl UyU1pvZ2V1RXRROUpPbWlkcXNOR0hqdHdtdjgwM0xqUENmb1g5 YngxVmZUM0cxVUNKMGJyNW5sNndzMldjcWdXQjNZN2lBQVVid2 xzS0trUFlMbG1sMnlmRU5QVDU0QVdWSnFuN1dJdGIrbWc1Njdv blVxODdVZ1RYZHM1WHptYytjVmNGXC9VN002QkJ3dE1Uc29YbG pmQWYxcDVDeGJweDRXUGZhbkVoRHErNVRnOHdCQXRsZzVBRldn cVwvS3BrTzhYZGkwR1pGYnRpY1k1bVdlbFVyXC95OU9BZUpYNE FnS3M4Q2Q3YTJcL2ZYNUd1V3R3TnF1bWNCUVVUcEpCNVZZQkZ0 OFZnTElMZ2pzcE5WWGtLMWlLTHpoUDhtOG9sbnpSbXAxamJWK1 FHaXNLRUdGd2NHeHBZMkYwYVc5dVgyNWhiV1VTRjJOdmJTNWpa WEpsWW1Wc2JIVnRiVzlpYVd4bFlYQndHazRLSG5CaFkydGhaMl ZmWTJWeWRHbG1hV05oZEdWZmFHRnphRjlpZVhSbGN4SXNPREJH WlVrNEx6WnBhM3B4WWxwblNDdHpRbEpFYVV0R1dYVmhiV2xLTk daUWFsZEZhV3BLVjFObk5EMGFGd29NWTI5dGNHRnVlVjl1WVcx bEVnZHpZVzF6ZFc1bkdoWUtDbTF2WkdWc1gyNWhiV1VTQ0ZOTk xVMDFNalpDR2g0S0VXRnlZMmhwZEdWamRIVnlaVjl1WVcxbEVn bGhjbTAyTkMxMk9HRWFGQW9MWkdWMmFXTmxYMjVoYldVU0JXMD FNbmh4R2hjS0RIQnliMlIxWTNSZmJtRnRaUklIYlRVeWVIRjRl QnBYQ2dwaWRXbHNaRjlwYm1adkVrbHpZVzF6ZFc1bkwyMDFNbm h4YVc1ekwyMDFNbmh4T2pFeEwxSlFNVUV1TWpBd056SXdMakF4 TWk5Tk5USTJRbGhZVXpKRFYwVXpPblZ6WlhJdmNtVnNaV0Z6Wl MxclpYbHpHaDRLRkhkcFpHVjJhVzVsWDJOa2JWOTJaWEp6YVc5 dUVnWXhOaTR3TGpBYUpBb2ZiMlZ0WDJOeWVYQjBiMTl6WldOMW NtbDBlVjl3WVhSamFGOXNaWFpsYkJJQk1CcHhDaHh2WlcxZlkz SjVjSFJ2WDJKMWFXeGtYMmx1Wm05eWJXRjBhVzl1RWxGQ2RXbH NaQ0JKYm1admNtMWhkR2x2YmpvZ1FWQkpYMVpsY25OcGIyNDZJ REUyTGpNZ1RHbGlUMFZOUTNKNWNIUnZYMVpsY25OcGIyNDZJRE V1TlRVZ1ZFRmZWbVZ5YzJsdmJqb2dNUzR4TkRneUZBZ0JFQUVn QlNnUU1BQkFBRWdBVUFGWUFHQURFbG9LV0FveUlpcDJaRzlqYV hCb1pYSTZOV1F3TldOaU9URmhOV0U1TkRRMVpHSXpPV016TXpa a1lXVmpPV1k1WVdGSTQ5eVZtd1lRQVJvZ01EVkROakZETnpRM1 FqQXpRVGhCUmpJNE1EQXdNREF3TURBd01EQXdNREFZQVNEYjE1 NjhCakFWT1BDRDNlOExHb0FDYXByXC9IalNONW9KN2hvN0dzNF wvNFo3YlZkXC83eHU5TzVpY1hkNTRyTkhsUVNJWk0waE1XN2Nm RUJUYnVrVjBmU3ExeFdLbmhNb0E4UDZhd3NoeStUSklnMUIybH dXYmQzVjIyVU81c3hYaTNWVVM4a2RtbFl3T3dsZEMrNXllNTNs Z29mVk53elQ4OVp1czVuSHdOOGJTS09qOG1mWlVtc3pDa3VKNH Vzak5FbGxCWW10VlRJcks5S3pjc0R6cTJwdEJOdUNSS3loK2lB aXkwa0p6cExSZHl5b2ZDQ1E5cTYyY2RFeHMxRkdXeXlTZW1EbW 95WFdpdVlwcGQ5Tnl3VWY3WUxWRVV1WFFGUVhsSFdBdm1FaVhS c2ZoRmE2RU9YOFJWdllmUGEzSFByTzdkOXM5NXh0R2FrNHJ4YT ZOYTl6VWFha3lKeThWNDdNUEhxNG1JNE5rb1VBQUFBQVFBQUFC UUFCQUFRdmZkQjhBQUFBK2c9IiwiaW50ZWdyaXR5VG9rZW4iOi JDcVlDQVJDbk1HdDRQc0pnQjA4b3pEanJkWi1yLUZOVTdVbkpx SDJicjhSWWlKdy1iV3N6Q2pYQ1FxODdEOU1TUGFfdUw3YUhFVj N1SW12RlJNUV95aE1DV1pHa2pSbHRNZGlJUjVQLV92aHZoUGUw TExNSWh2ZGNMZF9xU0FUWmVReURkY0UtZ1c1dHE2Y3F1MEV6WT h3a1A4VU8wcWs5bjRUTnlBY1NWdDF3eHZpbzdDd2xjR08wcnpG XzlKZktJOUFNYXBkWWNEQ3ZacmVncHdOeW9ScmJpQlE3Qlpydj MycVhNOUlrdmRENTFDa1JOTGF0aEhfQ240OXlsYmF5OE5mWXBu ZzlWX29RNG5pdEFIbFNOUlNSUG1qVG82cGNFSmJiZWF6eWR5dT cxbVNIRTEwbFdYOV9aUDl5cHVkQk1zWXZwQjFLQ2lpYzRVYWRD ZmdqTkw4YkpIcmZmV1JHd0Y2dzQ4eGM0MWNxbG1ualhINmRFWW JVR01EV1M5bjdGQ3l3ZGJ0aFZYRGRHbjhCRElEV2lSMElKWUU0 SlpoN0RFeWNnZ0g0eWlHVDFSN1lzdnBsLUpRdDhHMWdEdXBlbW x2Y1h3cnI3ejVHRk5nOVRXWW5SN0FUWFpPcFZ0ZEd4ZzFhNFhf WUQtNVQ1NmVCaTZPTDJTd1pRMzFwR21vclIxeTZic2lBWmttOW RpeFNkNm0zODF5Wm5DR015aUxsUGZuaEJza05MeDJPLTctVEMw ODZtcEdjIn0=
Support our site by donate $5 directly to us Thanks!!!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
+ Reply to Thread
Results 1 to 1 of 1
Similar Threads
-
Errors Decrypting VdoCipher Keys
By Ademir in forum Video Streaming DownloadingReplies: 15Last Post: 7th Jul 2024, 09:18 -
help with new license server for get decryption keys. (i have cdm keys)
By savi4u in forum Video Streaming DownloadingReplies: 11Last Post: 11th May 2024, 03:30 -
help with vdocipher keys
By killua in forum Video Streaming DownloadingReplies: 2Last Post: 9th Oct 2023, 11:54 -
wks-keys or TPD-Keys cmd.exe errors
By euphonic in forum Video Streaming DownloadingReplies: 1Last Post: 25th Jun 2023, 14:24