VideoHelp Forum




+ Reply to Thread
Results 1 to 14 of 14
  1. Hello !

    I want to decrypt a geo-restricted video from the M6 website, but being outside of France. :fr:
    Here is the URL:
    https://www.m6.fr/zone-interdite-p_845/maisons-de-vacances-les-nouveaux-coins-de-parad...rix-c_13132992

    I already managed to download the encrypted video file with yt-dlp --allow-unplayable-formats

    But I don't know how to get the kid:key...

    For non-geo-restricted videos I was using WVGuesserExtension-NextGen plugin, or Widefrog program.

    Could you help me?
    Quote Quote  
  2. Code:
    --key b2645e276bd3572395b74e6ba6cfb861:4d4be6cdb66f55e2bd1e1e0a30067747
    Quote Quote  
  3. It's working, thanks ! Merci
    Quote Quote  
  4. Even though I already have the key (using WidevineProxy 2 and TuxlerVPN), I just want to know what this channel needs:

    https://www.m6.fr/w9/direct

    License: https://lic.drmtoday.com/license-proxy-widevine/cenc/
    The license header: x-dt-auth-token
    Origin, Referer, User-Agent...

    What else is required? With just this, I can’t manage to get the key.
    Quote Quote  
  5. Thank you. It worked by adding "?specConform=true" to the license. The only necessary header is "x-dt-auth-token"
    I thought I could use the same license for all channels. I wanted to extract the key from these two:
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-pp/cmaf_cenc00/dash-short-hd.mpd
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-teva/cmaf_cenc00/dash-short-hd.mpd
    Quote Quote  
  6. Originally Posted by Babuino View Post
    Thank you. It worked by adding "?specConform=true" to the license. The only necessary header is "x-dt-auth-token"
    I thought I could use the same license for all channels. I wanted to extract the key from these two:
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-pp/cmaf_cenc00/dash-short-hd.mpd
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-teva/cmaf_cenc00/dash-short-hd.mpd

    Mission: Impossible
    Quote Quote  
  7. Originally Posted by Babuino View Post
    Thank you. It worked by adding "?specConform=true" to the license. The only necessary header is "x-dt-auth-token"
    I thought I could use the same license for all channels. I wanted to extract the key from these two:
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-pp/cmaf_cenc00/dash-short-hd.mpd
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-teva/cmaf_cenc00/dash-short-hd.mpd
    teva
    Code:
    62443504892b3ef290e16e02be77a0b7:acd7867d298a5a14d371550935117d35
    590db0e7543336ef9fa69a27d00123a9:6cd84df4f7a8497291896ed3f3514ce3
    3246c307f7a23375bb1da07ec7833de2:c53ce5a8f55656e1d5c1483a9399abd1
    dc804fbc64b53c5da8b80a9f482f4c5e:1b2aeb169d3bbf6c642d22acb436efa0
    401f64e1e66b32ba864517cdb30ad0d9:278062586a14e639a1850111fb20cfa6
    fd3dd527f0283972806b97a9a9c2df0f:9ff6dbd265103aaed45856e794d50170
    pp
    Code:
    46a6063064f93bb7a97eafebc219642e:e97b681d73c134a26902e1f592276fcf
    b2313f92299a345991eaa36a0aef908b:b0df1cb0d8426cbb760168b071f0eb41
    71b3fc6c1dec33ed893d31e21c5165ac:8c4208c49c52f8e5609b27c2ab612662
    3148fff60f6536fda3793b814948d75f:886e690a3dcf7b6250ecc82c3c98294f
    e1de88e02a703ba797e786e9b3348b02:3d9987fe9b01106bc492550d484dc0ef
    f81fc4a14c2b3bd5856c3bfb797f574d:5efbaeed691adb03fd78648f2004b4d8
    Quote Quote  
  8. Hello, I have the same problem with 6ter: " Désolé, cette vidéo n’est pas accessible dans votre pays. "

    https://www.m6.fr/6ter/direct
    https://origin-m6web.live.6cloud.fr/out/v1/6play/6play-6ter/cmaf_cenc00/dash-short-hd.mpd
    e555ac09f7da360c93552a5421768324: missing key

    Can anyone help me?
    Quote Quote  
  9. Code:
    e555ac09f7da360c93552a5421768324:eb3b1e4c0618320546302c47a0aa6957
    Quote Quote  
  10. Originally Posted by cedric8528 View Post
    Add "?specConform=true" to your licence url

    Image
    [Attachment 88290 - Click to enlarge]


    headers

    Image
    [Attachment 88291 - Click to enlarge]
    To get the keys on M6, here's a simplified version:
    Code:
    import os
    import requests
    import pyfiglet
    from base64 import b64encode
    from pywidevine.L3.decrypt.wvdecryptcustom import WvDecrypt
    from pywidevine.L3.cdm import deviceconfig
    
    # ===================== CONSTANTES ===================== #
    # Couleurs terminal
    RED = "\x1b[38;5;160m"
    GREEN = "\x1b[38;5;46m"
    CYAN = "\x1b[38;5;14m"
    YELLOW = "\x1b[38;5;226m"
    END = "\x1b[0m"
    
    # ===================== AFFICHAGE ===================== #
    
    def print_title():
        title = pyfiglet.figlet_format("Widevine Decryptor Keys", font="slant", width=150)
        print(f"{CYAN}{title}{END}")
    
    # ===================== VALIDATION ===================== #
    
    def validate_pssh(pssh: str) -> bool:
        if len(pssh) >= 150:
            print(f"{RED}❌ PSSH invalide{END}")
            return False
        return True
    
    # ===================== WIDEVINE ===================== #
    
    def get_widevine_keys(pssh: str, headers: str, LICENCE_URL: str):
        wvdecrypt = WvDecrypt(init_data_b64=pssh, device=deviceconfig.device_android_generic)
        try:
            response = requests.post(LICENCE_URL, data=wvdecrypt.get_challenge(), headers=headers, timeout=10)
            response.raise_for_status()
        except requests.RequestException as e:
            print(f"{RED}Erreur licence Widevine : {e}{END}")
            return []
    
        license_b64 = b64encode(response.content)
        wvdecrypt.update_license(license_b64)
        success, keys = wvdecrypt.start_process()
        return keys if success else []
    
    # ===================== MAIN ===================== #
    
    def main():
        print_title()
        pssh = input(f"{RED}PSSH:{END} {YELLOW}")
        if not validate_pssh(pssh):
            print(f"{RED}PSSH invalide.{END}")
            return
    
        token = input(f"{RED}dt-auth-token:{END} {YELLOW}")
        if not token:
            print(f"{RED}Le token ne peut pas être vide.{END}")
            return
        headers = {"x-dt-auth-token": token}
        LICENCE_URL = "https://lic.drmtoday.com/license-proxy-widevine/cenc/?specConform=true"
        keys = get_widevine_keys(pssh, headers, LICENCE_URL)
        if not keys:
            print(f"{RED}❌ Aucune clé retrouvée.{END}")
            return
    
        for key in keys:
            print(f"{GREEN}--KEY:{END} {RED}{key}{END}")
    
        input("\nAppuyez sur Entrée pour quitter...")
    
    
    # ===================== EXEC ===================== #
    
    if __name__ == "__main__":
        main()
    Quote Quote  
  11. Originally Posted by cedric8528 View Post
    Code:
    e555ac09f7da360c93552a5421768324:eb3b1e4c0618320546302c47a0aa6957
    👍Thank you very much!
    Quote Quote  
  12. Hello, i have the same problem with ab channels:

    action
    https://live-replay.actiontv.fr/
    https://mdw-cji.akamaized.net/action/dash/manifest.mpd
    16417fe5df1c45b096622e1149a4a90f: missing key

    rtl9
    https://live-replay.rtl9.com/
    https://mdw-cji.akamaized.net/rtl9/dash/manifest.mpd
    35e94b1865bc4107ae5ced02bb2f5a22: missing key

    any chance ?
    Quote Quote  
  13. Originally Posted by OmarMatuer View Post
    Hello, i have the same problem with ab channels:

    action
    https://live-replay.actiontv.fr/
    https://mdw-cji.akamaized.net/action/dash/manifest.mpd
    16417fe5df1c45b096622e1149a4a90f: missing key

    rtl9
    https://live-replay.rtl9.com/
    https://mdw-cji.akamaized.net/rtl9/dash/manifest.mpd
    35e94b1865bc4107ae5ced02bb2f5a22: missing key

    any chance ?
    Use an addon like vineless and tell us
    Quote Quote  



Similar Threads

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