# Downloading Widevine content **Specifically from Rakuten TV (live.tv.rakuten.co.jp)** FMI: https://cdm-project.com/How-To/ & https://old.reddit.com/r/Piracy/comments/y30ffr/ ## Setup 1. Install Tampermonkey: https://www.tampermonkey.net/ 2. Install yt-dlp: https://github.com/yt-dlp/yt-dlp#installation 3. Install ffmpeg: https://ffmpeg.org/download.html 4. Download Bento4: https://www.bento4.com/downloads/ 5. Have a proxy/VPN if you're not in Japan since stuff is geolocked ## Getting your decryption key ### Get PSSH 1. Install this userscript: https://greasyfork.org/en/scripts/373903-eme-logger 3. Search browser JS Console for `MediaKeySession::generateRequest`, then press play on the video and look under "Init Data" 4. Get something like `AAAAMnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAXXXXXXXXFtoyTEzFOZDD4T9lmTiI=` ### Get License URL 1. After doing the above, go to your browser developer tools' Network tab and search for `Widevine` 2. Right click > Copy > Copy link address 3. Get something like `https://azcp001.keydelivery.japaneast.media.azure.net/Widevine/?kid=e0c5b68c-9313-314e-6430-f8XXXXXXXX22` ### Get headers 1. Left click on the Widevine entry from the above steps, under the "Headers tab" scroll down to "Request Headers" 2. Copy the following lines & do some manual formatting, get something like: ``` Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9,ja-JP;q=0.8,ja;q=0.7 Authorization: blahblah Cache-Control: no-cache Content-Length: "blahblah" Origin: https://live.tv.rakuten.co.jp Pragma: no-cache Referer: https://live.tv.rakuten.co.jp/ User-Agent: blahblah ``` ### Getting the key 1. Open [https://cdrm-project.com/](https://cdrm-project.com/) 2. Input the results from the previous steps and press "Send" 3. Hopefully see the "SUCCESS" message along with a key that looks like `e0c5b68c93133XXXXXXXX84fd9664e22:499047f36b770957XXXXXXXX9dfc4033` ## Downloading the encrypted files 2. In the developer console Network tab, search for `mpd` 3. Find something that starts with `Manifest`, right click and copy the URL, e.g. `https://azclwds01.akamaized.net/9dc3547a-ede5-4aed-841f-5cXXXXXXXX0f/tXyKyP_tab_hd.ism/Manifest(format=mpd-time-csf,encryption=cenc,filter=pc_hd_001)` 4. Run the Terminal command: `yt-dlp --allow-unplayable [url]` 5. Get two files, an .mp4 and an .m4a ## Decrypting & merging the files 1. In Bento4's `bin/` folder, find the `mp4decrypt` command line utility 3. Navigate to this folder in your Terminal and run `mp4decrypt --key [yourkey] /path/to/corrupted.file /path/to/fixed.file` on both files 4. Run `ffmpeg -i fixedvideo.mp4 -i fixedaudio.m4a -c:v copy -c:a copy output.mp4` 5. The end