here is the video![]()
+ Reply to Thread
Results 31 to 44 of 44
-
-
Here is a Python version to obtain the pssh code for the video from the fastevo.com video:
Code:import requests import re import base64 import sys WIDEVINE_SYSTEM_ID = "edef8ba979d64acea3c827dcd51d21ed" def download_mpd(url: str) -> str: """Télécharge le MPD et retourne le XML.""" headers = {"User-Agent": "Mozilla/5.0"} response = requests.get(url, headers=headers, timeout=15) response.raise_for_status() return response.text def extract_kid(mpd_xml: str) -> str | None: """Extrait le default_KID du MPD.""" match = re.search(r'cenc:default_KID="([^"]+)"', mpd_xml) if not match: return None kid = match.group(1).replace("-", "").lower() if len(kid) != 32: raise ValueError("Longueur KID invalide (doit faire 32 caractères hex).") return kid def build_widevine_pssh(kid_hex: str) -> str: """Construit un PSSH Widevine à partir d'un KID hex.""" pssh_box = bytearray() pssh_box.extend(b"\x00\x00\x00\x00") pssh_box.extend(b"pssh") pssh_box.extend(b"\x00\x00\x00\x00") pssh_box.extend(bytes.fromhex(WIDEVINE_SYSTEM_ID)) pssh_box.extend(b"\x00\x00\x00\x12") pssh_box.extend(b"\x12\x10") pssh_box.extend(bytes.fromhex(kid_hex)) size = len(pssh_box) pssh_box[0:4] = size.to_bytes(4, byteorder="big") return base64.b64encode(pssh_box).decode() def main(): url = input("Entrer URL MPD : ").strip() try: mpd_xml = download_mpd(url) kid = extract_kid(mpd_xml) if not kid: print("❌ Aucun default_KID trouvé.") return print(f"\n✅ KID : {kid}") pssh = build_widevine_pssh(kid) print(f"✅ PSSH Widevine : {pssh}") except requests.RequestException as e: print(f"❌ Erreur réseau : {e}") except ValueError as e: print(f"❌ Erreur KID : {e}") except Exception as e: print(f"❌ Erreur inattendue : {e}") input(f"\nAppuyer sur ENTER pour quitter...") if __name__ == "__main__": main()
[Attachment 91410 - Click to enlarge]
license url : Added authorization & x-signature, you get the video key -
Last edited by slayer36; 7th Mar 2026 at 03:01.
-
-
-
-
Just discovered this thread in my rabbit hole research and I'm a bit at my wits end, does anybody have any updates to a solution on this issue?
Fastevo seems to break the normal download workflow. Here's what I found out so far according to my understanding (don't burn me at the stake, I literally started reading about the entire topic just earlier today):
1. Vineless extension does not seem to recognize it, while WidewineProxy2 does. It might be because according to @larley Fastevo have deactivated ClearKey, which may render Vineless useless here.
2. Despite trying with multiple different L3 CDMs that have been public and also extracting my own L3 CDM from an AVD from a Google Desktop emulator via KeyDive, you can download the raw binary data but it fails to decode. WVP2 recognizes the DRM sequence and gives you a working N_m3u8DL-RE command but decrypting using Shaka doesn't work, it always ends up with failing to decode the first frame:
rendering the file unplayable.[h264 @ 0x55ec14763e00] top block unavailable for requested intra mode -1
02:06:21.928 WARN : [h264 @ 0x55ec14763e00] error while decoding MB 0 0, bytestream 21857
02:06:21.933 WARN : [aac @ 0x55ec14763e00] SBR was found before the first channel element.
02:06:21.934 WARN : [aac @ 0x55ec14763e00] invalid band type
02:06:21.934 WARN : [mp4 @ 0x55ec148f6300] track 1: codec frame size is not set
02:06:21.971 WARN : [mp4 @ 0x55ec148f6300] aac bitstream error
3. The KID is extracted correctly, looking at the MPD XML definition anyway. PSSH I'm not sure but should not be the issue. Sending a request to the licensing server https://api.fastevo.net/service/api/v1/mediaprotection/licenses/wv is not straight forward. If I try to use pywidevine directly, it just gives me 401 unauthorized, but that's maybe because header replication hasn't happened. So I tried replicating a valid request by copying the request headers from a valid license exchange with specific reference to Authorization and X-Signature like @sesamap159 suggested and I get a 428 Precondition Required answer with a non-descript JSON object with 3 attribute keys, "e", "i" and "k" , which I also neither know what that means, nor is it helpful in any obvious way.
The license request payload and answer are all seemingly running through protobuf stuff, the type specified is application/octet-stream so I'm also unsure how do use any of this.
Since things are playable on a normal ChromeCDM in a non-mobile browser, I don't really know where to go from here, they might change the keys according to CDM like mentioned here https://forum.videohelp.com/threads/416316-%5BRelease%5D-WidevineProxy2-Extension-Bypa...rapping/page24 and give out invalid keys for certain captured CDMs (? not even sure this is possible) but I don't know.
Any help or insight appreciated. -
Code:
PS E:\Workspace\Playground> N_m3u8DL-RE "https://67195f559ff9179e85e1a6bd.c.mp2.fastevo.net/673f616c09e7ff429dfe4aa3/processed/video/content/media/master.mpd?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly82NzE5NWY1NTlmZjkxNzllODVlMWE2YmQuYy5tcDIuZmFzdGV2by5uZXQvNjczZjYxNmMwOWU3ZmY0MjlkZmU0YWEzL3Byb2Nlc3NlZC92aWRlby9jb250ZW50L21lZGlhLyoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjQ5MDMwMTk2Nzd9fX1dfQ__&Key-Pair-Id=K35Z93GIJ8LDWZ&Signature=WPpGhVb0usl~jqeznP0QhicyriXNjgjN9plQh7653itc7ireDdyZvprHymRpaveW~yjIv2uRYcrjI6aGXhRR00hxr0zBttYyiBIEM2Y4xcQ1HbnTTWjyPi5mFHs7KRgEpNckNR4gzpcT7RLmzkYDk9b8eeT8d~Hbh3QaOJgGeTeoEU~-d1ot~BDd5F7v-lgwbu2XkkzTZ7hGy-VpnplvfUs1mRfhnww8SFhkgxOkTyQC5vyVVvfhrCkPAwn8MUNd0vb68yHpzQHbbob1xe8CS1W-kdfCXa9oEJWICMpf0G9CkCpJINLeaMwolJeiLqSy6ut9xQriXm6~f-EhCOxwzg__" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" -H "Accept: */*" -H "Origin: https://webplay.mp2.fastevo.net" -H "Referer: https://webplay.mp2.fastevo.net/" --key 67b278c454fac30d58a85de700000000:23be499d9ccc744c3887d5863902dec2 --key 67b278c454fac30d58a85de800000000:385cf2d12f2aaa0856b5cbc93b6d4581 --key 67b278c454fac30d58a85de900000000:77fb40cfb232ed3cb512932b5ec28bef --key 67b278c454fac30d58a85dea00000000:1630fe204242ea321d2bd2404187bb8e --key 67b278c454fac30d58a85deb00000000:62841f4efa1ff449bc5940800efa2113 --key 67b278c454fac30d58a85dec00000000:f98d3c0645c02a2fce16d55a9c6d842f --key 67b278c454fac30d58a85ded00000000:da7a93f144c8c5af4e9e48313c01b75c --key 67b278c454fac30d58a85dee00000000:b34e907c5d2cfda2d110691c30c429e5 --use-shaka-packager -M format=mkv:muxer=mkvmerge -mt --save-name "test" INFO : N_m3u8DL-RE (Beta version) 20251029 INFO : Loading URL: https://67195f559ff9179e85e1a6bd.c.mp2.fastevo.net/673f616c09e7ff429dfe4aa3/processed/video/content/media/master.mpd?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly82NzE5NWY1NTlmZjkxNzllODVlMWE2YmQuYy5tcDIuZmFzdGV2by5uZXQvNjczZjYxNmMwOWU3ZmY0MjlkZmU0YWEzL3Byb2Nlc3NlZC92aWRlby9jb250ZW50L21lZGlhLyoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjQ5MDMwMTk2Nzd9fX1dfQ__&Key-Pair-Id=K35Z93GIJ8LDWZ&Signature=WPpGhVb0usl~jqeznP0QhicyriXNjgjN9plQh7653itc7ireDdyZvprHymRpaveW~yjIv2uRYcrjI6aGXhRR00hxr0zBttYyiBIEM2Y4xcQ1HbnTTWjyPi5mFHs7KRgEpNckNR4gzpcT7RLmzkYDk9b8eeT8d~Hbh3QaOJgGeTeoEU~-d1ot~BDd5F7v-lgwbu2XkkzTZ7hGy-VpnplvfUs1mRfhnww8SFhkgxOkTyQC5vyVVvfhrCkPAwn8MUNd0vb68yHpzQHbbob1xe8CS1W-kdfCXa9oEJWICMpf0G9CkCpJINLeaMwolJeiLqSy6ut9xQriXm6~f-EhCOxwzg__ INFO : Content Matched: Dynamic Adaptive Streaming over HTTP INFO : Parsing streams... WARN : Writing meta json INFO : Extracted, there are 8 streams, with 5 basic streams, 3 audio streams, 0 subtitle streams INFO : Vid *CENC 1920x1080 | 5000 Kbps | 5 | avc1.640028 | 1 Segment | ~03m28s INFO : Vid *CENC 1280x720 | 3000 Kbps | 1 | avc1.4D401F | 1 Segment | ~03m28s INFO : Vid *CENC 854x480 | 1500 Kbps | 2 | avc1.4D401E | 1 Segment | ~03m28s INFO : Vid *CENC 640x360 | 1000 Kbps | 3 | avc1.4D401E | 1 Segment | ~03m28s INFO : Vid *CENC 426x240 | 500 Kbps | 4 | avc1.42C015 | 1 Segment | ~03m28s INFO : Aud *CENC 7 | 192 Kbps | mp4a.40.2 | 2CH | 1 Segment | ~03m28s INFO : Aud *CENC 8 | 128 Kbps | mp4a.40.2 | 2CH | 1 Segment | ~03m28s INFO : Aud *CENC 6 | 64 Kbps | mp4a.40.2 | 2CH | 1 Segment | ~03m28s INFO : Parsing streams... INFO : Selected streams: INFO : Vid *CENC 1920x1080 | 5000 Kbps | 5 | avc1.640028 | 1 Segment | ~03m28s INFO : Aud *CENC 7 | 192 Kbps | mp4a.40.2 | 2CH | 1 Segment | ~03m28s WARN : Writing meta json INFO : Save Name: test WARN : MuxAfterDone is detected, binary merging is automatically enabled WARN : The entire file has been cut into small segments to accelerate INFO : Start downloading...Vid 1920x1080 | 5000 Kbps | 5 | avc1.640028 WARN : The entire file has been cut into small segments to accelerate INFO : Start downloading...Aud 7 | 192 Kbps | mp4a.40.2 | 2CH WARN : Type: cbcs WARN : PSSH(WV): CAESEGeyeMRU+sMNWKhd6wAAAAAaB2Zhc3Rldm8iDGc/YWwJ5/9Cnf5Ko0jzxombBg== WARN : KID: 67b278c454fac30d58a85deb00000000 WARN : Reading media info... INFO : [0x1]: Video, h264 (High) (avc1), 1920x1080, 24 fps, 5668 kb/s WARN : Type: cbcs WARN : PSSH(WV): CAESEGeyeMRU+sMNWKhd7QAAAAAaB2Zhc3Rldm8iDGc/YWwJ5/9Cnf5Ko0jzxombBg== WARN : KID: 67b278c454fac30d58a85ded00000000 WARN : Reading media info... INFO : [0x1]: Audio, aac (LC) (mp4a), 192 kb/s INFO : Binary merging... WARN : Type: cbcs WARN : PSSH(WV): CAESEGeyeMRU+sMNWKhd7QAAAAAaB2Zhc3Rldm8iDGc/YWwJ5/9Cnf5Ko0jzxombBg== WARN : KID: 67b278c454fac30d58a85ded00000000 INFO : Decrypting using SHAKA_PACKAGER... INFO : Binary merging... WARN : Type: cbcs WARN : PSSH(WV): CAESEGeyeMRU+sMNWKhd6wAAAAAaB2Zhc3Rldm8iDGc/YWwJ5/9Cnf5Ko0jzxombBg== WARN : KID: 67b278c454fac30d58a85deb00000000 INFO : Decrypting using SHAKA_PACKAGER... WARN : test.mp4 WARN : test.m4a WARN : Muxing to test.MUX.mkv WARN : Cleaning files... WARN : Rename to test.mkv INFO : Done
Last edited by slayer36; 4th Apr 2026 at 03:01.
-
How did you get the correct keys? My WVP2 generated command does not seem to work, the keys from the license server are wrong. If I execute yours it works without problems. As far as the MPD files are concerned, they are mostly the same between my stream and yours. Mine contains more <AdaptionSet> but that's about it.
Regardless of what I do, I cannot decode the videostream. Thought I'd try to use your User-Agent but that makes no difference. Even if it made no sense I actually tried to use the keys from your example but that doesn't help either. Something about this set of keys doesn't work:
--key 69c628ccae01bc623001249000000000:9c8fba808a5340bef 49cb0d507732928
--key 69c628ccae01bc623001249100000000:c2f1c3433351eccf2 1a0e4feb46b3201
--key 69c628ccae01bc623001249200000000:e4ab9c2e597538272 c4522d40dc7b53b
--key 69c628ccae01bc623001249300000000:853bda4e29001c618 347bfa8bb172ce0
--key 69c628ccae01bc623001249400000000:2793ced2101ad4817 ca125a0e2714655
--key 69c628ccae01bc623001249500000000:c096ce55949c5b648 d1f6ecbdb6ad558
--key 69c628ccae01bc623001249600000000:478a4ab5d8f677377 4d57ff76f80a953
--key 69c628ccae01bc623001249700000000:9138fd9bc64a92be7 f33ec5ad6d4db79 -
You have described my first 14-days battle very correctly.. i was even able to decode their protobuf from pages that showed the video.. but even that still gave me wrong keys so i went back to square one.. i did found out that the header you use for "N_m3u8DL-RE" does not matter
i have still 2 venues open(maybe will work, maybe will not):
currently building a chrome version where i can scan network activity to get keys
currently reverse engineering their JS and trying to build a tampermoney script to get keys -
Good to know, it's rather frustrating that Fastevo's key behavior on some sites is extremely strange. The documentation on their part is also not that extensive so it's hard to gauge through the obfuscation what's what.
There is an option that I thought about using an injected version of GoogleCDM that may sniff out the keys using something like a customized CDM build but I'm not sure if that's of any help. Injecting something via Tampermonkey for the intermediate JS layer for the Mediaplayer might be better suited but idk.
Either solution is unusually complicated for just this one vendor's key system.
I wonder if WVP2's original author @larley has any insights they could share. -
Hi, I'm in the same boat. Got some keys but the vid downloaded is still encrypted. Got my CDM keys from an AVD
Similar Threads
-
DOWNLOAD protected DRM video separated video and audio from (learnyst)
By yassin in forum Video Streaming DownloadingReplies: 4Last Post: 8th Jan 2024, 04:36 -
Help to DL video (No DRM)
By vidsrme in forum Video Streaming DownloadingReplies: 2Last Post: 7th Oct 2022, 17:46 -
restreaming to non-drm m3u8 from drm mpd
By grabyea in forum Video Streaming DownloadingReplies: 1Last Post: 8th Aug 2022, 00:35 -
DRM Live NO, DRM VoD YES.
By d0b in forum Video Streaming DownloadingReplies: 49Last Post: 7th Oct 2021, 15:41 -
Download DRM protected video and decrypt it with a drm licence url
By vikral in forum Video Streaming DownloadingReplies: 9Last Post: 9th Feb 2021, 02:14


Quote