VideoHelp Forum

+ Reply to Thread
Results 1 to 19 of 19
Thread
  1. Hi all.
    I have long studied the forum and came to the conclusion that only here can help me to download and decrypt the DRM video
    I want to download videos from kinescope.io hosting, apparently they use protection not similar to Widevine, it seems to me that it is ClearKey.

    There are 2 videos on the page, EME logger shows the following output

    Code:
    [EME] Navigator::requestMediaKeySystemAccess
        Key System: org.w3.clearkey
        Supported Configurations:
        [
            {
                "initDataTypes": [
                    "cenc"
                ],
                "videoCapabilities": [
                    {
                        "contentType": "video/mp4;codecs=\"avc1.4D401E\"",
                        "robustness": ""
                    }
                ],
                "distinctiveIdentifier": "optional",
                "persistentState": "optional",
                "sessionTypes": [
                    "temporary"
                ]
            }
        ]
    
    [EME] MediaKeySystemAccess::createMediaKeys
        Key System: org.w3.clearkey
        Configurations:
        {
            "audioCapabilities": [],
            "distinctiveIdentifier": "not-allowed",
            "initDataTypes": [
                "cenc"
            ],
            "label": "",
            "persistentState": "not-allowed",
            "sessionTypes": [
                "temporary"
            ],
            "videoCapabilities": [
                {
                    "contentType": "video/mp4;codecs=\"avc1.4D401E\"",
                    "robustness": ""
                }
            ]
        }
    
    [EME] MediaKeys::createSession
        Session Type: temporary
    
    [EME] MediaKeySession::generateRequest
        Session ID: (not available)
        Init Data Type: keyids
        Init Data: eyJraWRzIjpbIlpsRnZXRVY0YUhOQldHVnplVUZyUFEiXX0=
    
    [EME] MediaKeys::createSession
        Session Type: temporary
    
    [EME] MediaKeySession::generateRequest
        Session ID: (not available)
        Init Data Type: keyids
        Init Data: eyJraWRzIjpbIlpsRnZXRVY0YUhOQldHVnplVUZyUFEiXX0=
    
    [EME] MediaKeySession::message
        Session ID: 1
        Message Type: license-request
        Message: eyJraWRzIjpbIlpsRnZXRVY0YUhOQldHVnplVUZyUFEiXSwidHlwZSI6InRlbXBvcmFyeSJ9
        Listeners: 
    Array [ {} ]
    
    [EME] MediaKeySession::message
        Session ID: 2
        Message Type: license-request
        Message: eyJraWRzIjpbIlpsRnZXRVY0YUhOQldHVnplVUZyUFEiXSwidHlwZSI6InRlbXBvcmFyeSJ9
        Listeners: 
    Array [ {} ]
    
    [EME] Navigator::requestMediaKeySystemAccess
        Key System: org.w3.clearkey
        Supported Configurations:
        [
            {
                "initDataTypes": [
                    "cenc"
                ],
                "videoCapabilities": [
                    {
                        "contentType": "video/mp4;codecs=\"avc1.4D401E\"",
                        "robustness": ""
                    }
                ],
                "distinctiveIdentifier": "optional",
                "persistentState": "optional",
                "sessionTypes": [
                    "temporary"
                ]
            }
        ]
    
    [EME] MediaKeySystemAccess::createMediaKeys
        Key System: org.w3.clearkey
        Configurations:
        {
            "audioCapabilities": [],
            "distinctiveIdentifier": "not-allowed",
            "initDataTypes": [
                "cenc"
            ],
            "label": "",
            "persistentState": "not-allowed",
            "sessionTypes": [
                "temporary"
            ],
            "videoCapabilities": [
                {
                    "contentType": "video/mp4;codecs=\"avc1.4D401E\"",
                    "robustness": ""
                }
            ]
        }
    
    [EME] MediaKeys::createSession
        Session Type: temporary
    
    [EME] MediaKeySession::generateRequest
        Session ID: (not available)
        Init Data Type: keyids
        Init Data: eyJraWRzIjpbImJWWkxVSE00YnpCS0xVUXRSRWxSUFEiXX0=
    
    [EME] MediaKeys::createSession
        Session Type: temporary
    
    [EME] MediaKeySession::generateRequest
        Session ID: (not available)
        Init Data Type: keyids
        Init Data: eyJraWRzIjpbImJWWkxVSE00YnpCS0xVUXRSRWxSUFEiXX0=
    
    [EME] MediaKeySession::message
        Session ID: 3
        Message Type: license-request
        Message: eyJraWRzIjpbImJWWkxVSE00YnpCS0xVUXRSRWxSUFEiXSwidHlwZSI6InRlbXBvcmFyeSJ9
        Listeners: 
    Array [ {} ]
    
    [EME] MediaKeySession::message
        Session ID: 4
        Message Type: license-request
        Message: eyJraWRzIjpbImJWWkxVSE00YnpCS0xVUXRSRWxSUFEiXSwidHlwZSI6InRlbXBvcmFyeSJ9
        Listeners: 
    Array [ {} ]
    
    [EME] MediaKeySession::update
        Session ID: 1
        Response: eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJabEZ2V0VWNGFITkJXR1Z6ZVVGclBRIiwiayI6IlZEUm9VM1kwVUd0cGJuSkdjV2cwUFEifV19
    
    [EME] MediaKeySession::keystatuseschange
        Session ID: 1
        [USABLE] ZlFvWEV4aHNBWGVzeUFrPQ==
        Listeners: 
    Array [ {} ]
    
    [EME] MediaKeySession::update
        Session ID: 2
        Response: eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJabEZ2V0VWNGFITkJXR1Z6ZVVGclBRIiwiayI6IlZEUm9VM1kwVUd0cGJuSkdjV2cwUFEifV19 
    
    [EME] MediaKeySession::keystatuseschange
        Session ID: 2
        [USABLE] ZlFvWEV4aHNBWGVzeUFrPQ==
        Listeners: 
    Array [ {} ]
    
    [EME] MediaKeySession::update
        Session ID: 4
        Response: eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJiVlpMVUhNNGJ6QktMVVF0UkVsUlBRIiwiayI6ImRESmpXbXBNZDBGWlQwZFdVRkpSUFEifV19
    
    [EME] MediaKeySession::keystatuseschange
        Session ID: 4
        [USABLE] bVZLUHM4bzBKLUQtRElRPQ==
        Listeners: 
    Array [ {} ]
    
    [EME] MediaKeySession::update
        Session ID: 3
        Response: eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJiVlpMVUhNNGJ6QktMVVF0UkVsUlBRIiwiayI6ImRESmpXbXBNZDBGWlQwZFdVRkpSUFEifV19
    
    [EME] MediaKeySession::keystatuseschange
        Session ID: 3
        [USABLE] bVZLUHM4bzBKLUQtRElRPQ==
        Listeners: 
    Array [ {} ]
    Can you please tell me what to do?)
    With widevine I know how to bypass protection, but with clearkey has not yet encountered
    Quote Quote  
  2. Maybe it works like this.
    The last base64 response is:
    Code:
    eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJiVlpMVUhNNGJ6QktMVVF0UkVsUlBRIiwiayI6ImRESmpXbXBNZDBGWlQwZFdVRkpSUFEifV19
    When you base64 decode this you get
    Code:
    {"keys":[{"kty":"oct","alg":"A128KW","kid":"bVZLUHM4bzBKLUQtRElRPQ","k":"dDJjWmpMd0FZT0dWUFJRPQ"}]}
    When you base64 to hex the kid and k (key) you get
    Code:
    6d564b5073386f304a2d442d4449513d
    Code:
    7432635a6a4c7741594f47565052513d
    So this might be your kid:key combination.
    Buuuut I see the last 4 characters are the same and it kinda makes me think that it doesn't work like this.
    Quote Quote  
  3. @Marsha0xGriffith


    Please kindly give the top url of the video.


    Btw: another great job [ss]vegeta


    I have a suspicion the you can use those credentials with hlsdl
    Quote Quote  
  4. Curl command to get master.mpd
    https://pastebin.com/v7NWHkcF

    But there is one strange thing, the video itself does not last more than 15 minutes, but when downloaded through mpd in the worst quality you get a file size of 9 GB
    downloaded with

    Code:
    yt-dlp --allow-u --downloader aria2c
    Quote Quote  
  5. Originally Posted by [ss]vegeta View Post
    Maybe it works like this.
    The last base64 response is:
    Code:
    eyJrZXlzIjpbeyJrdHkiOiJvY3QiLCJhbGciOiJBMTI4S1ciLCJraWQiOiJiVlpMVUhNNGJ6QktMVVF0UkVsUlBRIiwiayI6ImRESmpXbXBNZDBGWlQwZFdVRkpSUFEifV19
    When you base64 decode this you get
    Code:
    {"keys":[{"kty":"oct","alg":"A128KW","kid":"bVZLUHM4bzBKLUQtRElRPQ","k":"dDJjWmpMd0FZT0dWUFJRPQ"}]}
    When you base64 to hex the kid and k (key) you get
    Code:
    6d564b5073386f304a2d442d4449513d
    Code:
    7432635a6a4c7741594f47565052513d
    So this might be your kid:key combination.
    Buuuut I see the last 4 characters are the same and it kinda makes me think that it doesn't work like this.
    Thanks, but I have no way to test it yet, my internet is limited and there is not enough space on my VDS to fully decode a 9 GB file

    I can not imagine how a video 13-15 minutes long in SD quality can take 9 GB
    Quote Quote  
  6. The video you think is 13-15 minutes is prolly only a smaaall part of the content in this MPD.
    This mpd is 500kb and it contains thousands of segments.
    Even the audio is 13GB lol.
    Quote Quote  
  7. Weird stuff is happening.
    I downloaded the audio and MediaInfo says 163 hours.
    Windows and media players say 25 minutes 30 seconds.
    I tried decrypting the audio with the key I mentioned up there. Even after decryption, MediaInfo says it is still encrypted, and yet the audio is playable, at least for those 25 minutes and 30 seconds.
    Quote Quote  
  8. key above works...but size of video not matches with time...getting nearly 3 minutes for 3gb plus size
    Image Attached Thumbnails Click image for larger version

Name:	Capture1.JPG
Views:	119
Size:	105.1 KB
ID:	64776  

    Click image for larger version

Name:	Capture.JPG
Views:	158
Size:	246.9 KB
ID:	64777  

    Quote Quote  
  9. Originally Posted by [ss]vegeta View Post
    Weird stuff is happening.
    I downloaded the audio and MediaInfo says 163 hours.
    Windows and media players say 25 minutes 30 seconds.
    I tried decrypting the audio with the key I mentioned up there. Even after decryption, MediaInfo says it is still encrypted, and yet the audio is playable, at least for those 25 minutes and 30 seconds.
    Thank you all, now looking for a suitable VPS to check
    There is still a question about the size of the files))
    The bitrate 223 mbps looks strange, maybe after decoding it will be possible to compress the video to an adequate size with ffmpeg
    Quote Quote  
  10. Hi all, finally found a suitable vps server to test
    It looks like it really works, only I still can't figure out how to bring the final file to a normal size.
    I can also get the master.m3u8 from this site using the same link, but not sure if that helps.
    I think the video/audio should be no bigger than 150 mb, but definitely not 50+ GB

    Maybe someone has encountered a similar situation?
    Is it possible to change mpd file in some way, maybe remove some extra parts to get normal sized files?
    Or is it the only option - to download files of that size, decrypt them and then convert them?
    If there are ffmpeg experts here - I'll be grateful for hints
    Quote Quote  
  11. 'Please kindly give the top url of the video.'
    Quote Quote  
  12. Originally Posted by Marsha0xGriffith View Post
    Hi all, finally found a suitable vps server to test
    It looks like it really works, only I still can't figure out how to bring the final file to a normal size.
    I can also get the master.m3u8 from this site using the same link, but not sure if that helps.
    I think the video/audio should be no bigger than 150 mb, but definitely not 50+ GB

    Maybe someone has encountered a similar situation?
    Is it possible to change mpd file in some way, maybe remove some extra parts to get normal sized files?
    Or is it the only option - to download files of that size, decrypt them and then convert them?
    If there are ffmpeg experts here - I'll be grateful for hints
    looks like its not being parsed properly by yt-dlp (maybe its all the extra linebreaks and tabs thats causing a problem - or thats just what i see)
    the mpd breaks up the file into fragments by using range requests.
    you can grab the correct file by downloading the full mp4 file for video and audio, decrypting them and then joining them.
    ie. for 360p
    Code:
    curl -o 360p.mp4 "https://kinescopecdn.net/7a16ef25-a06d-4915-b783-b59db753c39e/videos/a9f74926-8279-44e6-a08d-3462436e692c/assets/195901bf-9039-4f73-9f6d-dd1a5554b2f6/360p.mp4?expires=1652743983&sign=<blah>"
    resulting joined video + audio for 360p is 25:31 long and ~60mb

    heres a fixed up version of that mpd that works with yt-dlp
    https://transfer.sh/get/tEyIGn/kinescope1.mpd
    Quote Quote  
  13. Nice Elcap....so that was the issue...all the tabs and spaces in mpd...if you clean it up it will work with yt-dlp...
    Quote Quote  
  14. sort of.
    even when i cleaned up the spaces and line breaks it still didnt want to work, so i recreated it similar to another mpd that used progressive download.
    the mpd is much smaller now, but itd be much quicker to just grab one of the video and audio file links and manually grab the whole mp4 file, then decrypt, join etc.
    Quote Quote  
  15. Originally Posted by ElCap View Post
    then decrypt, join etc.
    What comes after joining?
    I know some people tend to do something along the lines of... watching. But there's no fun in that.
    Quote Quote  
  16. Archiving, of course.
    This is only for educational purposes
    Quote Quote  
  17. Yay, I finally figured it out!
    Special thanks to [ss]vegeta and ElCap!
    And thanks to everyone who helped me solve this difficult problem!
    Quote Quote  
  18. The solution for those who do not understand (windows):

    yt-dlp.exe --merge-output-format mp4 https://kinescope.io/NumbersOfYourLesson/master.m3u8 --referer https://kinescope.io -o "NameYourLesson"

    You should have the latest versions of "yt-dlp.exe" and "ffmpeg.exe" in the folder.
    This command will download the video and audio streams separately, then merge them and give them the name you specify.
    P.S All the participants in this thread deserve thanks, without their help I would not have guessed how to download from kinescope.io. You are cool!!!
    Quote Quote  
  19. Member
    Join Date
    Sep 2022
    Location
    Vilnius
    Search PM
    Can you help me and explain step by step how to download video? Thank you very much, friends!
    Quote Quote  



Similar Threads