VideoHelp Forum




+ Reply to Thread
Page 15 of 21
FirstFirst ... 5 13 14 15 16 17 ... LastLast
Results 421 to 450 of 609
  1. Member
    Join Date
    Aug 2023
    Location
    Egypt
    Search Comp PM
    Originally Posted by maydayhelp View Post
    Originally Posted by stabbedbybrick View Post
    Originally Posted by koberulz View Post
    How did you get to that content ID?
    From the PSSH. You can use this: https://tools.axinom.com/decoders/PsshBox
    Hello, I entered my PSSH into that site, but I can't tell which entry is the "content ID".

    My PSSH is:

    Code:
    AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEAAAAAAcHi0zYzAgICAgICBI88aJmwY=
    It needs a Australian phone verification...
    Last edited by Spy; 10th Oct 2023 at 09:32.
    Quote Quote  
  2. Everything worked like a charm! Thank you very much!

    But while downloading the file I am getting "Too Many Requests (429 error code)"

    What's the solution for this?

    Image
    [Attachment 74319 - Click to enlarge]
    Image Attached Thumbnails Click image for larger version

Name:	429.JPG
Views:	46
Size:	74.5 KB
ID:	74318  

    Quote Quote  
  3. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by rentala17 View Post
    Everything worked like a charm! Thank you very much!

    But while downloading the file I am getting "Too Many Requests (429 error code)"

    What's the solution for this?
    Your question is unanswerable without further infomation, except I suppose the glib, "make fewer requests"
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  4. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by rentala17 View Post
    Everything worked like a charm! Thank you very much!

    But while downloading the file I am getting "Too Many Requests (429 error code)"

    What's the solution for this?
    Your question is unanswerable without further infomation, except I suppose the glib, "make fewer requests"
    Got it!

    Code:
    N_m3u8DL-RE.exe "https://cdn.bitmovin.com/content/assets/art-of-motion_drm/mpds/11331.mpd" --key ccbf5fb4c299fd73:9cc0c92044cb5f5839a159df --key 9bf0e9cf0d610:90f52fd1d0c2fed7a12ae1 --key eb676abbcbf616630f1a3da:100b6c2b57d2dacb --key 0294b9599d7fa5eab7:3bd27b9c0f03e26 --key 639da80f3bdf6:22af348f4 --thread-count 1
    I used the above code for download. But I think with the number of requests being too high the server is blocking me. How do I include the rate in my command? so that I can make lesser number of requests per min
    Quote Quote  
  5. Last edited by jackbrain232; 15th Nov 2023 at 03:33.
    Quote Quote  
  6. Originally Posted by jackbrain232 View Post
    Dear all,

    I am not sure if I have everything that i need to download decrypted playable video. My scenario is this:

    My MPD URL is https://cfc.nextias.com/file_library/videos/dash_drm/18444/314241720475857860_video_VOD.mpd

    and the MPD content is :

    <?xml version="1.0" encoding="UTF-8"?>
    <MPD xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dashchema:mpd:2011" xmlns:cenc="urn:mpeg:cenc:2013" xmlns:mspr="urn:microsoftlayready" xsichemaLocation="urn:mpeg:dashchema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" type="static" minBufferTime="PT6S" profiles="urn:mpeg:dashrofile:isoff-main:2011" mediaPresentationDuration="PT2H33M11.360S">
    <Period start="PT0S" duration="PT2H33M11.360S" id="1">
    <AdaptationSet mimeType="video/mp4" frameRate="25/1" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="false">
    <ContentProtection cenc:default_KID="3df2924f-ddb1-76d1-7302-8298f9d2908a" schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"/>
    <ContentProtection cenc:default_KID="3df2924f-ddb1-76d1-7302-8298f9d2908a" schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="2.0">
    <msprro>igIAAAEAAQCAAjwAVwBSAE0ASABFAEEARABFAFIA IA B4AG0 AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAc wAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQA vADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIA GUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADA ALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQ wBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwB LAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUA FIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEk ATgBGAE8APgA8AEsASQBEAD4AVAA1AEwAeQBQAGIASABkADAAW ABaAHoAQQBvAEsAWQArAGQASwBRAGkAZwA9AD0APAAvAEsASQB EAD4APABDAEgARQBDAEsAUwBVAE0APgAyADUAZgAyADYATgBjA EEAdgAyADAAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEE AXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBsAGkAYwBlAG4Ac wBlAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwB sAGkAYwBlAG4AcwBlAE0AYQBuAGEAZwBlAHIALgBkAG8APAAvA EwAQQBfAFUAUgBMAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0 ASABFAEEARABFAFIAPgA=</msprro>
    <cencssh>AAACqnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQA AA oqKAg AAAQABAIACPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4A cwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQ BpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAw ADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAG QAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAA LgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQ BOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZ AEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC 8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYA TwA+ADwASwBJAEQAPgBUADUATAB5AFAAYgBIAGQAMABYAFoAeg BBAG8ASwBZACsAZABLAFEAaQBnAD0APQA8AC8ASwBJAEQAPgA8 AEMASABFAEMASwBTAFUATQA+ADIANQBmADIANgBOAGMAQQB2AD IAMAA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUA UgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAGUAbgBzAGUALg BwAGEAbABsAHkAYwBvAG4ALgBjAG8AbQAvAHIAaQAvAGwAaQBj AGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF 8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUA QQBEAEUAUgA+AA==</cencssh>
    </ContentProtection>
    <ContentProtection cenc:default_KID="3df2924f-ddb1-76d1-7302-8298f9d2908a" schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
    <cencssh>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QA AA EoIAR IQPfKST92xdtFzAoKY+dKQihoMaW5rYWVudHdvcmtzIiIxODQ0 NF8zMTQyNDE3MjA0NzU4NTc4NjBfdmlkZW9fVk9EKgJIRA==</cencssh>
    </ContentProtection>
    <Representation id="1" width="1280" height="720" bandwidth="1700000" codecs="avc1.4d401f">
    <BaseURL>314241720475857860_video_VOD_720.mp4</BaseURL>
    <SegmentBase indexRange="1600-56791">
    <Initialization range="0-1599"/>
    </SegmentBase>
    </Representation>
    <Representation id="2" width="854" height="480" bandwidth="1100000" codecs="avc1.4d401e">
    <BaseURL>314241720475857860_video_VOD_480.mp4</BaseURL>
    <SegmentBase indexRange="1602-56793">
    <Initialization range="0-1601"/>
    </SegmentBase>
    </Representation>
    <Representation id="3" width="640" height="360" bandwidth="700000" codecs="avc1.4d401e">
    <BaseURL>314241720475857860_video_VOD_360.mp4</BaseURL>
    <SegmentBase indexRange="1601-56792">
    <Initialization range="0-1600"/>
    </SegmentBase>
    </Representation>
    <Representation id="4" width="360" height="240" bandwidth="300000" codecs="avc1.42c00d">
    <BaseURL>314241720475857860_video_VOD_240.mp4</BaseURL>
    <SegmentBase indexRange="1600-56791">
    <Initialization range="0-1599"/>
    </SegmentBase>
    </Representation>
    </AdaptationSet>
    <AdaptationSet mimeType="audio/mp4" lang="und" segmentAlignment="0">
    <ContentProtection cenc:default_KID="3df2924f-ddb1-76d1-7302-8298f9d2908a" schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"/>
    <ContentProtection cenc:default_KID="3df2924f-ddb1-76d1-7302-8298f9d2908a" schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="2.0">
    <msprro>igIAAAEAAQCAAjwAVwBSAE0ASABFAEEARABFAFIA IA B4AG0 AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAc wAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQA vADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIA GUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADA ALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQ wBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwB LAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUA FIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEk ATgBGAE8APgA8AEsASQBEAD4AVAA1AEwAeQBQAGIASABkADAAW ABaAHoAQQBvAEsAWQArAGQASwBRAGkAZwA9AD0APAAvAEsASQB EAD4APABDAEgARQBDAEsAUwBVAE0APgAyADUAZgAyADYATgBjA EEAdgAyADAAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEE AXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBsAGkAYwBlAG4Ac wBlAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwB sAGkAYwBlAG4AcwBlAE0AYQBuAGEAZwBlAHIALgBkAG8APAAvA EwAQQBfAFUAUgBMAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0 ASABFAEEARABFAFIAPgA=</msprro>
    <cencssh>AAACqnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQA AA oqKAg AAAQABAIACPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4A cwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQ BpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAw ADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAG QAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAA LgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQ BOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZ AEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC 8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYA TwA+ADwASwBJAEQAPgBUADUATAB5AFAAYgBIAGQAMABYAFoAeg BBAG8ASwBZACsAZABLAFEAaQBnAD0APQA8AC8ASwBJAEQAPgA8 AEMASABFAEMASwBTAFUATQA+ADIANQBmADIANgBOAGMAQQB2AD IAMAA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUA UgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAGUAbgBzAGUALg BwAGEAbABsAHkAYwBvAG4ALgBjAG8AbQAvAHIAaQAvAGwAaQBj AGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF 8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUA QQBEAEUAUgA+AA==</cencssh>
    </ContentProtection>
    <ContentProtection cenc:default_KID="3df2924f-ddb1-76d1-7302-8298f9d2908a" schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
    <cencssh>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QA AA EoIAR IQPfKST92xdtFzAoKY+dKQihoMaW5rYWVudHdvcmtzIiIxODQ0 NF8zMTQyNDE3MjA0NzU4NTc4NjBfdmlkZW9fVk9EKgJIRA==</cencssh>
    </ContentProtection>
    <Representation id="5" bandwidth="96000" audioSamplingRate="48000" codecs="mp4a.40.5">
    <BaseURL>314241720475857860_video_VOD_AAC.mp4</BaseURL>
    <SegmentBase indexRange="1529-56720">
    <Initialization range="0-1528"/>
    </SegmentBase>
    <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_c onfiguration:2011" value="2"/>
    </Representation>
    </AdaptationSet>
    </Period>
    </MPD>

    My license server is https://license.pallycon.com/ri/licenseManager.do?mode=getserverinfo

    If someone could help me..how should I proceed with downloading the video.
    Detailed steps would be appreciated.

    Thank you very much
    Can you provide the video link?
    Quote Quote  
  7. Last edited by jackbrain232; 15th Nov 2023 at 03:32.
    Quote Quote  
  8. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Code:
    <Error>
    <Code>MissingKey</Code>
    <Message>
    Missing Key-Pair-Id query parameter or cookie value
    </Message>
    </Error>
    It would appear you are trying to pirate a subscription site. Posting here asking for help in by-passing subscription site's DRM is quite likely to get this thread closed.
    Please go away. And stop sending me PMs.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  9. Last edited by jackbrain232; 15th Nov 2023 at 03:32.
    Quote Quote  
  10. Originally Posted by jackbrain232 View Post
    I am testing the security for my client
    Originally Posted by A_n_g_e_l_a View Post
    Please go away.
    ‎ ‎
    click click2
    If I/my posts ever helped you, and you want to give back, send me a private message!
    Quote Quote  
  11. Member
    Join Date
    Dec 2003
    Location
    United States
    Search Comp PM
    Is the T95 S1 (~$30) the cheapest way to get a CDM with the best compatibility?
    Quote Quote  
  12. I don't think so, no. The T95 comes with a rooted Android installation (and is full of adware), and could therefore be a first class candidate for certificate revocation. But who knows.

    If you spend a little time in searching this forum, you'll find at least three or four different working CDM's, some as part of downloaders, some with ready to install CDM files. As a start: search for "widevine zip". Two I've found are apparently from real Xiaomi devices. You can also look at user @Karoolus signature and follow this links in it.
    Last edited by Obo; 22nd Oct 2023 at 02:38.
    Quote Quote  
  13. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by sofakng View Post
    Is the T95 S1 (~$30) the cheapest way to get a CDM with the best compatibility?
    Forget 'best quality'; go for an emulator first-off and cut your teeth on that, It will cost nothing. Only when you find your emulator's CDM doesn't give what you would like would you need to change it.

    I understand that some sites use L1 protection - a CDM for which us mere mortals do not have.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  14. Member
    Join Date
    Dec 2003
    Location
    United States
    Search Comp PM
    Thanks very much for the help!
    Quote Quote  
  15. Member
    Join Date
    Oct 2023
    Location
    Europe
    Search PM
    I'm trying to download:
    https://plus.rtl.de/video-tv/shows/rtl-wasserspiele-932187/staffel-2-970381/episode-2-folge-2-970383


    I'm using "medvm/widevine_keys" and setting the correct "MPD URL" and "License URL".

    PSSH obtained correctly but after I get:

    license response status: <Response [404]>


    I've also tried with other keys mentioned on this thread but they do not work with mp4decrypt. Only green garbage as output
    Quote Quote  
  16. 404 usually means "Not Found", so you probably did not use the correct urls here.

    This video doesn't need any special setup, it has an x-auth-token header for the license url, and that's probably all you need.
    Quote Quote  
  17. Member
    Join Date
    Oct 2023
    Location
    Europe
    Search PM
    The license is located in:
    https://widevine.tvnow.de/index/license

    And I copy the curl command from Firefox, paste it in curlconverter and use the output to replace headers in headers.py

    headers has an 'x-auth-token' key.
    Quote Quote  
  18. Yes, and that works without any problem here, I got the key 948392bde3a1215677218e569a44f3c9:63706ae3c5025da26 18512965e7fcc6f for your video.

    So if you get a 404 here, there's an error somewhere in your code. But without details on what exactly you do it's quite hard to tell what goes wrong...
    Quote Quote  
  19. Member
    Join Date
    Oct 2023
    Location
    Europe
    Search PM
    Originally Posted by Obo View Post
    Yes, and that works without any problem here, I got the key 948392bde3a1215677218e569a44f3c9:63706ae3c5025da26 18512965e7fcc6f for your video.

    So if you get a 404 here, there's an error somewhere in your code. But without details on what exactly you do it's quite hard to tell what goes wrong...
    Thank you for your help! They key worked flawlessly.

    I'm definitely doing something wrong
    Quote Quote  
  20. looks like –allow-unplayable is now --allow-u. It just returns a list of available formats, and the ids are long strings that seem to be ignored when called, much like 'all' or 'best' or 'bv'. I also dropped -o cause I was receiving an [Fixed output name but more than one file to download] error

    edit: I was wrongly using -F. simply .\yt-dpl --allow-u <mpd> worked
    Last edited by MacCaulay; 29th Oct 2023 at 18:51.
    Quote Quote  
  21. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by MacCaulay View Post
    looks like –allow-unplayable is now --allow-u.
    Thanks for reminding me to edit post #1
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  22. Originally Posted by A_n_g_e_l_a View Post
    Notes on my journey to get a working Content Decryption Module (CDM)

    This post is the first in what has become a series about decrypting internet streamed videos 'Decryption: The Temple of Doom'
    'Decryption: The Dungeon of Despair' and Decryption: The Last Crusade The information herein is not original to me, but culled from experts in this forum and elsewhere, as I have made a journey from a confused and bewildered newbie to being able to download a few videos. I have no experience of getting the stuff behind pay-walls, but the principles of encryption and decryption are much the same everywhere.


    This section is relevant if you have an unlocked physical Android device
    Note if you do not have access to a physical device then a virtual device can also be made to give up its CDM see Dumping-Your-own-L3-CDM-with-Android-Studio" Howver, be aware CDMs released from virtual devices appear to fail on some sites. See https://forum.videohelp.com/threads/407099-Vdocipher-decryption-key-retrieval/page2#post2678869

    Getting Your Own Content Decryption Module from a Rooted Android Device

    I chose a cheap Android TV box T95 S1 2Gb/16Gb at £29.99 from Amazon.

    Download a frida-server from https://github.com/frida/frida/releases

    I had success with frida-server-15.1.17-android-arm.xz - the latest release - although I tried many other releases along the way.

    [Rooted Phone? An edit and aside]
    selecting which Frida-server to use is an issue. You need to know the width of the data registers in your machine, 32 or 64 bit. (More and more later devices are 64 bit) . Also you need to know the instruction set it uses. Both these details are inside the file-names of the Frida-server alternatives from which you will select the correct one.

    Find out which architecture your phone has from here. https://www.devicespecifications.com Lets assume we have a Pixel 4 XL Type your phone name into the search field and OK.

    Image
    [Attachment 72613 - Click to enlarge]


    The results for the Pixel 4 XL show the above from which we can see it is a 64 bit machine and has an ARMv8-A instruction set. We remember 64 and 'arm' . Search Frida-server releases for a server filename containing 64 and 'arm'. to match our example. frida-server-16.1.2-android-arm64.xz is listed. (If the latest release does not show Frida Server click on 'Assets' for an earlier release.
    [/edit and aside]

    adb via USB cable does not work between a PC and the Android TV box; you’ll need to connect over wifi..
    Code:
    adb connect <box-ip-address>
    and accept the link request to the Android box displayed on the T95 screen

    I tried using Frida from Google play store and that is perhaps an easy way to get the server software on the machine but I had problems with it and reverted to hand loading the frida-server and running it from SuperUser.

    Code:
    adb push frida-server-15.1.17-android-arm /sdcard/
    Code:
     adb shell
    move the server so it can be run

    Code:
     mv /sdcard/fridaserver-15.1.17-android-arm /data/local/tmp/
    Starting the frida-server first explicitly become super-user and clear any user environment variables active by including a hyphen after su.
    Code:
     su -
    Give execute program privileges
    Code:
    chmod +x  /data/local/tmp/fridaserver-15.1.17-android-arm
    start the server
    Code:
     /data/local/tmp/fridaserver-15.1.17-android-arm  &
    check its running..
    Code:
     ps | grep frida
    That will give you a process number to kill it with later if you need to.
    Code:
     kill ####
    Dumper – download from https://github.com/wvdumper/dumper and extract.
    To work Dumper needs python modules for:- frida, protobuf and pycryptodome . The Python modules are installed with
    Code:
    python pip install frida protobuf==3.20.3 pycryptodome
    Dumper is a python program to extract the CDM keys; it talks to the frida-server on the Android box. There is much misdirection about which pythons to use. I spent a day setting up a virtual machine and running pythons 3.6 , 3.7 and 3.9 all to no avail.
    The latest python on my daily driver machine 3.10.2 finally worked but it perhaps because of the wrinkles of timing everything right.
    Code:
     python dump-keys.py
    will run the software when ready.

    Prepare android-tv-box; update chrome to the latest version the Play-Store has
    On the TV box start the updated Chrome browser and open https://bitmovin.com/demos/drm; let the page load and then close chrome. Next time Chrome is started it will automatically load this page with widevine protected content.

    I think timing and sequence are important; from memory a few days after getting keys from my CDM
    1. Reboot the android box
    2. reboot your PC and from the PC
    3. adb connect <android-tv-ip>
    4. adb shell
    5. su -
    6. chmod +x /data/local/tmp/frida-server-15.1.17-android-arm
    7. /data/local/tmp/frida-server-15.1.17-android-arm
    8. optional; check running ps | grep frida
    9. on the android tv box start Chrome
    10. and immediately on the Pc start dumper: python dump-keys.py
    11. wait for "hooks completed" to appear on the screen then load the page to play the movie. (Or if the page is already loaded hold 'shift' down while clicking the browser refresh icon)
    Mine then dumped after days of trying. Misdirection read here suggested stopping and starting the playing movie; I think keys are shared from Chrome and the bitmovin site as soon as the page loads. So stopping and starting the movie when playing just wastes everyone's time.

    Decryption


    This section is relevant for both methods of obtaining a CDM

    Ok with keys dumped what do you do with them? A hack!! Find a key generator and replace their CDM with yours!
    Find WKS-KEYS https://files.videohelp.com/u/301890/WKS-KEYS.zip and unpack
    [EDIT September 2023] WKS-KEYS is now updated to protobuf==4.x.x and is compatible with pywidvine being install too. Just keep any python scripts that use the global pywidevine module out of the WKS-KEYS folder. [/EDIT}

    Locate WKS-KEYS/pywidevine/L3/cdm/devices/android-generic/
    Two files to be replaced:- device-client-id-blob and device-private-key.

    Dumper stored the android-tv-box keys in key-dumps/MBOXprivate-keys//xxxx/xxxxxxxx/client-id-bin and private-key-pem these two replace in name and body the ones in WKS-KEYS. The *bin becomes the blob (binary large object)

    Now, in theory you have a working CDM and can generate your own keys. I found an encrypted video to download, located the request headers saved as a cURL and encoded intp python here:- https://curlconverter.com/ . I put them in headers.py in the WKS-KEYS folder. Eventually when I tried to decrypt keys I got an error about the key length being wrong. Some WiseHead wrote in their experience it was because the CDM was not working --- uurgh!!

    So I slept on the problem and realised that the servers we ‘attack’ try to repel us. But bitmovin.com/demos.drm is there to help.

    So I checked my keys were working there;-
    Code:
    https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/mpds/11331.mpd
    this link loaded in a browser will show PSSH keys between <cenc: pssh> html markup and

    Code:
    https://cwip-shaka-proxy.appspot.com/no_auth
    is the license. Edit: 2 Oct 2022 this URL has changed since March and the correct version is above.

    running
    Code:
     python l3.py
    and plugging in the PSSH and licence gave me:-

    Code:
    --key 0294b9599d755de2bbf0fdca3fa5eab7:3bda2f40344c7def614227b9c0f03e26
    --key 639da80cf23b55f3b8cab3f64cfa5df6:229f5f29b643e203004b30c4eaf348f4
    Taadaa!! I nearly fell off my chair

    I downloaded the video:-
    Code:
    yt-dlp –allow-unplayable https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/mpds/11331.mpd
    that gave two files an mp4 video and m4a audio encrypted.

    Decrypted with mp4decryt -from https://www.bento4.com/downloads/
    Code:
    mp4decrypt –key 0294b9599d755de2bbf0fdca3fa5eab7:3bda2f40344c7def614227b9c0f03e26  <infile.mp4>  <outfile.mp4>
    Note: 2 October 2022
    The license url has changed and also when testing I got back 5 keys :

    Image
    [Attachment 67047 - Click to enlarge]



    It is unusual, but RTE.ie gives 5 keys too! If you need to deal with more than one set of keys, just chain them one after the other, as below.
    Code:
    mp4decrypt --key ccbf5fb4c2965be7aa130ffb3ba9fd73:9cc0c92044cb1d69433f5f5839a159df --key 9bf0e9cf0d7b55aeb4b289a63bab8610:90f52fd8ca48717b21d0c2fed7a12ae1 --key eb676abbcb345e96bbcf616630f1a3da:100b6c20940f779a4589152b57d2dacb --key 0294b9599d755de2bbf0fdca3fa5eab7:3bda2f40344c7def614227b9c0f03e26 --key 639da80cf23b55f3b8cab3f64cfa5df6:229f5f29b643e203004b30c4eaf348f4 encrypted_input.mp4 decrypted_output.mp4
    Do the same for the audio file and you then need to combine the audio and video into one playable stream with ffmpeg. It comes installed on my Linux distro.
    Code:
    ffmpeg -i decrypted.mp4 -i decrypted.m4a -vcodec copy -acodec copy your_movie.mp4
    Edit January 2023
    A good alternative to bitmovin.com
    Bitmovin.com has become a bit problematic for first time key-grabbers; it spoofs a license url that returns 'success' in a json packet and the real licence is harder to spot, although it is given above. And additionally you need to deal with 5 keys, 4 of which are useless.

    This Irish site - mainly Gaelic language - is easy for beginners - and is reported as available from Europe and the USA and I expect everywhere.
    So here is the sequence:-
    1. Site URL
      Code:
      https://www.tg4.ie/en/player/online-boxsets/play/?pid=6281115686001&series=An%20Cuan&genre=Faisneis
    2. MPD - describes the media and how to get it.
      Developer Tools (F12 in your browser) select Network tab and enter 'mpd' in the filter box. Then start the video. Copy the url. It will look similar to this, BUT DO NOT USE THIS ONE, get a fresh copy. as it carries a token, which needs to be fresh each use.
      Code:
      https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/bccenc/1555966122001/982ce523-a4b1-4a94-91c6-c7a9a8b082f8/6s/manifest.mpd?fastly_token=NjNlNjNlYzhfN2YyY2QxMGFjMzMzMDY0ZGE2ZjFiYzY3ZDViMzI3YmQxMjM0ZWVhMzgyMjVkNmY1YzE0NzJlNDUwMGUyNTg1NA%3D%3D
    3. PSSH found by inspecting the contents of mpd. Network tab - filter on 'mpd' click on the link and look under 'Response' for a string starting AAAA
      Code:
      AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQ8hNTzeGOTayckD5Lc4sBSBoNd2lkZXZpbmVfdGVzdCIIMTIzNDU2NzgyB2RlZmF1bHQ=
      PSSH remains the same for this media.
    4. License URL - found by filtering on 'lic' in Network tab of Developer Tools carries a token which needs to be fresh each use. It looks similar to this - BUT DO NOT USE THIS ONE, get a fresh copy.
      Code:
      https://manifest.prod.boltdns.net/license/v1/cenc/widevine/1555966122001/982ce523-a4b1-4a94-91c6-c7a9a8b082f8/f21353cd-e18e-4dac-9c90-3e4b738b0148?fastly_token=NjNlNGRjNDhfMzJmMTZhMWVmMmVlYTM1OTdmZTk4NjI0ZTI1M2E5ODYzZTY0NDAyOGEwZTc5MzVhYzkyZDNkZGNmNmY4OWJiNA%3D%3D
    5. Download encrypted files:
      [code]
      Code:
      yt-dlp –allow-unplayable -o myEncryptedvideo.mp4  <your MPD url found at item 2>
    6. Individually decrypt the audio and video streams using mp4decrypt and the keys you have just obtained!
      Code:
      mp4decrypt --key f21353cde18e4dac9c903e4b738b0148:e564eb646db649ea07e85700765d2349  <myEncryptedvideo.mp4>  <myvideo.mp4>
      Code:
      mp4decrypt --key f21353cde18e4dac9c903e4b738b0148:e564eb646db649ea07e85700765d2349  <myEncryptedvideo.m4a>  <myvideo.m4a>
    7. Merge audio and video with ffmpeg
      Code:
      ffmpeg -i myvideo.mp4 -i myvideo.m4a -vcodec copy -acodec copy myWatchableMovie.mp4


    Addendum:
    It seems there is now a Dumper version that with a bit of work from you will get keys for other Androids - all the way up to Android 12 is claimed. They all need to be rooted of course and doing it on your daily driver phone is never a good idea. You will lose L1 on your phone when you root (though Xiaomi possibly not).
    I have not tested these. See https://github.com/Diazole/dumper Direct your questions to the author on this.

    When you have digested the above and got your CDM, tried a few keys, The Dungeon of Despair awaits your pleasure!! And is that isn't enough for you then Downloading-and-Decryption-on-your-Android-Phone might occupy your mind for a while.

    Annex:

    October 2023
    Running python scripts in a special Python environment.

    Python has a problem. After lots of script downloads and installing all the necessary module or extra libraries to make the script run you can arrive at a situation where one script needs a 'pip install mybigmodule==10.2.21' but you have another script on your system that must use mybigmodule<=9.5.0. So if you follow the direction for one script it stops the other from working.

    The solution is to create a named python enviroment in which to run the first script and another named enviroment to run second.


    It is done like this and credit to Sorenb for the write-up:
    create a venv (a virtual environment) on Linux/Macos
    Code:
    python3 -m venv env
    - here the virtual environment is simply called 'env'
    For Windows
    Code:
    py -m venv env
    The the 'env' needs to be activated
    linux/Macos
    Code:
    source env/bin/activate
    Windows
    Code:
    .\env\Scripts\activate
    Now your terminal or command window will show 'env' to remind you that you are using a Python Environment.
    When you close the command window you close the environment. It is still there but next time you need to re-activate with activate command above.

    'venv creates a folder env there it stores all the 'extra' modules you download to run a script. If you no longer want the environment - just delete the 'env' folder.

    Now following the above method you can create as many enviroments as needed to keep each library of scripts safely apart from each other on your system.

    Just remember to start the necessary environment before running your script.

    WKS-KEYS is slowly being replaced in popularity by the use of a pip module 'pywidevine'
    It all works much the same as with WKS-KEYS except you can run your scripts from anywhere. The python commmands to get the pywidevine module to cough-up keys is different but all that is transparent to most users who just want to run scripts.

    Instead of having to run your python scripts in the WKS-KEYS folder and use the path to pywidevine's decryption facilities within, you can now set up a means of using pywidevine from anywhere on your system.

    You do this by first creating a WideVine Descriptor file (wvd) which contains the details of where the device_private_key and the device_client_blob may be found.

    But first activate your python env or create a new one for pywidevine related scripts,

    Install pywidevine. Pywidevine omits to install yaml a needed library so we do that at the same time
    Code:
     pip install pywidevine pyaml
    Then, with your chosen env on command prompt line, navigate to the folder where your key and blob are located.

    First make a folder where the descriptor file can be created
    Code:
     mkdir WVD
    then:-
    Code:
    pywidevine create-device -k device_private_key  -c device_client_id_blob -t ANDROID -l3 -o WVD
    for me it responded
    /home/angela/Programming/WKS-KEYS/pywidevine/L3/cdm/devices/emulator_1/WVD/google_aosp_on_ia_emulator_14.0.0_d6xxxxx4_l3.wvd
    Image
    [Attachment 74182 - Click to enlarge]

    It works the same on linux and Windows

    Now when you wish to run a script that does not use WKS-KEYS you activate the environment pywidevine is installed in and install any scripts plus its required modules. They are functionally separate from anything outside the env(iroment).
    Most scripts that use a wvd file to access your key and blob will need to know its location.

    Mine now looks like this for an emulator key/blob /home/angela/Programming/WKS-KEYS/pywidevine/L3/cdm/devices/emulator_1/WVD/google_aosp_on_ia_emulator_14.0.0_d6ixxxxxx64_l3.w vd

    Now you need an l3.py to use for simple keys
    PHP Code:
    from pywidevine.cdm import Cdm
    from pywidevine
    .device import Device
    from pywidevine
    .pssh import PSSH
    import requests
    #

    headers = {
        
    'Accept''*/*'
    }

    # prepare pssh
    #pssh = PSSH("AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQSOe5B5JcTV2gbw07SycC7xoNd2lkZXZpbmVfdGVzdCIIMTIzNDU2NzgyB2RlZmF1bHQ=")
    pssh input("PSSH? ")
    pssh PSSH(pssh)
    lic_url input("License URL? ")

    # load device
    # for example
    #device = Device.load(r"/home/angela/Programming/WKS-KEYS/pywidevine/L3/cdm/devices/emulator_1/WVD/google_aosp_on_ia_emulator_14.0.0_xxxxxc_4464_l3.wvd")
    device Device.load(r"<enter your path to the wvd file you have created. here>")

    # load cdm
    cdm Cdm.from_device(device)

    # open cdm session
    session_id cdm.open()

    # get license challenge
    challenge cdm.get_license_challenge(session_idpssh)

    # send license challenge (assuming a generic license server SDK with no API front)
    licence requests.post(lic_urlheaders headersdata=challenge)
    licence.raise_for_status()

    # parse license challenge
    cdm.parse_license(session_idlicence.content)

    # print keys
    for key in cdm.get_keys(session_id):
        
    #print(f"[{key.type}] {key.kid.hex}:{key.key.hex()}")
        
    if key.type=='CONTENT':
            print(
    f"\n--key {key.kid.hex}:{key.key.hex()}")
    # close session, disposes of session data
    cdm.close(session_id

    That's all I know!

    Please follow netiquette and ask your questions here in this thread, so all may benefit.

    Some 18 months after posting this my python coding has improved to the extent I can now produce AIO single, series or part-series down-loaders with a site search function.

    https://forum.videohelp.com/threads/411684-ITVX-Revisited
    https://forum.videohelp.com/threads/411591-STV-Revisiting-the-Downloader
    https://forum.videohelp.com/threads/411726-My5-paying-a-visit
    https://forum.videohelp.com/threads/411734-UKTVPlay-Revisited

    this error, looks like y have nothing in the new virtual env? i cant install anything
    (env) C:\Users\xxxx\Desktop\pydewine>pip install pywidevine pyaml
    ERROR: Ignored the following versions that require a different python version: 1.0.0 Requires-Python >=3.7,<3.11; 1.0.1 Requires-Python >=3.7,<3.11; 1.1.0 Requires-Python >=3.7,<3.11; 1.1.1 Requires-Python >=3.7,<3.11; 1.2.0 Requires-Python >=3.7,<3.11; 1.2.1 Requires-Python >=3.7,<3.11; 1.3.0 Requires-Python >=3.7,<3.11; 1.3.1 Requires-Python >=3.7,<3.11; 1.4.0 Requires-Python >=3.7,<3.11; 1.4.1 Requires-Python >=3.7,<3.11; 1.4.2 Requires-Python >=3.7,<3.11; 1.4.3 Requires-Python >=3.7,<3.11; 1.4.4 Requires-Python >=3.7,<3.11; 1.5.0 Requires-Python >=3.7,<3.11; 1.5.1 Requires-Python >=3.7,<3.11; 1.5.2 Requires-Python >=3.7,<3.11; 1.5.3 Requires-Python >=3.7,<3.11; 1.6.0 Requires-Python >=3.7,<3.12
    ERROR: Could not find a version that satisfies the requirement pywidevine (from versions: none)
    ERROR: No matching distribution found for pywidevine

    im using version py .12, looks like i need version 3.7??? thats is strange isnt it? im over windows, and i cant install pywidevine, and anything in virtual

    if i need py 3.7, how can i install in virtual evn?
    thanks
    Last edited by marioeivissa; 31st Oct 2023 at 04:39.
    Quote Quote  
  23. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by marioeivissa View Post

    if i need py 3.7, how can i install in virtual evn?
    thanks
    Was it really necessary to quote the whole of my first post?

    I've no idea about the mess you've got yourself into, only that Python 3.7 is dead. Do not install it.
    Suggest you move to a new folder and create a new env there and start again.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  24. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by marioeivissa View Post

    if i need py 3.7, how can i install in virtual evn?
    thanks
    Was it really necessary to quote the whole of my first post?

    I've no idea about the mess you've got yourself into, only that Python 3.7 is dead. Do not install it.
    Suggest you move to a new folder and create a new env there and start again.
    first of all sorry for quote the whole of your first post, i was wrong,

    second im using python 3.12 not 3.7, and im trying to install pywidevine,to use it instead wks, but i think with 3.12 is not working pywidevine, so i got the answerd of my question, sorry again angela

    any posibility to download python 3.10 or 3.9 and use it without lost all my job with 3.12?

    yes i found this video for this
    https://www.youtube.com/watch?v=ggRsauJcEyE
    Last edited by marioeivissa; 31st Oct 2023 at 06:47.
    Quote Quote  
  25. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by marioeivissa View Post

    second im using python 3.12 not 3.7, and im trying to install pywidevine,to use it instead wks, but i think with 3.12 is not working pywidevine, so i got the answerd of my question, sorry again
    I'm using python 3.11and have no experience of 3.12 but assume python 3.12 will work much the same. Have you followed the last section of Annex of my first post - sort of repated here https://forum.videohelp.com/threads/411509-WKS_KEYS-updated-protobuf-to-version-4#post2705068 ? The version of WKS-KEYS in the link allows protobuf==1.6 and pywidevine==4.x.x to work together.
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  26. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by marioeivissa View Post

    second im using python 3.12 not 3.7, and im trying to install pywidevine,to use it instead wks, but i think with 3.12 is not working pywidevine, so i got the answerd of my question, sorry again
    I'm using python 3.11and have no experience of 3.12 but assume python 3.12 will work much the same. Have you followed the last section of Annex of my first post - sort of repated here https://forum.videohelp.com/threads/411509-WKS_KEYS-updated-protobuf-to-version-4#post2705068 ? The version of WKS-KEYS in the link allows protobuf==1.6 and pywidevine==4.x.x to work together.
    maybe you should mean portobuf == 4.xx and pywidevine==1.6, isnt it?
    the point angela is i cant install module pywidevine in windows, is all i tried tell you from the beginning even using virtual env

    i just trying install pywidevine to use the new sistem of (pywidevine create-device -k “path_your\device_private_key” -c “path_your\device_client_id_blob” -t “CHROME” -l 3) but i cant do this
    Last edited by marioeivissa; 31st Oct 2023 at 08:48.
    Quote Quote  
  27. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by marioeivissa View Post

    i just trying install pywidevine to use the new sistem of (pywidevine create-device -k “path_your\device_private_key” -c “path_your\device_client_id_blob” -t “CHROME” -l 3) but i cant do this
    I think we may have a language barrier. What does "i cant install module pywidevine" mean? Does it mean you do not know how to or Windows is somehow stopping you? What happens when you try? How are you trying? What responses does Windows give?

    python -m pip uninstall pywidevine
    python -m pip install pywidevine==1.6
    Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  28. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by marioeivissa View Post

    i just trying install pywidevine to use the new sistem of (pywidevine create-device -k “path_your\device_private_key” -c “path_your\device_client_id_blob” -t “CHROME” -l 3) but i cant do this
    I think we may have a language barrier. What does "i cant install module pywidevine" mean? Does it mean you do not know how to or Windows is somehow stopping you? What happens when you try? How are you trying? What responses does Windows give?

    python -m pip uninstall pywidevine
    python -m pip install pywidevine==1.6

    this is the error, i had put in the beggining

    (env) C:\Users\xxxx\Desktop\pydewine>pip im install pywidevine==1.6

    ERROR: Ignoré las siguientes versiones que requieren una versión diferente de Python: 1.0.0 Requiere-Python >=3.7,<3.11; 1.0.1 Requiere Python >=3.7,<3.11; 1.1.0 Requiere Python >=3.7,<3.11; 1.1.1 Requiere Python >=3.7,<3.11; 1.2.0 Requiere Python >=3.7,<3.11; 1.2.1 Requiere Python >=3.7,<3.11; 1.3.0 Requiere Python >=3.7,<3.11; 1.3.1 Requiere Python >=3.7,<3.11; 1.4.0 Requiere Python >=3.7,<3.11; 1.4.1 Requiere Python >=3.7,<3.11; 1.4.2 Requiere-Python >=3.7,<3.11; 1.4.3 Requiere Python >=3.7,<3.11; 1.4.4 Requiere Python >=3.7,<3.11; 1.5.0 Requiere Python >=3.7,<3.11; 1.5.1 Requiere Python >=3.7,<3.11; 1.5.2 Requiere Python >=3.7,<3.11; 1.5.3 Requiere Python >=3.7,<3.11; 1.6.0 Requiere-Python >=3.7,<3.12

    ERROR: No se pudo encontrar una versión que satisfaga el requisito pywidevine (de las versiones: ninguna)
    ERROR: No se encontró una distribución coincidente para pywidevine.

    im using in env like you said in the tutto(first post)


    and without env, just normal not virtual


    C:\Users\xxxx\Desktop\WKS-KEYS>python -m pip install pywidevine==1.6
    Defaulting to user installation because normal site-packages is not writeable
    ERROR: Ignored the following versions that require a different python version: 1.0.0 Requires-Python >=3.7,<3.11; 1.0.1 Requires-Python >=3.7,<3.11; 1.1.0 Requires-Python >=3.7,<3.11; 1.1.1 Requires-Python >=3.7,<3.11; 1.2.0 Requires-Python >=3.7,<3.11; 1.2.1 Requires-Python >=3.7,<3.11; 1.3.0 Requires-Python >=3.7,<3.11; 1.3.1 Requires-Python >=3.7,<3.11; 1.4.0 Requires-Python >=3.7,<3.11; 1.4.1 Requires-Python >=3.7,<3.11; 1.4.2 Requires-Python >=3.7,<3.11; 1.4.3 Requires-Python >=3.7,<3.11; 1.4.4 Requires-Python >=3.7,<3.11; 1.5.0 Requires-Python >=3.7,<3.11; 1.5.1 Requires-Python >=3.7,<3.11; 1.5.2 Requires-Python >=3.7,<3.11; 1.5.3 Requires-Python >=3.7,<3.11; 1.6.0 Requires-Python >=3.7,<3.12
    ERROR: Could not find a version that satisfies the requirement pywidevine==1.6 (from versions: none)
    ERROR: No matching distribution found for pywidevine==1.6
    Quote Quote  
  29. maybe should i have python version 3.9? so i have to delete my python 3.12??
    Quote Quote  
  30. yes, this is the solution i found, i just install 3.9 python and i now i could install pywidevine module


    but now.......another problem

    when i do:

    C:\Users\xxxxxxx\Desktop\WKS-KEYS\pywidevine\L3\cdm\devices\android_generic> pywidevine create-device -k device_private_key -c device_client_id_blob -t ANDROID -l3 -o WVD
    "pywidevine" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable.

    so is not install properly?????dont understand
    Last edited by marioeivissa; 31st Oct 2023 at 11:11.
    Quote Quote  



Similar Threads

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