Code:[INFO] - [LICENSE URL (BASE)] : mlic.dmm.com [INFO] - [PSSH] : AAAA13Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAALcSEOL6r5wdrDIQqWANdiby/1kiogF7InYiOiIyIiwiZmlkIjoiNTQ3OW5lbGtlcDAwMjYwZHQwNSIsInN2aWQiOiJsYXVuY2hwYWQiLCJwbCI6ImV5SmtaV3hwZG1WeWVWOTBlWEJsSWpveExDSnhkV0ZzYVhSNUlqb3lMQ0owWldVaU9tWmhiSE5sZlEiLCJjcyI6ImIzZTI1N2UxZjdjODE0YTk2ZWQwNmFmODgzYmZhN2NjIn0= [INFO] - [KID:KEY] : e2faaf9c1dac3210a9600d7626f2ff59:6faf9306f0ed441d54104bfa4f5e0ff8 [INFO] - [KID] : e2faaf9c1dac3210a9600d7626f2ff59 [INFO] - [KEY] : 6faf9306f0ed441d54104bfa4f5e0ff8
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 31 to 53 of 53
Thread
-
-
Thank you! andrewzhong
Actually, there is another video similar to this one.
Link:https://tv.dmm.com/vod/playback/?season=5479nelkep00260&content=5479nelkep00260dt04 -
Code:
[INFO] - [PSSH] : AAAA13Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAALcSEHz53WG54DhHpYyBi3wmNnkiogF7InYiOiIyIiwiZmlkIjoiNTQ3OW5lbGtlcDAwMjYwZHQwNCIsInN2aWQiOiJsYXVuY2hwYWQiLCJwbCI6ImV5SmtaV3hwZG1WeWVWOTBlWEJsSWpveExDSnhkV0ZzYVhSNUlqb3lMQ0owWldVaU9tWmhiSE5sZlEiLCJjcyI6ImI3YTQ2YTMzZmQxZGNlOTg5M2RlMmIxOTUxZWVmMDg3In0= [INFO] - [KID:KEY] : 7cf9dd61b9e03847a58c818b7c263679:0dc2d3006d0eae3bbe41442ccf51189b [INFO] - [KID] : 7cf9dd61b9e03847a58c818b7c263679 [INFO] - [KEY] : 0dc2d3006d0eae3bbe41442ccf51189b
-
-
problem resolved - ignore
Last edited by takoyaki; 25th Feb 2023 at 00:31. Reason: problem resolved - ignore
-
Disregard.
I kept tinkering around with the script headers... removed some excess stuff, and stumbled upon a solution. -
Hello,
I'm also trying to decrypt content from tv.dmm.com and I keep getting `400 - Bad request` when trying to get the keys with widevine_keys (I tested with content from tg4.ie as instructed in "Decryption and the temple of doom" and it works with that site).
At first I thought my headers weren't right, but then I tried to use directly the curl command obtained with `Copy as curl` from the network tab of chrome dev tools and I also got that `400 - Bad request` response, so now I'm pretty much stuck without any further ideas. Can someone please point me in the right direction ? -
deleted because the problem has been resolved. thanks.
Last edited by rojer; 25th Mar 2023 at 16:12.
-
-
At first I thought so too, but there are 2 things that make me think that's not the case:
* I was able to watch dmm tv from the emulator (which tells me that not all emulator CDMs are blocked)
* When copying a successful license request as curl from the chrome network devtools panel and executing this curl, the response is also 400, even when the request looks exactly the same (exact same headers and payload) when comparing the two intercepted requests in HttpNetworkTools
I still have one more thing to try, I originally dumped a CDM from an android 9 emulator (so CDM version 14) and I think that emulator wasn't able to play tv.dmm videos, so yesterday evening I dumped a more recent one from an emulator that's able to play them(android 10 CDM version 15) but I haven't had time to test it yet, I'll report back with my findings, and maybe even open a dedicated thread explaining everything I've tried to see if anyone has any idea of what I'm doing wrong. -
@solalparis ok, waiting for your discoveries, but i still don't think this problem caused by Android versions.
-
After giving this problem more thought, I came to the conclusion that the mpd url I was using was unique and it wasn't possible to obtain the license response twice with the same url, so I went back and I took a look at all the network traffic from the opening of the tv.dmm.co.jp video player until the video starts playing.
What I found out is that there's a graphql call that returns a json object containing the stream information, in which you can find several mpd urls (one for each "quality", ie: auto, sd, hd). You need to pick one of those urls, and make a GET request to it, which will return a 302 with the real mpd url, the one that you'll use to obtain the license (url is in the Location header of the 302 response). You can only obtain the license for this url once, after the first successful license request, the license server will return a 400 response for every subsequent license request for this mpd. Once you've obtained the license, you can download and decrypt the video with N_m3u8DL-RE or yt-dlp. -
-
Hello.
Due to my lack of strength, I came back here again.
I keep getting the same error, what could be the reason?
・video
https://www.amazon.co.jp/gp/video/detail/B0BRNYJ2LH/ref=atv_me_wbc_c_oAcjuw_3_3
・MPD
https://aivottjab-a.akamaihd.net/iad-nitro/jab-assets/jab-prod-iad/live/dash/out/v1/de...ng=segmentBase
・PSSH
AAAAY3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEMIARIQuz QUeEMF8vN7qxaBGgca0xoGYW1hem9uIh9rZXktaWQ6dXpRVWVF TUY4dk43cXhhQkdnY2Ewdz09KgJIRDIA
・license
https://atv-ps-fe.amazon.co.jp/cdp/catalog/GetPlaybackResources?deviceID=cc3126e9fcb88...3A%220.0%22%7D
(I've never seen such a long URL...)
・cURL(bash)
[CODE]import requests
・Error message
Code:unable to parse license - check protobufs
Of course, "device_client_id_blob" and "device_private_key" are replaced with reference to the forum below.
https://forum.videohelp.com/threads/404994-Decryption-and-the-Temple-of-Doom
I'm thinking that either the contents of the header are bad or the license URL is wrong
Are there other causes?
There are other videos I want to download on this site, so I want to find out the cause.
Thank you.Last edited by Starxx; 19th Mar 2023 at 07:48.
-
-
-
-
I tried https://cdrm-project.com/ for a while, it did not work with DMM.TV, but then I used the same PSSH, License URL and Headers on https://getwvkeys.cc/ and it worked the very first time
-
Hi Guys, I need help with getting the key for an ABEMA TV past livestream. I followed the instructions on this post
https://forum.videohelp.com/threads/404994-Decryption-and-the-Temple-of-Doom
But I got 400 when getting the license. I can PM you creds if you need it. My script :
from pywidevine.cdm import Cdm
from pywidevine.device import Device
from pywidevine.pssh import PSSH
import httpx
#
headers = XXXXHIDDENXXXX
cookies = httpx.Cookies()
cookies.set("cdn-ab", "XXXXHIDDENXXXX", "abema.tv")
cookies.set("dnt", "0", "abema.tv")
cookies.set("liveEventId", "XXXXHIDDENXXXX", "abema.tv")
# prepare pssh
# pssh = PSSH("AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYI ARIQSOe5B5JcTV2gbw07SycC7xoNd2lkZXZpbmVfdGVzdCIIMT IzNDU2NzgyB2RlZmF1bHQ=")
pssh = "AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABQIARIQQ eH0lZq1SjGpHonz2kpRKA=="
pssh = PSSH(pssh)
lic_url = "https://license.ha.abema.io/playout/widevine?t=Dnr9tYPv5pFobPYtERbSDgn56xoJdjmBQnMyxiY u1kGThf6iXppoeAXa13X711b1qFDaJpRr4CBZVYBjkr5YmKaHY tA8NUvdHUu62EEtcqFpkfAJJA9qoJw6zseWmE&pt=eyJhbGciO iJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcmQucHB2Lm FiZW1hLnR2L3YxIiwic3ViIjoiOVFXdFhkVkRtQ3dzTEIiLCJl eHAiOjE2OTg1ODAxMjMsImlhdCI6MTY5ODQ4MzU2MSwicmVmcm VzaEF0IjoxNjk4NDkwMDIxLCJsaXZlRXZlbnRJRCI6IjczOGNi NTFkLWE1MGQtNDhhNy04MTU0LWVhODM4OThmZjYyYyIsIml0ZW 1JZHMiOlsiYWJtMS5wcHYuaXRlbS5XVFp3UGl6RVA1MlI4dThZ NEhldnFEIl0sIkdyYW50VHlwZSI6MX0.5jmvrm0AGh9fBq1pK3 ECqj5jcFm1AaCSXaPtaaOPpIWMDLdyiY7cRAs6iW2kDvQESK2S WjhRdHxgIOXI9gz2tw"
# 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.w vd")
device = Device.load(
r"./pywidevine/L3/cdm/devices/android_generic/WVD/google_sdk_gphone64_x86_64_16.1.0_a1727d2c_22596_l 3.wvd"
)
# load cdm
cdm = Cdm.from_device(device)
# open cdm session
session_id = cdm.open()
# get license challenge
challenge = cdm.get_license_challenge(session_id, pssh)
client = httpx.Client(http2=True)
# send license challenge (assuming a generic license server SDK with no API front)
licence = client.post(lic_url, headers=headers, data=challenge, cookies=cookies)
licence.raise_for_status()
# parse license challenge
cdm.parse_license(session_id, licence.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)
Similar Threads
-
How to download some HLS and save to local hard drive using streamlink?
By zydjohn in forum Newbie / General discussionsReplies: 2Last Post: 10th Feb 2022, 02:09 -
How to save videos from Pluto TV/Chrome cache
By xonathan in forum Video Streaming DownloadingReplies: 12Last Post: 4th Oct 2021, 06:28 -
YouTube videos dose not save on archive.org?
By RJ1002 in forum Newbie / General discussionsReplies: 0Last Post: 24th Mar 2021, 13:09 -
How to save videos from eurosport?
By jeromima in forum Video Streaming DownloadingReplies: 3Last Post: 6th Jan 2020, 13:25 -
Help..How do I save or download the videos from this site
By messageryan in forum Video Streaming DownloadingReplies: 2Last Post: 24th Dec 2017, 20:23