Hi, anybody please help me
I try to download the streaming video: https://xemphimxua.net/phim/doan-tinh-song-tu-tvb-1991/xem-phim.html
I found the MPD file: https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/mpds/11331.mpd
and use FFMPEG to download the audio and video files.
However when I tried to use Developer tool of Google Chrome to find the decryption key, I failed.
Anyone can explain me the solution to find the key? Thanks a million
+ Reply to Thread
Results 1 to 17 of 17
use old version of chrome (86 or above). no work with new version of chrome.
and go to console tab.
Thanks. Besides using that in Chrome, is there anyway to use the winevine decryptor independently, out of Chrome? or is there any other tool?
no winevine but widevine
and no. work only extension+browser -- go on console tab
Last edited by lomero; 16th May 2021 at 02:32.
Last edited by lomero; 14th May 2021 at 02:44.
It doesn't work for me because when you open developer tools it goes into debug mode or something, to prevent you.
Even if you modify the extension to show the key as an alert without opening console, it doesn't work on that specific link.
what mentioned link?
Last edited by lomero; 16th May 2021 at 02:31.
The video works on MS Edge browser when opening the console tab. But it seems that plugin doesn't work on newest Edge browser,not sure to which version need to downgrade (or what modifications to extension need to make for Edge browser)
no, not work on this link.
mine was a generic browser talk.
Last edited by lomero; 16th May 2021 at 02:31.
the player seems to use HYDRAX server which is hard to download from
It is stopping working in some places with the old .dll. In peac.ock it is not reproduced or in disney.
It's not widevine encrypted. I wonder why you found a mpd link from bitmovin...
So the video url is https://xemphimxua.net/phim/doan-tinh-song-tu-tvb-1991/xem-phim.html
When playing the video on chrome (make sure its the actual video but not the ads), press F12 to load devtools. Once it detects devtools/debugger, it triggers "Paused in debugger".
And you can see this function-anonymous-debugger on devtools:
[Attachment 58922 - Click to enlarge]
At this time if you switch to devtools' 'Elements' tab, you can find the src value of that video iframe tag is "https://playhydrax.com/?v=tvweewImr&remove=banner".
However, I failed to download video from this link.
And if you then close devtools, it clears the video iframe and shows 'Vid: tvweewImr' on screen. So we get the vid = "tvweewImr".
Close devtools, refresh the page, play the video, press F12 to load devtools, and we stop on debugger pause again.
On upper right of the 'Sources' tab of devtools, click 'Step out of current function':
[Attachment 58923 - Click to enlarge]
Now we are in the script that calls that debugger pause function, and this script is "https://iamcdn.net/players/playhydrax.min.js"
On left panel part, find and click 'Overrides':
[Attachment 58924 - Click to enlarge]
Then under 'Overrides' tab, click '+ Select folder for overrides' and choose a folder to store files. I just created a folder 'chrome_overrides' on my desktop.
Once you select a folder, go back to the webpage, there will be a warning on the top:
[Attachment 58925 - Click to enlarge]
Start over again. Close devtools, refresh the webpage, play the video, press F12 to load devtools, and the debugger paused again.
This time remember to check 'Enable local overrides' under the 'Overrides' tab.
And click 'Step out of current function':
[Attachment 58926 - Click to enlarge]
[Attachment 58927 - Click to enlarge]
Then you should be able to find it under 'Overrides' tab:
[Attachment 58928 - Click to enlarge]
If you can locate this file on the 'Network' tab, you can also right click it and select 'Save for overrides' there.
Now we have set up to override playhydrax.min.js.
Find the file in the folder where you selected to be the overrides folder. In my case it's 'chrome_overrides\iamcdn.net\players\playhydrax.mi n.js'.
Open it with notepad++, delete everything and copy and pate the content from the attached playhydrax_min_js.zip file and save it. Or simply replace the file.
What I did for the script was to change the code "devtoolsOpen = !0" to "devtoolsOpen = !1" (!0 means true and !1 means false), and comment out some suspicious functions.
Now we should be able to use devtools while watching the video.
Leave devtools open, refresh the webpage.
If you encounter debugger pause, on upper right, find and click 'Resume script execution' (or press F8). You might need to do it several times until the video can be played:
[Attachment 58929 - Click to enlarge]
Also make sure the rightmost pause symbol button is gray, and its hint should say 'Don't pause on exceptions':
[Attachment 58930 - Click to enlarge]
Play the video for a while, on the devtools 'Network' tab you'll see a long bar and it's getting longer and longer:
[Attachment 58931 - Click to enlarge]
Click on it and use mouse scroll to adjust the size of interval:
[Attachment 58932 - Click to enlarge]
(Usually this method does not work on m3u8 and mpd but it works in this case.)
Only couple items left on the left panel, and I finally found brandonyoung.xyz is the one we want.
Click on it and on the right side, check 'Headers' and 'Messages' to see:
On 'Headers', we need to copy down some info:
Request URL: wss://brandonyoung.xyz/ (this is websocket server)
Request Headers -> Origin: https://geoip.redirect-ads.com (without this, the server will not respond)
On 'Messages', you'll see a lot Binary Message receiving from the server:
[Attachment 58933 - Click to enlarge]
Scroll up to the top and find the very first Binary Message that we sent to the server.
Click it and on the bottom you can copy down the message:
First message sent to the server: "tvweewImr_sd"
The message is basically the vid "tvweewImr" plus the video quality "sd".
If you check the second message which is the response from the server: "sd_254620732_65536_sd"
Here "254620732" is the total bytes of the video, and "65536" is the size of one segment.
The rest messages would be first we send the segment starting position to the server.
The server sends back a group of segments to us.
Each message consists of the first couple bytes to be a segment id and the rest to be the video data.
After 8 messages, the server sends a '0' to indicate the transfer is over.
We then need to send new starting position of the next group of segments to the server, and receive segments back from server.
Repeat the process until we have all the segments.
Once we have all the segment messages, remove segment id's, merge segment data together and we get the whole video.
Btw, since we know it's websocket transfer, we can click on 'WS' (WebSockets) right to the filter box to quickly locate it next time:
[Attachment 58934 - Click to enlarge]
The attached file hydrax_wsd.zip is a simple python script to download the video from this websocket server.
If anything is wrong, you'll see weird message cause I'm too lazy to make it better.
And it will NOT work for other websocket transfers since different websocket servers act differently.
It's compiled to windows executable. Download command:
hydrax_wsd -u "wss://brandonyoung.xyz/" -m "tvweewImr_sd" -g "https://geoip.redirect-ads.com"
Note that you will fail to download if you never play the video on the webpage. You can pause the video and then download it but if you close the webpage for too long, you will not be able to download it.
The downloaded file name ends with ".mp4" but it might not be an mp4 file, so please check its MediaInfo and change file name if needed.
W-O-W.... a very great wonderfull explanation. tanxs for share!