VideoHelp Forum




+ Reply to Thread
Page 1 of 2
1 2 LastLast
Results 1 to 30 of 32
  1. Looking for some help downloading videos from Bally Sports; this is a regional sports network, so video is accessible based on your location and your TV package (DirecTV, Comcast, etc).
    There is no mpd, mp4, or m3u8, and only a "manifest.json".
    There is an init.m4i that seems to be related, as well as separate m4v and m4a segment files; Example:
    https://dvr-d-02-ballysports.akamaized.net/Content/DASH/LLCU/cad06f26-3f83-4cb1-aa89-f...eam_9/init.m4i
    https://dvr-d-02-ballysports.akamaized.net/Content/DASH/LLCU/cad06f26-3f83-4cb1-aa89-f...8330984573.m4v
    https://dvr-d-02-ballysports.akamaized.net/Content/DASH/LLCU/cad06f26-3f83-4cb1-aa89-f...8054064573.m4a
    (Video appears to be Stream 9, and Audio on Stream 10).
    This particular video will probably be removed in the next few days, but any help so as to be able to do this in the future would be appreciated.
    Quote Quote  
  2. The MPD is there, it comes down just before the init.

    The url is obfuscated, it's not obvious that it's an MPD response.
    Quote Quote  
  3. Need URL&Access.
    Quote Quote  
  4. Originally Posted by darkw4v3 View Post
    The MPD is there, it comes down just before the init.

    The url is obfuscated, it's not obvious that it's an MPD response.
    Thank you; yes I tried a number of variations on the links that were shown in Firefox/Chrome inspection, but most resulted in Error 400 bad request for URL.
    I did however, try this: https://dvr-d-02-ballysports.akamaized.net/Content/DASH/LLCU/cad06f26-3f83-4cb1-aa89-f...2/manifest.mpd
    which resulted in "is protected by DRM" via Streamlink.

    So clearly a decryption issue; my assumption was I could download it, then decrypt it, but thats not the case?
    Quote Quote  
  5. Its clearly NOT the case YOU can, no. You haven't got a clue how to do this and have done zero searching and reading back.

    If you do as LZAA has asked and post url and access (or PM it) then maybe you might get somewhere.
    Quote Quote  
  6. Member
    Join Date
    May 2022
    Location
    Chile
    Search PM
    with yt-dlp you can download the encrypted video (if it is), to decrypt it is another story and you must read the forum as the friend above says.
    Quote Quote  
  7. yt-dlp would not download this file, but I was able to successfully download it via Nm3u8DL-CLI and some help via DM. I am researching on the decryption as time will allow, although its a lot to dig through as methods are constantly becoming outdated.
    As I expected, the video in question is already gone from the server, so Im more attempting to learn how to do this for future reference now. Here is a similar video from their site thats still active:
    https://www.ballysports.com/watch/live/atlanta-braves-at-seattle-mariners
    As far as access, the only login I have is not mine to give out, so I cannot post that here. Most anyone with a US-based TV subscription should be able to access this though.
    Quote Quote  
  8. I updated my app to recognize bally (simple matter of url inspection), and didn't have any trouble pulling down a a regional game.

    Not sure why you're having issues.

    However, the MPD I'm seeing - the host is similar, but the path is very different, and does not include "mpd" in the path.
    Last edited by darkw4v3; 14th Sep 2022 at 18:06. Reason: Hit enter too soon
    Quote Quote  
  9. Apologies for bumping an old thread here, but I've also been trying to download and decrypt from the Bally Sports site in recent days as test to see if it's viable for my use case - live sports is the only thing I still subscribe to pay TV for and I'd like to go Internet only and instead subscribe to Bally Sports Plus which has all local teams streaming rights in my market to save some money. Being able to download game broadcasts from their portal (which only stay available for about 48 hours would be ideal.)

    I have been able to download encrypted video and audio files using N_m3u8DL-RE and the link generated by The Stream Doctor plugin, but I've been struggling with getting decryption figured out.

    Image
    [Attachment 71795 - Click to enlarge]


    Image
    [Attachment 71801 - Click to enlarge]


    Thanks to cedric8528's sticky thread, I worked through setting up an Android Studio instance on my computer and generating keys, and I have downloaded the WKS-Key package and placed the generated key files in the pywidevine/L3/cdm/devices/android_generic folder, but running through the l3.py script is where I'm having trouble.

    Image
    [Attachment 71796 - Click to enlarge]


    Going through the Developer Tools in the browser, I find this, which I think is what I need to get the cURL info on.

    Image
    [Attachment 71797 - Click to enlarge]


    I put that into curlconverter.com and copy the headers info from there into to headers.py file.

    Image
    [Attachment 71798 - Click to enlarge]


    I also see that the license server appears to be running through lic.drmtoday.com

    Image
    [Attachment 71799 - Click to enlarge]


    I have no doubt that I'm doing stuff incorrectly here, but I'm having trouble figuring out what exactly while running through A_n_g_e_l_a's great decryption stickied threads. It also appears that the CDM-Project site may have had more detailed walkthroughs/guides but it seems to have gone offline or at least gone private. I'm hoping somebody smarter than me might be able to get me pointed in the right direction. I believe I am not doing things correctly to get the PSSH value, and probably using an incorrect value for the license server as well - most likely not finding the correct things to get those values from in Developer Tools.

    Image
    [Attachment 71800 - Click to enlarge]


    Thanks in advance for any guidance and sorry for being a pest.
    Quote Quote  
  10. There is a strong possibility that your pssh is incorrect
    Quote Quote  
  11. 'Perhaps you meant ...'
    Quote Quote  
  12. Apologies for the delay - I've had some personal issues to deal with the last few weeks. Thanks jack_666 and LZAA for the feedback. Using your suggestions, I circled back to this today and noticed N_m3u8DL-RE literally gives me the PSSH in the output when it's running (n00b mistake there). I also entered the full URL address in the script prompt.

    Running the l3.py script, I am now getting the following:

    Image
    [Attachment 72337 - Click to enlarge]


    Searching for the "unable to parse license - check protobufs" response, it seems like I might be specifying an incorrect license server URL? Am I on the right track? If so, what would be the right way to find the correct server URL? That's the only URL I am seeing searching for "license" in Developer Tools.

    Image
    [Attachment 72338 - Click to enlarge]
    Quote Quote  
  13. Search, Learn, Download! Karoolus's Avatar
    Join Date
    Oct 2022
    Location
    Belgium
    Search Comp PM
    Originally Posted by axemanozh View Post
    Apologies for the delay - I've had some personal issues to deal with the last few weeks. Thanks jack_666 and LZAA for the feedback. Using your suggestions, I circled back to this today and noticed N_m3u8DL-RE literally gives me the PSSH in the output when it's running (n00b mistake there). I also entered the full URL address in the script prompt.

    Running the l3.py script, I am now getting the following:

    Image
    [Attachment 72337 - Click to enlarge]


    Searching for the "unable to parse license - check protobufs" response, it seems like I might be specifying an incorrect license server URL? Am I on the right track? If so, what would be the right way to find the correct server URL? That's the only URL I am seeing searching for "license" in Developer Tools.

    Image
    [Attachment 72338 - Click to enlarge]
    What version of protobuf do you have installed?

    Every site that uses DRMToday that i've encountered so far, needs a token in the headers, did you check that?
    Quote Quote  
  14. The 'PSSH' value is absolutely wrong. And before and now.
    Quote Quote  
  15. Code:
    https://linear.stvacdn.spectrum.com/LIVE/1101/dash/cenc/FHDSWNA_14414/manifest.mpd?decryption_key=b2a4eb1f01c572369a2a8200034a2a81
    Bally Sports South West
    Quote Quote  
  16. Originally Posted by axemanozh View Post
    Running the l3.py script, I am now getting the following:

    Image
    [Attachment 72337 - Click to enlarge]
    totally wrong.
    first: pssh start ALWAYS with AA or AAA
    your pssh CAES ... is base64 encrypted. need to be convert. it's from amz? this service uses pssh as yours

    share here your pssh. and someone will convert it for you

    second: when have you lic.drmtoday append ALWAYS ?specConform=true to the end
    Quote Quote  
  17. Thanks LZAA and lomero. Obviously I'm pretty dumb as to what I'm doing but I'm trying to learn. Appreciate the help.

    How would I go about converting the PSSH value?

    Here is the PSSH value I've gotten on the latest video I'm experimenting with.

    Code:
    CAESEMCEB9jd2zD9vFMG+0sAn7AaCGNhc3RsYWJzIkxleUpoYzNObGRFbGtJam9pVWtWUVRFRlpMVFZqTXpBNVpUWXdMVGxoWlRFdE5ETmhPQzFoTVdaaUxUY3lPR1JrTXpKbU5ESmhaU0o5MgdkZWZhdWx0
    Quote Quote  
  18. Here is the PSSH value I've gotten on the latest video I'm experimenting with.
    Code:
    CAESEMCEB9jd2zD9vFMG+0sAn7AaCGNhc3RsYWJzIkxleUpoYzNObGRFbGtJam9pVWtWUVRFRlpMVFZqTXpBNVpUWXdMVGxoWlRFdE5ETmhPQzFoTVdaaUxUY3lPR1JrTXpKbU5ESmhaU0o5MgdkZWZhdWx0
    That code is a valid pssh.


    Widevine Pssh
    {
    "algorithm":"AESCTR",
    "keyIds":["wIQH2N3bMP28Uwb7SwCfsA=="],
    "provider":"castlabs",
    "contentId":"ZXlKaGMzTmxkRWxrSWpvaVVrVlFURUZaTFRWa k16QTVaVFl3TFRsaFpURXRORE5oT0Mx
    aE1XWmlMVGN5T0dSa016Sm1OREpoWlNKOQ==",
    "policy":"default"
    }
    Quote Quote  
  19. Thanks for the continued help. I feel like I'm getting close but I'm not quite there yet.

    With another test (like I said videos disappear from the site every 48 hours so I have limited working time), I have this as my latest PSSH.

    Code:
    CAESEH2RH2s0JjpWrHdmlCWMEIgaCGNhc3RsYWJzIkxleUpoYzNObGRFbGtJam9pVWtWUVRFRlpMV1k0TUROallUQmpMVFZsWWpndE5EWmpOUzFoWlRReUxUZG1ZV0ppWlRJMFpqUXdPU0o5MgdkZWZhdWx0
    Running that through the axinom pssh generator as suggested by lomero, I get this as the output.

    Image
    [Attachment 72680 - Click to enlarge]


    Code:
    AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQfZEfazQmOlasd2aUJYwQiBoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2lVa1ZRVEVGWkxXWTRNRE5qWVRCakxUVmxZamd0TkRaak5TMWhaVFF5TFRkbVlXSmlaVEkwWmpRd09TSjkyB2RlZmF1bHQ=
    Running that PSSH through the l3.py script, I get the protobuf error as before. Going off Karoolus' post which I overlooked previously, I checked my protobuf version which is 3.19.0. I believe I had to have that version for some reason when I was generating decryption keys in Android Studio per cedric8528's sticky.

    Image
    [Attachment 72681 - Click to enlarge]


    I also tried running this through keysdb.net to see what I got there; I got this response:

    Code:
    {"code":400,"error":true,"message":"Failed to get license: 412 Invalid OptData"}
    Image
    [Attachment 72682 - Click to enlarge]


    I feel like I'm probably missing something silly, but I'm not sure what. Karoolus mentioned needing a token in the headers for drmtoday. Could that be it? If so, how would I go about doing that?

    I really appreciate everyone's continued help.


    EDIT: The header info I generated from the cURL from the license info in network tools did seem to include a token, so not sure whether or not I'm doing that correctly.

    Image
    [Attachment 72683 - Click to enlarge]

    Image
    [Attachment 72684 - Click to enlarge]
    Last edited by axemanozh; 25th Jul 2023 at 20:53.
    Quote Quote  
  20. yes, you need to add that "x-dt-auth-token" as a header in the license request.
    if youre doing it with keysdb.net, add it in the headers field on a new line after the user-agent in this format:
    Code:
    x-dt-auth-token: eyJh.......
    you might need to get a fresh token
    Quote Quote  
  21. Wow, success with your suggestion - thanks ElCap!

    Image
    [Attachment 72688 - Click to enlarge]


    I'm not sure what I'm doing wrong with the WKS-Key l3.py script but now let's see if I can get the video decrypted with mp4decrypt.
    Quote Quote  
  22. Member piaohua's Avatar
    Join Date
    May 2023
    Location
    中国
    Search PM
    Originally Posted by axemanozh View Post
    Wow, success with your suggestion - thanks ElCap!

    Image
    [Attachment 72688 - Click to enlarge]


    I'm not sure what I'm doing wrong with the WKS-Key l3.py script but now let's see if I can get the video decrypted with mp4decrypt.
    headers.py also needs to add the appropriate headers.
    Quote Quote  
  23. Originally Posted by piaohua View Post
    Originally Posted by axemanozh View Post
    Wow, success with your suggestion - thanks ElCap!

    Image
    [Attachment 72688 - Click to enlarge]


    I'm not sure what I'm doing wrong with the WKS-Key l3.py script but now let's see if I can get the video decrypted with mp4decrypt.
    headers.py also needs to add the appropriate headers.
    Thanks, piaohua. I thought I had done that but I will double check when I get home from work tonight. Also will be trying to decrypt the files with the keys I got from keysdb.net. I really appreciate everyone's help; it has been cool to learn how to do this.
    Last edited by axemanozh; 26th Jul 2023 at 19:49.
    Quote Quote  
  24. As an update for anyone who might care; the files decrypted perfectly using this command:

    Code:
    mp4decrypt.exe --key 7d911f6b34263a56ac776694258c1088:f4b9cf3c14e68c573466a08f6d85d8c7 test.mp4 test1.mp4
    I used MKVToolNix to mux the mp4 and m4a files together into an MKV as I am not great on the command line with FFmpeg. It plays perfectly after doing so.

    For shits and giggles, I tried running the l3.py script again and am still getting an error.

    Image
    [Attachment 72698 - Click to enlarge]


    Not sure if this is because my headers.py files is incorrect, as piaohua speculated.

    Image
    [Attachment 72699 - Click to enlarge]


    I suppose it may not matter if getting my keys via keysdb.net works, as it looks like I don't need my own CDM with that method.
    Quote Quote  
  25. Originally Posted by axemanozh View Post
    As an update for anyone who might care; the files decrypted perfectly using this command:

    Code:
    mp4decrypt.exe --key 7d911f6b34263a56ac776694258c1088:f4b9cf3c14e68c573466a08f6d85d8c7 test.mp4 test1.mp4
    I used MKVToolNix to mux the mp4 and m4a files together into an MKV as I am not great on the command line with FFmpeg. It plays perfectly after doing so.

    I suppose it may not matter if getting my keys via keysdb.net works, as it looks like I don't need my own CDM with that method.
    good to hear that it worked but similar to cdrm-project, keysdb could go down at any time, so having a working local script would be a good backup.

    Originally Posted by axemanozh View Post
    For shits and giggles, I tried running the l3.py script again and am still getting an error.

    Image
    [Attachment 72698 - Click to enlarge]


    Not sure if this is because my headers.py files is incorrect, as piaohua speculated.

    Image
    [Attachment 72699 - Click to enlarge]
    have you tried removing all the headers except for user-agent and x-dt-auth-token from the headers.py file?
    ie.
    Code:
    headers = {
        "user-agent": "chrome.......",
        "x-dt-auth-token": "eyJh......"
    }
    Quote Quote  
  26. Search, Learn, Download! Karoolus's Avatar
    Join Date
    Oct 2022
    Location
    Belgium
    Search Comp PM
    This script works for DRMToday and has an L3 CDM already in there.

    Enter PSSH and Token and it'll spit out the keys

    https://files.videohelp.com/u/303646/DRMToday.zip


    This can obviously also be adapted to be used for other websites as well, just change the headers and license URL in the script
    Quote Quote  
  27. Originally Posted by ElCap View Post
    Originally Posted by axemanozh View Post
    As an update for anyone who might care; the files decrypted perfectly using this command:

    Code:
    mp4decrypt.exe --key 7d911f6b34263a56ac776694258c1088:f4b9cf3c14e68c573466a08f6d85d8c7 test.mp4 test1.mp4
    I used MKVToolNix to mux the mp4 and m4a files together into an MKV as I am not great on the command line with FFmpeg. It plays perfectly after doing so.

    I suppose it may not matter if getting my keys via keysdb.net works, as it looks like I don't need my own CDM with that method.
    good to hear that it worked but similar to cdrm-project, keysdb could go down at any time, so having a working local script would be a good backup.

    Originally Posted by axemanozh View Post
    For shits and giggles, I tried running the l3.py script again and am still getting an error.

    Image
    [Attachment 72698 - Click to enlarge]


    Not sure if this is because my headers.py files is incorrect, as piaohua speculated.

    Image
    [Attachment 72699 - Click to enlarge]
    have you tried removing all the headers except for user-agent and x-dt-auth-token from the headers.py file?
    ie.
    Code:
    headers = {
        "user-agent": "chrome.......",
        "x-dt-auth-token": "eyJh......"
    }

    Circling back to this again after a little bit of time: Yes, shortening my headers file to just I've put into keydb.net works.

    Code:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0',
        'x-dt-auth-token': 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlM2UwNTMyNi1iNTgxLTRiMTQtOWY0MS1iM2JiNzc0ZTY4YzAiLCJpYXQiOjE2OTEzMzE4MTcsIm9wdERhdGEiOiJ7XCJ1c2VySWRcIjpcImIwNjIyZmQ4YmVmMTM4YWMyNWE2YjBkMGQ4YjY3YzQyOTRkNmYyMmVcIixcIm1lcmNoYW50XCI6XCJiYWxseXNwb3J0c1wiLFwic2Vzc2lvbklkXCI6XCJBMTE1RDQyQi0xNzRGLTI5MDQtMTk0QS1GMkVCMjUwRjVBNjhcIn0iLCJjcnQiOiJbe1wiYXNzZXRJZFwiOlwiUkVQTEFZLWI0NzA2YzIwLWNkOWUtNDE3Zi05MGE4LTZiNTg3ZWM0Zjc2NlwiLFwicmVmXCI6XCI5Y2I5Y2VjNS05Y2EyLTQ4ZGEtYWI5ZC03OWU4MGIzNDQzYTFcIn1dIn0.KrHGWMq20MvfDVNRQpAdJW2FWYPlnoG1Ri2n5fmqYr2MFbLMsW0K_VXR2-9_M4uQjspilZSTwJOiYnFVP2O3og',
    }
    Image
    [Attachment 72943 - Click to enlarge]


    As you say, I'm sure that these key sites are wont to go offline at any time, so having a personal CDM at your disposal is certainly preferable.

    Mostly, I just wanted to come back to take the time to thank everyone again for all of the help here. As the saying goes; give a man a fish and he eats for a day. Teach a man to fish and he eats for life.
    Quote Quote  
  28. Last edited by InternetPeon; 30th Oct 2023 at 16:30.
    Quote Quote  



Similar Threads

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