Audio/video stream recording forums (http://stream-recorder.com/forum/index.php)
-   Video stream recording (http://stream-recorder.com/forum/forumdisplay.php?f=4)
-   -  

I downloaded NF videos in HD, I can play off line,need a little help W/.key file

(http://stream-recorder.com/forum/showthread.php?t=16825)

BlueCop 09-06-2014 05:10 PM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
when I have the tweak installed it limits me to lower quality streams with netflix 6.0. It won't even play anything in HD. It will only download the higher qualities with the tweak disabled. they use the com.apple.streamingkeydelivery though.

I can save the same content over and over with version 6 and it produces a different crypt0.key each time. The video file(always named -_2) and m3u8 are always identical. The m3u8 offsets are correct too. Universal Video Downloader also doesn't download a separate audio file with netflix version 6.

I just tried on Netflix version 4 and I am unable to decrypt those downloads either. Universal Video Downloader does download a seperate audio file with version 4. it is unencrypted.
The video file UVD downloads is identical from version 4 and version 6. They always seems to have different keys.

The different crypt0.key each time makes me think that Universal Video Downloader isn't extracting/grabbing the key correctly with version 6 or version 4 for me.

What iOS version, Devices, and UVD version are you guys successful with? It seems to me we should be able to grab the correct AES key from memory by modifying Universal Video Downloader.

I have tried on iphone 5s ios 7.1.2 , ipad 3 ios 7.1.2, and iphone 4 7.0.4. all with the default UVD from cydia.

I know the video player is getting the correct key because the content is being played. It has to be a bug in how it retrieves the key.

krystallinity 09-06-2014 06:54 PM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
Quote:

Originally Posted by BlueCop (Post 70306)
when I have the tweak installed it limits me to lower quality streams with netflix 6.0. It won't even play anything in HD. It will only download the higher qualities with the tweak disabled. they use the com.apple.streamingkeydelivery though.

I can save the same content over and over with version 6 and it produces a different crypt0.key each time. The video file(always named -_2) and m3u8 are always identical. The m3u8 offsets are correct too. Universal Video Downloader also doesn't download a separate audio file with netflix version 6.

I just tried on Netflix version 4 and I am unable to decrypt those downloads either. Universal Video Downloader does download a seperate audio file with version 4. it is unencrypted.
The video file UVD downloads is identical from version 4 and version 6. They always seems to have different keys.

The different crypt0.key each time makes me think that Universal Video Downloader isn't extracting/grabbing the key correctly with version 6 or version 4 for me.

What iOS version, Devices, and UVD version are you guys successful with? It seems to me we should be able to grab the correct AES key from memory by modifying Universal Video Downloader.

I have tried on iphone 5s ios 7.1.2 , ipad 3 ios 7.1.2, and iphone 4 7.0.4. all with the default UVD from cydia.

I know the video player is getting the correct key because the content is being played. It has to be a bug in how it retrieves the key.


I'm using iOS 7.1.0 with an iPhone 5, UVD 1.1.1 and Cydia...

With Netflix 4.0 I get 720x480 files and a crypt0.key that successfully decrypts the files.



EDIT:

I installed Netflix 6.0 + tweak through SSH and it's giving me the same problem as here:

Quote:

Originally Posted by BlueCop (Post 70306)
when I have the tweak installed it limits me to lower quality streams with netflix 6.0. It won't even play anything in HD. It will only download the higher qualities with the tweak disabled. they use the com.apple.streamingkeydelivery though.

It downloads the higher qualities with the tweak disabled...but no crypt0.key.

But when you enable the tweak it only gives you lower quality videos.

BlueCop 09-06-2014 09:42 PM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
I downgraded my iphone 4 to iOS 5.1.1 just to do some tests. I wanted to try iOS 6 but my shsh blobs had bad ap tickets from cydia.

Unfortunately iOS 5 will not run netflix 6 because it requires iOS 6.

The files won't decrypt from Netflix 4 on iOS 5.1.1. It seems to be the same behaviors as 7.1.2 for me.

How are you guys getting valid keys? UVD hasn't worked for single time to get a valid key for me.

You guys currently have this working with netflix 4? The same content will download the exact same file. The key is always incorrect though.

BlueCop 09-06-2014 11:27 PM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
I was finally successful in getting the correct keys. I was able to decrypt all my tests.

They put dynamic protection on the internal media key server. It was randomly faking key responses when any check failed. That has to be defeated for UVD to save the correct key.

ItsAngel 09-07-2014 02:02 AM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
Quote:

Originally Posted by krystallinity (Post 70305)
You can get it here:

https://thefilebay.com/14bS/


For me, sub-HD downloads through Netflix 4.0 are working, but the equivalent HD downloads through Netflix 6.0 + the tweak are not.

By not working I mean that the downloads aren't giving me any crypt0.key, and for the video .m3u8 I have this:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=ISO-23001-7,
URI="f10niQg0DsZqw5uIro8MDucooPo=",
KEYFORMAT="com.apple.streamingkeydelivery",
KEYFORMATVERSIONS="1"
#EXT-X-MAP:URI="http://23.246.6.145/?o=AQGST62xhTHsk1jsUJHdtSI4ryVV4kye3ZFYFbTgvJKrhw3 SkDEAulihIXOeFm662b7G4n4UiY0e4_ElClKi6g9te9cfl2m6k 2FKRT8dtMS5SlhYArKXZV4Z1BVEKWdaBRxgHbg&v=3&e=14100 65726&t=2-KEygddY3nVRFovfQcFObAptDg",
BYTERANGE="2067@0"
#EXT-X-PROGRAM-DATE-TIME:2014-09-06T16:55:25.000-04:00


...instead of the equivalent "crypt0.key" and "#EXT-X-KEY:METHOD=AES-128"

I installed the tweak through adding it to a repository + Cydia.

I'm just stuck at why HD stopped downloading with the crypt0.key and started with the streamkey. When enrud made the tweak to allow HD downloads through crypt0.key method.. I hope we can just adjust the tweak and get it working and hope netflix has stopped supporting HD files in the crypt0.key format because they got tipped off by our methods detailed here on this forum. Thanks for the IPA by the way!


Quote:

Originally Posted by BlueCop (Post 70313)
I was finally successful in getting the correct keys. I was able to decrypt all my tests.

They put dynamic protection on the internal media key server. It was randomly faking key responses when any check failed. That has to be defeated for UVD to save the correct key.

How did you accomplish this, I just had an old netflix version installed on my phone old netflix IPAs download the right keys then I'd just transfer them to the HD file.

BlueCop 09-07-2014 07:50 AM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
The netflix API returns dynamic responses. They can change the way the app functions by changing configurations returned to the app. They can change it to add dynamic checks whenever they want. They are probably intentionally filtering those high qualities.

UVD downloading is also really obvious to their servers. It doesn't attempt to replicate a real client. It has its own User Agent. It is apparent to netflix when you download any video with it.

Just a FYI. One can get Netflix 4.3.1 from the app store on iOS 5.1.1. I would speculate that the only reason that version is still supported is the iPad 1 being stuck on iOS 5.

BTW I bypassed the media server checks by playing around in cycript inside the Netflix process. I am attempting to see if I can enable higher qualities.

Here is a little hint for you.
Quote:

[{"requestType":"Key","validationStrategy":[{"operator":"AND","conditions":[{"conditionType":"HeaderSessionIdPresence","operat or":"AND"},{"conditionType":"HeaderUserAgentPresen ce","operator":"OR"}]}],"responseStrategy":"RandomlyFakeResponse"}]
so it checks for header session id and user agent on crypt0.key. The "RandomlyFakeResponse" explains the behavior I observed.

BlueCop 09-07-2014 10:45 AM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
Does anyone know a way to extract the encrypted offsets from the cenc encrypted mp4 files?

The offsets are available in the headers in some binary form. I am looking into parsing directly from the file rather then m3u8.

ItsAngel 09-07-2014 10:55 AM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
Quote:

Originally Posted by BlueCop (Post 70324)
The netflix API returns dynamic responses. They can change the way the app functions by changing configurations returned to the app. They can change it to add dynamic checks whenever they want. They are probably intentionally filtering those high qualities.

UVD downloading is also really obvious to their servers. It doesn't attempt to replicate a real client. It has its own User Agent. It is apparent to netflix when you download any video with it.

Just a FYI. One can get Netflix 4.3.1 from the app store on iOS 5.1.1. I would speculate that the only reason that version is still supported is the iPad 1 being stuck on iOS 5.

BTW I bypassed the media server checks by playing around in cycript inside the Netflix process. I am attempting to see if I can enable higher qualities.

Here is a little hint for you.

so it checks for header session id and user agent on crypt0.key. The "RandomlyFakeResponse" explains the behavior I observed.

Woah, I didn't know UVD made it obvious, also I have no experience with Cycript but I'll do some googling, I'm sure Netflix is filtering these, I'm almost 100% someone on Netflixs end has read this thread and reported back. That's why they are now filtering things. Hopefully with your experience with app coding and such you can come to some conclusion

Quote:

Originally Posted by BlueCop (Post 70329)
Does anyone know a way to extract the encrypted offsets from the cenc encrypted mp4 files?

The offsets are available in the headers in some binary form. I am looking into parsing directly from the file rather then m3u8.

And what do you mean by this? I thought netflix didn't deliver in a MP4 container but in TS

BlueCop 09-07-2014 11:12 AM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
CENC is mp4. CENC (Common Encryption) is used on the DASH netflix streams. CENC enables them to distribute a single file with encrypted parts using one key. It allows them to use different DRM schemes to distribute that same key in different ways.

There is a lot of unencrypted data in the MP4 describing the encrypted parts. It also includes a KID(Key ID) so one can identify which key it was encrypted with.

I am looking for libraries to parse the mp4 into its boxes so I can try to interpret more of the information inside. Sometimes the actual content AES key is encrypted inside one of these mp4 boxes.

BlueCop 09-07-2014 11:42 AM

Re: I downloaded Netflix videos in HD, I can play off line,need a little help W/.key


 
One can still get playready keys for non-HD content. I am still unsure how to enable higher qualities.

I would make a tweak but I don't really know how. I haven't done that before. You can modify it while running with cycript though.

Code:

cycript -p Netflix
Code:

choose(BuiltinConfig)[0]->_mediaServerValidationPolicy = null
will null the media server validation and allow UVD to get the correct key. This with the tweak to disable DashFairplayStreams from this thread allows UVD to function on the current Netflix version. It will only allow the SD streams though.

You can also grab the correct key from memory like this
Code:

choose(NetflixPlaybackSession)[0]->playReadyKey_
actually the current version of UVD and Netflix won't save the audio stream actually.


All times are GMT -6. The time now is 10:27 AM.