Hello, I am trying to download a free course but it has some hidden widevine encryption which blocks the keys. Can someone help me?
+ Reply to Thread
Results 1 to 17 of 17
-
-
-
https://maang.in/
This site uses vdocipher which is impossible to break. -
['bd896923358f50318c64abc98fb86357:4e22d9d1b5b689eb bd157012b3c84df3', '51d763d2542e528bb8e9e290e372ec44:264998d3799b6316 c0086e7062f22715', '52d99926f26d5fd58d4f49b49bfe1a67:dab3d77e680aa6c6 aeacdbad06b10208', 'bac9f053f0de57139e6dc85952f83a7a:9352fcbfb654c009 a258f437b892f207']
https://d1v1gqjht5uu1.cloudfront.net/media/z4yngqi7bl5Wj/5063bdd8/stream.mpd -
-
Novia just cracked it !
Use code blocks to make them look even cooler.
Code:bd896923358f50318c64abc98fb86357:4e22d9d1b5b689ebbd157012b3c84df3 51d763d2542e528bb8e9e290e372ec44:264998d3799b6316c0086e7062f22715 52d99926f26d5fd58d4f49b49bfe1a67:dab3d77e680aa6c6aeacdbad06b10208 bac9f053f0de57139e6dc85952f83a7a:9352fcbfb654c009a258f437b892f207 https://d1v1gqjht5uu1.cloudfront.net/media/z4yngqi7bl5Wj/5063bdd8/stream.mpd
Last edited by pram0dm; 11th May 2024 at 02:17.
-
-
-
-
You need a proper cdm first
Code:import base64 import json import re from urllib.parse import urlparse from urllib.parse import parse_qs import requests import xmltodict from pywidevine.L3.cdm import deviceconfig from pywidevine.L3.decrypt.wvdecryptcustom import WvDecrypt def download(otp, playbackInfo): url = "https://player.vdocipher.com/v2/?otp={}&playbackInfo={}".format(otp, playbackInfo) html = requests.get(url, headers=headers).text title = re.search(r'"title":"(.*?)"', html).group(1) manifest = re.search(r'"manifest":"(.*?)"', html).group(1) cmd = "N_m3u8DL-RE.exe \"" + manifest + "\" --tmp-dir ./cache --save-name \"" + title + "\" --save-dir \"./vdocipher/" + "\" --thread-count 16 --download-retry-count 30 --auto-select --check-segments-count -M format=mp4" mpd_data = requests.get(url=manifest).text mpd = xmltodict.parse(mpd_data) pssh = mpd['MPD']['Period']['AdaptationSet'][0]['ContentProtection'][1]['cenc:pssh'] data = { "playbackInfo": playbackInfo, "otp": otp, "href": url, "tech": "wv", "licenseRequest": "CAQ=", } stra = json.dumps(data, separators=(',', ':')) data = { "token": base64.b64encode(stra.encode("utf-8")).decode("utf-8") } widevine_license = requests.post(url="https://license.vdocipher.com/auth", data=data, headers=headers) license = widevine_license.json()["license"] decrypt = WvDecrypt(init_data_b64=pssh, cert_data_b64=license, device=deviceconfig.device_android_generic) data = { "playbackInfo": playbackInfo, "otp": otp, "href": url, "tech": "wv", "licenseRequest": base64.b64encode(decrypt.get_challenge()).decode("utf-8"), } stra = json.dumps(data, separators=(',', ':')) data = { "token": base64.b64encode(stra.encode("utf-8")).decode("utf-8") } widevine_license = requests.post(url="https://license.vdocipher.com/auth", data=data, headers=headers) if widevine_license.status_code != 200: print("Error", widevine_license.text) data = widevine_license.json() license = data.get("license") if not license: print("Error", data) decrypt.update_license(license) Correct, keys = decrypt.start_process() if Correct: print("获取key成功") key_string = ' '.join([f"--key {key}" for key in keys]) cmd = cmd + " " + key_string + " --decryption-binary-path ./mp4decrypt.exe" print(cmd) def get_otp(id): url = f"https://azbackend.com/resources/user/videos/{id}/otp" response = requests.get(url, headers=headers) data = response.json()["data"] otp = data.get("otp") playbackInfo = data.get("playbackInfo") return otp, playbackInfo def get_vids(cid =7784): url = f"https://azbackend.com/resources/user/readings/{cid}" response = requests.get(url, headers=headers) data = response.json()["data"] content = data["content"] for i in content: data = i["data"] type = i["type"] if type == "VIDEO": video_id = data["video_id"] otp, playbackInfo = get_otp(video_id) download(otp, playbackInfo) if __name__ == '__main__': authorization = "Bearer" headers = { "vdo-sdk": "VdoWeb/2.4.29", "authorization": authorization, "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0" } get_vids()
-
Okay I figured out that the code was using the old source code for pywidevine (which I never used before since I learned about CDM only 2 months ago). I'll try make the script work on my own thanks !
Last edited by aqzs; 11th May 2024 at 09:08.
-
I have a working script now but I can't get the license back
I collected every vdocipher error I think
Code:widevine_license: {"code":2042,"message":"This device is not supported. Please try on another device."} widevine_license: {"code":2021,"message":"Update browser/OS to watch video"} widevine_license: {"code":2042,"message":"Android system updates or update Chrome browser to play this video"} widevine_license: {"code":2046,"message":"Authentication failed"} widevine_license: {"code":2079,"message":"Device not supported"}
-
-
Similar Threads
-
Spanish site, impossible to get the keys
By M616 in forum Video Streaming DownloadingReplies: 3Last Post: 12th Nov 2023, 08:40 -
How to download video from this site? It seems impossible '-'
By SrBills in forum Video Streaming DownloadingReplies: 16Last Post: 17th Jun 2022, 19:46 -
Need help downloading extm3u with aes128 encryption
By Prince7589 in forum Video Streaming DownloadingReplies: 3Last Post: 12th Dec 2021, 14:05 -
What kind of encryption this site uses?
By Rider143 in forum Video Streaming DownloadingReplies: 6Last Post: 1st Nov 2021, 13:09 -
Help Downloading m3u8 File encrypted with aes encryption
By thegeek in forum Video Streaming DownloadingReplies: 3Last Post: 15th Apr 2021, 06:07