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 03: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 10: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 keysBy M616 in forum Video Streaming DownloadingReplies: 3Last Post: 12th Nov 2023, 09:40
- 
  How to download video from this site? It seems impossible '-'By SrBills in forum Video Streaming DownloadingReplies: 16Last Post: 17th Jun 2022, 20:46
- 
  Need help downloading extm3u with aes128 encryptionBy Prince7589 in forum Video Streaming DownloadingReplies: 3Last Post: 12th Dec 2021, 15:05
- 
  What kind of encryption this site uses?By Rider143 in forum Video Streaming DownloadingReplies: 6Last Post: 1st Nov 2021, 14:09
- 
  Help Downloading m3u8 File encrypted with aes encryptionBy thegeek in forum Video Streaming DownloadingReplies: 3Last Post: 15th Apr 2021, 07:07


 
		
		 View Profile
				View Profile
			 View Forum Posts
				View Forum Posts
			 Private Message
				Private Message
			 
 
			
			
 Quote
 Quote

 
			