Comments (22)
Open Terminal and enter:
git clone https://github.com/selsta/hlsdl
cd hlsdl
make
./hlsdl [url]
from hlsdl.
The fact is, when YOU are the one who builds the files/cipher, you got the clear aes key, no matter the tools you use to do that (bento4, usp, an encoder embedding a packager...). To qualify such a workflow, a tool to decipher the files you just have ciphered, is very useful.
The "force DRM detection option" does not make sense in a public loop where files are delivered on a CDN. You have to use DRM/protected software modules that check you have the right to view the content and the clear key will anyway never be exposed, even if you indeed do have the rights to watch the content : you will never have access to the deciphered content, that would allow you to share it etc., it is the role of a DRM to prevent it.
from hlsdl.
Try xcode-select --install
first
from hlsdl.
Yes, it’s possible to use this on macOS. Do you know how to compile programs in general?
from hlsdl.
No. As I said I'm not an expert lol. But as long as it is possible, I will do some research and try figure it out. Unless you can assist me?
from hlsdl.
Am I supposed to type something after "make" because when I do that it says:
xcrun: error: invalid active developer path (/Applications/Xcode.app/Contents/Developer), missing xcrun at: /Applications/Xcode.app/Contents/Developer/usr/bin/xcrun
from hlsdl.
Terminal says:
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
from hlsdl.
from hlsdl.
Thanks! Working now.
from hlsdl.
@selsta Tried your instruction to compile it on the mac, I get this error :
src/aes_openssl.c:1:10: fatal error: 'openssl/conf.h' file not found #include <openssl/conf.h> ^~~~~~~~~~~~~~~~
from hlsdl.
@pducharme Install brew.sh then brew install openssl
from hlsdl.
@selsta thanks, it worked.
Now, my issue/questions :
- How can I find the .m3u8 URL from a website (i.e. tout.tv)
- How to handle DRM'ed SAMPLE AES ? If it can be played by a browser, there should be a way to pass the decryption Key to hlsdl ? if so, how to find such a decryption key? should be a way to download it from the server.
This is the details on how work SAMPLE-AES :
SAMPLE-AES It encrypts each individual media sample (e.g., video, audio, etc.) by its own with AES. The specific encryption and packaging depends on the media format, e.g., H.264, AAC, etc. SAMPLE-AES allows fine grained encryption modes, e.g., just encrypt I frames, just encrypt 1 out of 10 samples, etc. This could decrease the complexity of the decryption process. Several advantages result out of this approach as fewer CPU cycles are needed and for example mobile devices need less power consumption, higher resolutions can be effectively decrypted, etc.
from hlsdl.
SAMPLE AES + DRM isn’t supported with hlsdl and software that decrypts that doesn’t exist publicly.
If it can be played by a browser, there should be a way to pass the decryption Key to hlsdl ?
No, it’s not that simple :/
from hlsdl.
I thought there were some patches to improve this, a few days ago. Am I mistaken?
from hlsdl.
Do you mean this? d1fb34f
This forcefully ignores the DRM detection, the resulting file will be broken. I don’t know how @ngaullier is using this.
from hlsdl.
@selsta yes, I mean #44. I thought it had to do with sample-aes support but probably I read the notes wrong, then.
You have to use DRM/protected software modules that check you have the right to view the content and the clear key will anyway never be exposed
OK but if Firefox is able to play a M3U8 flow and the only input it gets is the M3U8 URL, it means that the browser is able to read and decrypt the data. So there must be some process with which the browser gets authenticated.
It's DRM, nasty, bad, ugly, but not magic. There has to be a way to record a stream which is publicly available on a website.
from hlsdl.
Firefox ships with a DRM binary blob (Widevine Content Decryption Module
), it allows you to watch it but not download it. That's the point of DRM.
from hlsdl.
Then effectively the Widevine binary blob is decrypting the content. It seems we would need to reverse the binary and figure out what it does and how, probably starting from where it retrieves the key from.
Quite hard but technically not impossible.
from hlsdl.
Quite hard is an understatement. See https://en.wikipedia.org/wiki/Trusted_execution_environment, which is required for L1 (HD) content. One security researcher managed to crack L3, but that’s not released publicly.
https://www.zdnet.com/article/security-researcher-cracks-googles-widevine-drm-l3-only/
from hlsdl.
Yeah, I read the news at the time. What I don't get is why the module cannot be used as a black box.
At one point the video stream is going to be sent to the display and the audio is going to be sent at the sound card.
There has to be a way to perform automatic instrumentation, maybe on a dedicated X display, asking the Widevine binary module to play a stream and then record the video and audio in this "virtual" X session.
from hlsdl.
@3o33emalle you either have to be in the same directory as the hlsdl binary or you have to install it in a directory that is inside your PATH.
What exactly did you do?
from hlsdl.
What you posted only compiles the program, but it does not install it.
If you do make install
after make
it will install it into /usr/local/bin
.
from hlsdl.
Related Issues (20)
- How to get "skd://***" key? HOT 1
- NAL size after decryption is grater than before HOT 1
- Can't Choose 0 as option for audio HOT 3
- -bash: ./hlsdl: is a directory
- HLS stream is DRM protected HOT 1
- A more detailed step by step instulation giude HOT 1
- [Feature] Mirror mode
- Failed to Decrypt HOT 1
- failed http_code[400] HOT 3
- File output options HOT 1
- Problem recording the Audi of a live stream
- How to change output file name so I can download multiple videos at the same time? example please HOT 1
- missing DLL errors at the very last command in hlsdl/msvc/BUID_WINDOWS.txt guide HOT 2
- Error compile HOT 1
- Warning: Unknown segment type! AAC file HOT 3
- Getting Pieces But Downloading Everything*Pieces
- Add an option to read url from file
- Exit on "Fail to update playlist"
- help HOT 1
- Help with static build for Linux
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hlsdl.