VideoHelp Forum




+ Reply to Thread
Page 5 of 8
FirstFirst ... 3 4 5 6 7 ... LastLast
Results 121 to 150 of 223
  1. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by BadgerHobbs View Post

    My original code successfully delivers the challenge binary data, it is just not valid against the server for some reason.
    #

    As you are finding there are 'riffs' on the way the first challenge - to get permission to send a full licence challenge - is performed. Some sites encrypt the data sent with a key and initialise values (iv) which may be provided but hidden in javascript.

    You really need someone with experience of the site in question and posting in a new thread in Video Streaming might ensure it is seen by more people. El Cap is probably the guy to ask.

    From your post I think you have a good handle on the problem; it sounds similar to the way channel4 UK goes about providing its keys and maybe a look for c4 examples in the forum might help you move away from curl. C4 can only be an example as any encryption data is site specific, but the over-all flow of challenges can be seen. Tracing what the browser sends and decoding any sent base64 data will allow you to tell if it is encrypted before sending.
    Thanks for the guidance, I'll see how this thread goes and what I find, otherwise I'll create a dedicated one for the video host as I suspect over time this will become more common. Thanks for the pointer towards channel 4, I shall compare and see if there are any similarities.

    I'll be sure to share anything I find.
    Quote Quote  
  2. Member
    Join Date
    Oct 2023
    Location
    Afghanistan
    Search PM
    Originally Posted by A_n_g_e_l_a View Post
    boltdnsnet.py is quite old now; I no longer keep a copy for use.
    I was using it for a little while whilst still learning, but having interrogated your code, I've been able to build myself a nice little UI which works perfectly for those sites that use boltdns and for some other sites I use regularly.

    So thanks again for your write ups and shared scripts @A_n_g_e_l_a. They've made my learning experience much easier.
    Last edited by billybanana; 30th Jan 2024 at 00:13.
    Quote Quote  
  3. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Thanks for the feedback and well done for getting there.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  4. Hello, I'm newly registered in the forum but a very ancient reader, I've got my " two magic files" following your great tutorial, Android Studio method, I've tried too many Python scripts "widevine_keys" "WKS-KEYS" yours, "WKS-KEYS" by CrymanChen, and " WKS-KEYS " by others... no way ; Streamfab is broken for noorplay, the chrome hacked extension is broken too.

    So, this is what I get with HTTP Toolkit :

    Image
    [Attachment 76738 - Click to enlarge]


    Image
    [Attachment 76739 - Click to enlarge]


    Image
    [Attachment 76740 - Click to enlarge]


    Image
    [Attachment 76741 - Click to enlarge]


    Can you please make a specific script that reads a text file where I copy-past the response body (last screenshot), and give the so desired keys?
    Quote Quote  
  5. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by moaBoBmArLeY View Post
    Hello, I'm newly registered in the forum but a very ancient reader,
    Can you please make a specific script that reads a text file where I copy-past the response body (last screenshot), and give the so desired keys?
    You've made the same mistake we all make, but you've made yours in public. What you show in your image of licence Request, shown in httpToolKit, is the data that the BROWSER sends to get keys to decrypt the video the BROWSER then plays.

    To get YOUR keys you mimic the browser's request and pass the response to your CDM which you got from Cedric's guide. l3.py makes the request and deals with the response. And if everything is in order produces the keys. My guides say start with simple site. I even give an example. Clearly you haven't and clearly you misunderstand the process, as a consequence.

    If you have WKS-KEYS you'll have l3.py which is THE script to use. You post your found data; PSSH and Licence Url. And you put any headers you see being used (see httptoolkit request headers) in the headers.py in the same folder as l3.py.

    Copy the Licence cURL to curlconverter.com to get your headers.py content. x-session data appears to be needed.

    I understand you'll have added difficulty working in a language that is not your mother-tongue and of course age adds to your difficulty as remembering becomes a problem. I know all about that. But age isn't a good enough reason for script begging. Age is only a barrier if you let it be.

    Study the stickies again. This time at each section ask yourself ' Do I understand what I've just read?' Each part builds on the earlier parts; make sure your foundations are secure.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  6. You're right about the mother-tongue but I'me just 46 years old

    I'm not so noob, I've learned (basic 1.0 and ZX80 Assembly in Amstrad CPC 464), Visual Basic, Javascript, PHP and WLangage, I missed some episodes like Pascal, Java, C and Python.


    I was thinking that the body response (my 4th screenshot) is the last step of your diagram and was independent of the browser and session.

    Image
    [Attachment 76748 - Click to enlarge]


    But I was wrong.

    Please believe me, I've tried dealing with curlconverter and changing the header.py but will try again and again.
    Thank you.
    Last edited by moaBoBmArLeY; 3rd Feb 2024 at 05:00.
    Quote Quote  
  7. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    but a very ancient reader
    ???
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  8. lol, I mean I was reading this from many years, dvd authoring edting BD menus ...etc, and the date of my subscription does'nt reflect the reality, very ancient reader not very ancient person.
    Quote Quote  
  9. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by moaBoBmArLeY View Post
    lol, I mean I was reading this from many years, dvd authoring edting BD menus ...etc, and the date of my subscription does'nt reflect the reality, very ancient reader not very ancient person.
    LOL
    English lesson for you:-
    When you place an adjective in front of a noun, the meaning of the noun is modified. Ancient is an adjective, reader is a noun

    One meaning of reader is someone who reads - a person. Ancient means having a great age. thus 'ancient reader' means of reader of great age. Long-term reader; prolific reader might convey your meaning better.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  10. Ok! Thank you for the english lesson.
    Quote Quote  
  11. Hello, it's me again, I need some help if possible, this is what I get with HTTP Toolkit:

    Image
    [Attachment 76765 - Click to enlarge]


    Image
    [Attachment 76766 - Click to enlarge]


    My header.py is like that:

    Code:
    import requests
    
    headers = {
        "Accept":"*/*",
        "Accept-Encoding":"gzip, deflate, br",
        "Accept-Language":"fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
        "Connection":"keep-alive",
        "Content-Length":"183",
        "content-type":"application/json",
        "Host":"vdrm.mobiotics.com",
        "Origin":"https://noorplay.com",
        "Referer":"https://noorplay.com/",
        "sec-ch-ua":'"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"',
        "sec-ch-ua-mobile":"?0",
        "sec-ch-ua-platform":'"Windows"',
        "Sec-Fetch-Dest":"empty",
        "Sec-Fetch-Mode":"cors",
        "Sec-Fetch-Site":"cross-site",
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
        "x-session":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWJzY3JpYmVyaWQiOiJFVVNZeHdKTjB1a3AiLCJzdWJzY3JpYmVybmFtZSI6Itin2YHYqtix2KfYttmKIiwiZW1haWwiOiJmYXllem1vdW5pcjc3QGdtYWlsLmNvbSIsInByb2ZpbGVpZCI6IkVVU1l4d0pOMHVrcCIsImtpZHNtb2RlIjoiTk8iLCJob21lY291bnRyeSI6Ik1BIiwidmlzaXRpbmdjb3VudHJ5IjoiTUEiLCJkZXZpY2VpZGhhc2giOiIyOTE4OTdkNzM0ZWQ2MDhmZDY3NGVjOWJkMjM2ZGZkMTk2YzhlMzk1IiwiZGV2aWNlaWQiOiIyOTYyMTcyOTMyMTQxNTQ3IiwiZGV2aWNldHlwZSI6IlBDIiwiZGV2aWNlb3MiOiJXSU5ET1dTIiwiYXBwdmVyc2lvbiI6IjQ2LjQuMCIsImlwIjoiMTUuMTU4LjU1LjIwNSIsIkdlb0xvY0lwIjoiMTA1LjE1OS4xOTQuNjciLCJpc3N1ZXIiOiJub29ycGxheSIsImV4cGlyZXNJbiI6MTgwMDAsInByb3ZpZGVybmFtZSI6Ik5vb3JQbGF5IiwiaWF0IjoxNzA3MDAyNjYwLCJleHAiOjE3MDcwMjA2NjAsImlzcyI6Im5vb3JwbGF5In0.p-PGEVEhttO547jFe4S9e9h7q32GcHElZ2yaPzTEFO4",
    }
    
    json_data = {
        "payload": "CAQ=",
      "contentid": "qJBeeluNkNSE",
      "providerid": "noorplay",
      "timestamp": 1707003211,
      "drmscheme": "WIDEVINE",
      "customdata": {
        "packageid": "1234Cn7F4owg3m4o",
        "drmtoken": "OOkbyu7Q"
      },
    }
    
    response = requests.post('https://vdrm.mobiotics.com/prod/proxy/v1/license/widevine', headers=headers, json=json_data)
    and this is what I get:

    Image
    [Attachment 76769 - Click to enlarge]


    I think something is wrong with the header.
    Quote Quote  
  12. Originally Posted by moaBoBmArLeY View Post
    Hello, it's me again, I need some help if possible, this is what I get with HTTP Toolkit:

    Image
    [Attachment 76765 - Click to enlarge]


    Image
    [Attachment 76766 - Click to enlarge]


    My header.py is like that:

    Code:
    import requests
    
    headers = {
        "Accept":"*/*",
        "Accept-Encoding":"gzip, deflate, br",
        "Accept-Language":"fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
        "Connection":"keep-alive",
        "Content-Length":"183",
        "content-type":"application/json",
        "Host":"vdrm.mobiotics.com",
        "Origin":"https://noorplay.com",
        "Referer":"https://noorplay.com/",
        "sec-ch-ua":'"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"',
        "sec-ch-ua-mobile":"?0",
        "sec-ch-ua-platform":'"Windows"',
        "Sec-Fetch-Dest":"empty",
        "Sec-Fetch-Mode":"cors",
        "Sec-Fetch-Site":"cross-site",
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
        "x-session":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWJzY3JpYmVyaWQiOiJFVVNZeHdKTjB1a3AiLCJzdWJzY3JpYmVybmFtZSI6Itin2YHYqtix2KfYttmKIiwiZW1haWwiOiJmYXllem1vdW5pcjc3QGdtYWlsLmNvbSIsInByb2ZpbGVpZCI6IkVVU1l4d0pOMHVrcCIsImtpZHNtb2RlIjoiTk8iLCJob21lY291bnRyeSI6Ik1BIiwidmlzaXRpbmdjb3VudHJ5IjoiTUEiLCJkZXZpY2VpZGhhc2giOiIyOTE4OTdkNzM0ZWQ2MDhmZDY3NGVjOWJkMjM2ZGZkMTk2YzhlMzk1IiwiZGV2aWNlaWQiOiIyOTYyMTcyOTMyMTQxNTQ3IiwiZGV2aWNldHlwZSI6IlBDIiwiZGV2aWNlb3MiOiJXSU5ET1dTIiwiYXBwdmVyc2lvbiI6IjQ2LjQuMCIsImlwIjoiMTUuMTU4LjU1LjIwNSIsIkdlb0xvY0lwIjoiMTA1LjE1OS4xOTQuNjciLCJpc3N1ZXIiOiJub29ycGxheSIsImV4cGlyZXNJbiI6MTgwMDAsInByb3ZpZGVybmFtZSI6Ik5vb3JQbGF5IiwiaWF0IjoxNzA3MDAyNjYwLCJleHAiOjE3MDcwMjA2NjAsImlzcyI6Im5vb3JwbGF5In0.p-PGEVEhttO547jFe4S9e9h7q32GcHElZ2yaPzTEFO4",
    }
    
    json_data = {
        "payload": "CAQ=",
      "contentid": "qJBeeluNkNSE",
      "providerid": "noorplay",
      "timestamp": 1707003211,
      "drmscheme": "WIDEVINE",
      "customdata": {
        "packageid": "1234Cn7F4owg3m4o",
        "drmtoken": "OOkbyu7Q"
      },
    }
    
    response = requests.post('https://vdrm.mobiotics.com/prod/proxy/v1/license/widevine', headers=headers, json=json_data)
    and this is what I get:

    Image
    [Attachment 76769 - Click to enlarge]


    I think something is wrong with the header.
    The default error the WKS-Keys script give's isn't very clear by default. It is likely an error is being displayed in the response, so try printing using the below as it may help better diagnose the problem.

    PHP Code:
    print(response.status)
    print(
    response.text
    Quote Quote  
  13. Hello, when I add those lines in l3.py I get an error that response is not defined.

    If add to header.py I get response object has no attribute 'status'.

    So I've commented the line in fault and get:

    Code:
    {"body": "CAUSxwUKwQIIAxIQFwW5F8wSBIaLBjM6L3cqjBiCtIKSBSKOAjCCAQoCggEBAJntWzsyfateJO/DtiqVtZhSCtW8yzdQPgZFuBTYdrjfQFEEQa2M462xG7iMTnJaXkqeB5UpHVhYQCOn4a8OOKkSeTkwCGELbxWMh4x+Ib/7/up34QGeHleB6KRfRiY9FOYOgFioYHrc4E+shFexN6jWfM3rM3BdmDoh+07svUoQykdJDKR+ql1DghjduvHK3jOS8T1v+2RC/THhv0CwxgTRxLpMlSCkv5fuvWCSmvzu9Vu69WTi0Ods18Vcc6CCuZYSC4NZ7c4kcHCCaA1vZ8bYLErF8xNEkKdO7DevSy8BDFnoKEPiWC8La59dsPxebt9k+9MItHEbzxJQAZyfWgkCAwEAAToUbGljZW5zZS53aWRldmluZS5jb20SgAOuNHMUtag1KX8nE4j7e7jLUnfSSYI83dHaMLkzOVEes8y96gS5RLknwSE0bv296snUE5F+bsF2oQQ4RgpQO8GVK5uk5M4PxL/CCpgIqq9L/NGcHc/N9XTMrCjRtBBBbPneiAQwHL2zNMr80NQJeEI6ZC5UYT3wr8+WykqSSdhV5Cs6cD7xdn9qm9Nta/gr52u/DLpP3lnSq8x2/rZCR7hcQx+8pSJmthn8NpeVQ/ypy727+voOGlXnVaPHvOZV+WRvWCq5z3CqCLl5+Gf2Ogsrf9s2LFvE7NVV2FvKqcWTw4PIV9Sdqrd+QLeFHd/SSZiAjjWyWOddeOrAyhb3BHMEwg2T7eTo/xxvF+YkPj89qPwXCYcOxF+6gjomPwzvofcJOxkJkoMmMzcFBDopvab5tDQsyN9UPLGhGC98X/8z8QSQ+spbJTYLdgFenFoGq47gLwDS6NWYYQSqzE3Udf2W7pzk4ybyG4PHBYV3s4cyzdq8amvtE/sNSdOKReuHpfQ="}
    Code:
    #print(response.status)
    print(response.text)
    print(response)
    print(response) in header gives me 200 and I think this is what it should be.
    Last edited by moaBoBmArLeY; 3rd Feb 2024 at 19:47.
    Quote Quote  
  14. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Looks like l3 is not going to work with noorplay. There is a json packet that needs to be first collected then returned. The one you post is a one off and any download script will first need to obtain its own.
    Image
    [Attachment 76778 - Click to enlarge]

    This json packet is one time use only and the BROWSER has used it already.

    noorplay appears to use a similar approach to option 4 in the first post.

    Moorplay is not a beginners site and questions about it need to be asked in the main forum. Someone may have a script. Please don't continue here.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  15. RTE doesn't work anymore, right?

    Results:

    Code:
    PSSH: AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQzhoc9/Vsz3FwCbj/vfFNDhoIdXNwLWNlbmMiGHpob2M5L1ZzejNGd0Niai92ZkZORGc9PSoAMgA=
    License URL: https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm?token=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxMzYxNDgsImlhdCI6MTcwNzA0OTc0ODEyNywianRpIjoiYjU2ZDcwN2ItNDk0Mi00NjllLWI1ZjQtOWRkNDFkOTY0YjkzIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.dsHW5TnK_X-UV--BYN1z2HHMqFp1CSzIbNZK06nyCKJ0esBe3RtJNCIJQHLR7FCGqxsaE8b1qp4cuiVp5KqaOWXb0gLWQCvIGuWNnrvd1fpVpOrZW4mHlXSEfeRrWfgPlx1I126J-te9fZBmG8MpsBMCBnvB3E8BKW_lTyNjB-1kR3NNNhXDBi7BRDPwxXvHZcahPR2hWy6d802yl4cRfP_9slsC8wmAQ4kw56kGko0qvTLoLN73Jj_34eIChm6YL91qvvmj2KZ1vgV8mDr5tWItkEL7ScTdJB510kMYfMwxwx87g_2klU51V8_bCgXn2RxxWvnsjQZPwZQSMqVT8A&account=http%3A%2F%2Faccess.auth.theplatform.com%2Fdata%2FAccount%2F2700894001&form=json&schema=1.0
    
    PSSH obtained.
    AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQzhoc9/Vsz3FwCbj/vfFNDhoIdXNwLWNlbmMiGHpob2M5L1ZzejNGd0Niai92ZkZORGc9PSoAMgA=
    
    license response status: <Response [200]>
    server reports: {"title":"com.theplatform.module.exception.ValidationException","description":"Widevine generateLicense call against [https://license.widevine.com/cenc/getlicense/theplatformrte] failed with status [ACCESS_DENIED]: drm-serial-number-has-been-individually-revoked","responseCode":422,"correlationId":"b554ed8b-5502-410c-a29d-59614b97935e","isException":true}
    server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.

    headers.py

    Code:
    import requests
    
    headers = {
        'Accept': '*/*',
        'Accept-Language': 'en-US,en;q=0.9',
        'Connection': 'keep-alive',
        'Origin': 'https://www.rte.ie',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'cross-site',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/106.0.0.0',
        'content-type': 'text/plain;charset=UTF-8',
        'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Opera";v="106"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }
    
    '''params = {
        'token': 'eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxMzYxNDgsImlhdCI6MTcwNzA0OTc0ODEyNywianRpIjoiYjU2ZDcwN2ItNDk0Mi00NjllLWI1ZjQtOWRkNDFkOTY0YjkzIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.dsHW5TnK_X-UV--BYN1z2HHMqFp1CSzIbNZK06nyCKJ0esBe3RtJNCIJQHLR7FCGqxsaE8b1qp4cuiVp5KqaOWXb0gLWQCvIGuWNnrvd1fpVpOrZW4mHlXSEfeRrWfgPlx1I126J-te9fZBmG8MpsBMCBnvB3E8BKW_lTyNjB-1kR3NNNhXDBi7BRDPwxXvHZcahPR2hWy6d802yl4cRfP_9slsC8wmAQ4kw56kGko0qvTLoLN73Jj_34eIChm6YL91qvvmj2KZ1vgV8mDr5tWItkEL7ScTdJB510kMYfMwxwx87g_2klU51V8_bCgXn2RxxWvnsjQZPwZQSMqVT8A',
        'account': 'http://access.auth.theplatform.com/data/Account/2700894001',
        'form': 'json',
        'schema': '1.0',
    }'''
    
    data = '{"getWidevineLicense":{"releasePid":"xrkxDwUcsMVG","widevineChallenge":"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"}}'
    
    '''response = requests.post(
        'https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm',
        params=params,
        headers=headers,
        data=data,
    )'''

    l3.py

    Code:
    # -*- coding: utf-8 -*-
    # Module: widevine_keys
    # Created on: 10.12.2021
    # Authors: medvm
    # Version: 2.1.0
    
    import base64, requests, sys, xmltodict
    import headers
    # import cookies
    import json
    from cdm import cdm, deviceconfig
    from base64 import b64encode
    from getPSSH import get_pssh
    from wvdecryptcustom import WvDecrypt
    from cdm.formats import wv_proto2_pb2 as wv_proto2
    from urllib.parse import urlparse
    import logging
    
    pssh = input('\nPSSH: ')
    #MDP_URL = input('\nInput MPD URL: ')
    lic_url = input('License URL: ')
    #lic_url = 'https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm?token=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxNzEwMDcsImlhdCI6MTcwNzA4NDYwNzc0MiwianRpIjoiNjczNzcxZmMtOGUxMi00YjBiLThkZmMtNGEzN2JhM2ZkZDUyIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.wiqtegiISa9Ey8FL8cAXmbI8PP3Gq5a3AYwwyzhgI4nRz4jN4TOrWnCggUXPWKyumrAjKyb_VA8IADWrU5n7P8O2X1o5JUIkc41gw0GgmPMy30XQcpBbIzNhvJ_0vgt_7-59nupDU1_a0JFLzWYsErJCvSHucqc5vUNLtqkavzI2G61i6Y2yhpulwOh5HvRwGvDcgiF2B3KlkTa0kx-Kv8qMOoQJPpmFqRiqMnsTr--8GNNHSWA8TwesGop4aV-LIHwNtR4x4d02XTu38-EWMj03entm7gysZrI-PuFEaw1XbSlVokWR8WCvXVcmG6LTaOVtsI3qZJOc4ivK0EKr0w&account=http%3A%2F%2Faccess.auth.theplatform.com%2Fdata%2FAccount%2F2700894001&form=json&schema=1.0'
    
    #pssh = 'AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQK8FZDnIyNxKXlOKPPEXqAhoIdXNwLWNlbmMiGEs4RlpEbkl5TnhLWGxPS1BQRVhxQWc9PSoAMgA='
    responses = []
    license_b64 = ''
    #pssh = get_pssh(MDP_URL)
    params = None
    params = urlparse(lic_url).query
    
    print(f'{chr(10)}PSSH obtained.\n{pssh}')
    
    def WV_Function(pssh, lic_url, cert_b64=None):
        global license_b64
        wvdecrypt = WvDecrypt(init_data_b64=pssh, cert_data_b64=cert_b64, device=deviceconfig.device_android_generic)                   
        raw_request = wvdecrypt.get_challenge()
        request = b64encode(raw_request)
        signature = cdm.hash_object
    
        # rte.ie support
        # read headers.py produced from cURL of up-to-date license
        # to extract releasePid from RTE licence url
        myjson = json.loads(headers.data)
        pid = myjson["getWidevineLicense"]["releasePid"]
        responses.append(
            requests.post(
                url=lic_url,
                headers=headers.headers,
                params=params,
                json={
                    "getWidevineLicense": {
                        "releasePid": pid,
                        "widevineChallenge": str(request, "utf-8"),
                    },
                },
            )
        )
    
        for idx, response in enumerate(responses):
            try:
                str(response.content, "utf-8")
            except UnicodeDecodeError:
                widevine_license = response
                print(f"{chr(10)}license response status: {widevine_license}{chr(10)}")
                break
            else:
                if len(str(response.content, "utf-8")) > 500:
                    widevine_license = response
                    print(f"{chr(10)}license response status: {widevine_license}{chr(10)}")
                    break
            if idx == len(responses) - 1:
                print(f"{chr(10)}license response status: {response}")
                print(f'server reports: {str(response.content, "utf-8")}')
                print(
                    f"server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.{chr(10)}"
                )
                exit()
    
        lic_field_names = ["license", "payload", "getWidevineLicenseResponse"]
        lic_field_names2 = ["license"]
    
        open("license_content.bin", "wb").write(widevine_license.content)
    
        try:
            if str(widevine_license.content, "utf-8").find(":"):
                for key in lic_field_names:
                    try:
                        license_b64 = json.loads(widevine_license.content.decode())[key]
                    except:
                        pass
                    else:
                        for key2 in lic_field_names2:
                            try:
                                license_b64 = json.loads(widevine_license.content.decode())[
                                    key
                                ][key2]
                            except:
                                pass
            else:
                license_b64 = widevine_license.content
        except:
            license_b64 = b64encode(widevine_license.content)
    
    
        wvdecrypt.update_license(license_b64)
        Correct, keyswvdecrypt = wvdecrypt.start_process()
        if Correct:
            return Correct, keyswvdecrypt   
    correct, keys = WV_Function(pssh, lic_url)
    
    print()
    for key in keys:
        print('--key ' + key)
    P.S. I accessed the video without logging in.
    Quote Quote  
  16. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by EatB4Bath View Post
    RTE doesn't work anymore, right?
    I've no idea if my script still works or not.

    I do know you haven't read the screen-acres of dross you posted. Look what the license server said

    failed with status [ACCESS_DENIED]: drm-serial-number-has-been-individually-revoked","responseCode":422,"correlationId":"b554ed8b-5502-410c-a29d-59614b97935e","isException":true}
    Looks like you need a new CDM
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  17. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by EatB4Bath View Post
    RTE doesn't work anymore, right?
    I've no idea if my script still works or not.

    I do know you haven't read the screen-acres of dross you posted. Look what the license server said

    failed with status [ACCESS_DENIED]: drm-serial-number-has-been-individually-revoked","responseCode":422,"correlationId":"b554ed8b-5502-410c-a29d-59614b97935e","isException":true}
    Looks like you need a new CDM
    I do read it, just don't get it.

    I'm using this one: https://github.com/medvm/widevine_keys

    If I am wrong, do you have any suggestions?
    Quote Quote  
  18. Originally Posted by moaBoBmArLeY View Post
    Thanks, it will take me a while to try on my old PC for installing Android Studio.
    Quote Quote  
  19. I did it with just 8 GB of RAM on my PC, good luck.
    Quote Quote  
  20. I am lucky with new CDM dumping.
    But out of luck in getting keys from RTE.

    However, it's strange that license URL looks different. i.e. no data field when doing copy cURL, and params only be seen in url, even url itself coming from a new domain.

    Before
    Code:
    https://widevine.entitlement.eu.theplatform.com/wv/web/ModularDrm?token=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcxNzEwMDcsImlhdCI6MTcwNzA4NDYwNzc0MiwianRpIjoiNjczNzcxZmMtOGUxMi00YjBiLThkZmMtNGEzN2JhM2ZkZDUyIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.wiqtegiISa9Ey8FL8cAXmbI8PP3Gq5a3AYwwyzhgI4nRz4jN4TOrWnCggUXPWKyumrAjKyb_VA8IADWrU5n7P8O2X1o5JUIkc41gw0GgmPMy30XQcpBbIzNhvJ_0vgt_7-59nupDU1_a0JFLzWYsErJCvSHucqc5vUNLtqkavzI2G61i6Y2yhpulwOh5HvRwGvDcgiF2B3KlkTa0kx-Kv8qMOoQJPpmFqRiqMnsTr--8GNNHSWA8TwesGop4aV-LIHwNtR4x4d02XTu38-EWMj03entm7gysZrI-PuFEaw1XbSlVokWR8WCvXVcmG6LTaOVtsI3qZJOc4ivK0EKr0w&account=http%3A%2F%2Faccess.auth.theplatform.com%2Fdata%2FAccount%2F2700894001&form=json&schema=1.0
    After
    Code:
    https://link.eu.theplatform.com/s/1uC-gC/media/OJujtJIVcWq7?auth=eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJydGUtcHJkLXByZC10cnQvYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImlzcyI6IjEiLCJleHAiOjE3MDcyMjg3NDUsImlhdCI6MTcwNzE0MjM0NTYzNywianRpIjoiYzM3Nzg1ODMtNGViNy00OWRkLWE3OTMtMGIyNTI4OWE3MjkyIiwiZGlkIjoicnRlLXByZC1wcmQtdHJ0IiwidW5tIjoiYW5vbnltb3VzX25ncnBfcGxheWVyQHJ0ZS5pZSIsImN0eCI6IntcInVzZXJOYW1lXCI6XCJhbm9ueW1vdXNfbmdycF9wbGF5ZXJAcnRlLmllXCJ9XG4iLCJvaWQiOiIyNzAwODk0MDAxIn0.m6hYHuYOuZqPKxx2C_yTaNYfeo3zUZcyGgQeX0foztkAtsuLxexsJ1Z9aFln3Xo43ci176J9bFey8plOg1f4x0gcY35v7hWNymIVgXByY4CO0YmMyKpsv_TZ3g0UB6rCF7sXD45JLsFXvFpu9S_tiWHd9hMi8LjYOPize9WRBhMPR1lHPFO68GB8mHRMprR8zYyhKZASpXt-katZj5VTTeDizRk2mPoNKLr40pAAZFD81KFMiTmcoVfu3JbMOyUEQ_gJCYLM2N9Vc87mHpDgxrYd6DQQ-c6uVXk2g5Lg5L28GT5LtKVWv01zPgdD4tgYaLI03LfByv9mOxk61pmbaA&format=SMIL&embedded=true&tracking=true&policy=121498957&iu=/3014/RTE_Player_VOD/Desktop_Web/NotRegistered&assetTypes=default:isl&formats=mpeg-dash
    Here is an error with new CDM...

    Code:
    license response status: <Response [200]>
    
    Traceback (most recent call last):
      File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\l3rte.py", line 104, in <module>
        correct, keys = WV_Function(pssh, lic_url)
      File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\l3rte.py", line 100, in WV_Function
        wvdecrypt.update_license(license_b64)
      File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\wvdecryptcustom.py", line 58, in update_license
        self.cdm.provide_license(self.session, license_b64)
      File "D:\Portable\Portable Python-3.10.5 x64\Projects\wv-keys\cdm\cdm.py", line 285, in provide_license
        session.session_key = oaep_cipher.decrypt(license.SessionKey)
      File "D:\Portable\Portable Python-3.10.5 x64\App\Python\lib\site-packages\Cryptodome\Cipher\PKCS1_OAEP.py", line 167, in decrypt
        raise ValueError("Ciphertext with incorrect length.")
    ValueError: Ciphertext with incorrect length.
    Quote Quote  
  21. You got a good response (200).

    You are in the right direction, now you should look what you have in in those lines [alt+g] in python editor and enter the line number.

    You can add a print(response) too to check the type, array or string etc. ...
    Quote Quote  
  22. Bravo! I've succeeded. Thank you very much.

    video url:
    https://www.rte.ie/player/series/fair-city/SI0000000564?epguid=IH10000987-23-0197

    key:
    Code:
    --key a1214849421496d0c2b52add1f8eb820:124bc09b0d1488a0a64976e57e523d87
    Good night.
    Quote Quote  
  23. Well done!

    But can you explain what you did?
    Quote Quote  
  24. Originally Posted by moaBoBmArLeY View Post
    Well done!

    But can you explain what you did?
    Sure, I have done two things at the same time, no idea which one is a true solution.

    1. Used the Before's (not After's one) License URL from my previous reply, that is a correct one.(You will send a request with "releasePid" and "widevineChallenge"). Other urls were just a trap.

    2. Reordered a request arguments as same as you found them in cURL(converter) command.

    But, that is not work in most cases, I mean in more complex streaming or some other websites.

    So, I have another question:
    If the message is the same ("ValueError: Ciphertext with incorrect length."), but get 403 (no response or accessed denied),
    in this case, would it be CDM has been dumped from the old/obsoleted devices?
    Or are there anything we can do or inspect? Or just give up?
    Quote Quote  
  25. It means that the value that you have to decode have an unexpected length.

    I got that problem in the past 2 days because the returned value was something like that:

    array (boolean,new array(desired values,desired values,desired values)).

    And to bypass the problem I've decoded first array[1].

    Or maybe you should just add an exit if response status is not 200 to not try to decode something that can't be decoded.

    Something like that:

    Code:
    if response.status_code == 200:
        ... .... .....
        print('[+] data has been reterived successfully.')
    else:
        print(f"[-] couldn't retrive data.\n\tresponse: {response.text}")
        exit()
    Quote Quote  
  26. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by EatB4Bath View Post
    Or just give up?
    I've checked the RTE downloader given at post #2. It was the script I assumed you were referring to earlier. It wasn't complete and needed an import I hadn't supplied but it is all fixed now.

    All you need is a working CDM in WKS-KEYS; put RTE.py from post #2 https://forum.videohelp.com/threads/407216-Decryption-The-Dungeon-of-Despair#post2669285 inside WKS-KEYS.
    Read the script preamble and follow instructions.
    You also need the stream detector plugin to provide the mpd in table-entry form.
    The license is copied as cURL - not just the address so it contains all the parameters.

    The script use N_m3u8DL-RE and it and also the stuff it calls needs to on your system and in Path so the script may find it. Do your own research in the forum; much help has been posted about getting N_m3u8DL-RE running.


    Image
    [Attachment 76800 - Click to enlarge]
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  27. Yes, if it's like that, I think I can deal with. But in my case (in the real world), it returns only [<Response [403]>] from the responses. , then can't go any further.

    Can we continue discuss by PM. (the details will be against board rules)
    Quote Quote  
  28. @A_n_g_e_l_a

    Thanks for your updated and helpful information.
    Quote Quote  



Similar Threads

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