VideoHelp Forum





Try StreamFab Downloader and download streaming video from Netflix, Amazon!



+ Reply to Thread
Page 2 of 2
FirstFirst 1 2
Results 31 to 45 of 45
  1. here is the video
    Image Attached Files
    Quote Quote  
  2. Originally Posted by slayer36 View Post
    here is the video
    How did you do this? I am trying to grab some fastevo vids from Darkfans
    Quote Quote  
  3. Originally Posted by inviteparty View Post
    Originally Posted by slayer36 View Post
    here is the video
    How did you do this? I am trying to grab some fastevo vids from Darkfans
    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()
    Image
    [Attachment 91410 - Click to enlarge]


    license url : Added authorization & x-signature, you get the video key
    Quote Quote  
  4. @sesamap159 you are incredible for this, going to give it a try later.
    Quote Quote  
  5. Originally Posted by inviteparty View Post
    @sesamap159 you are incredible for this, going to give it a try later.
    let me know if you still need help to download.
    Last edited by slayer36; 7th Mar 2026 at 03:01.
    Quote Quote  
  6. Originally Posted by Asdfgf View Post
    Originally Posted by violator1990 View Post
    Originally Posted by Asdfgf View Post
    who cares about that server?
    Dozens of members on this forum. And a lot of people at all. Believe me )
    I dont think so, but...
    violator1990, Silv3r, Danteis, slayer36, inviteparty, sesamap159...etc )))
    Quote Quote  
  7. Originally Posted by violator1990 View Post
    Originally Posted by Asdfgf View Post
    Originally Posted by violator1990 View Post
    Originally Posted by Asdfgf View Post
    who cares about that server?
    Dozens of members on this forum. And a lot of people at all. Believe me )
    I dont think so, but...
    violator1990, Silv3r, Danteis, slayer36, inviteparty, sesamap159...etc )))
    ¡¡¡¡¡¡Wow, they are so many!!!!!!! xDDDD

    In any case, you finally got what you were looking for.
    Quote Quote  
  8. thanks for the script.
    But how to exactly trick the license server into giving you the keys.


    Originally Posted by sesamap159 View Post
    Originally Posted by inviteparty View Post
    Originally Posted by slayer36 View Post
    here is the video
    How did you do this? I am trying to grab some fastevo vids from Darkfans
    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()
    Image
    [Attachment 91410 - Click to enlarge]


    license url : Added authorization & x-signature, you get the video key
    Quote Quote  
  9. 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:
    [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
    rendering the file unplayable.

    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.
    Quote Quote  
  10. Originally Posted by gbdenser View Post
    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:
    [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
    rendering the file unplayable.

    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.
    Quote Quote  
  11. Originally Posted by slayer36 View Post
    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
    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
    Quote Quote  
  12. Originally Posted by gbdenser View Post
    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:
    [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
    rendering the file unplayable.

    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.
    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
    Quote Quote  
  13. Originally Posted by mrbrwn View Post
    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.
    Quote Quote  
  14. Hi, I'm in the same boat. Got some keys but the vid downloaded is still encrypted. Got my CDM keys from an AVD
    Quote Quote  
  15. Yeah the change is pretty simple. As we know, companies like these like to read forums like this, and patch any "vulnerabilities" they find. Fastevo is just another JS slop wrapper around Widevine, who have "figured out" that changing keys returned by the license server can be frustrating for users (I believe it's being run by a single person). I'm trying to not make this too public in the interest of those who are already using this change to get correct keys. These users can send me a PM in case you're wondering what you need to change:

    315779-BPHvZ
    315762-gbdenser
    315606-mrbrwn
    310217-slayer36
    Bypass HMACs, One-time-tokens and Lic.Wrapping: https://github.com/DevLARLEY/WidevineProxy2
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!